ZOOKEEPER LÀ GÌ

Kafka là 1 trong những từ bỏ ngữ khá phổ biến vào số đông những nghành nghề dịch vụ nghề trực thuộc lĩnh vực công nghiệp thời buổi này. Đa số đều cửa hàng số 1 bên trên thế giới đều đã sử dụng kafka vào nền tảng gốc rễ hạ tầng của chính bản thân mình. Nhưng câu hỏi đưa ra nó là gì và sức ảnh hưởng của chính nó ra sao?

Kafka là gì?

Kafka là căn nguyên streaming phân tán, có thể mở rộng với là thành phầm mã nguồn msinh sống. Dự án Kafka lúc đầu được cải cách và phát triển bởi vì Linkedin tiếp nối trở thành dự án Apabít mã nguồn mngơi nghỉ vào thời điểm năm 2011. Kafka được viết bởi ngôn ngữ Scala và Java. Nó được viết ra nhằm mục đích cung ứng một nền tảng gốc rễ mà tất cả độ trễ tốt và thông lượng cao đến câu hỏi giải pháp xử lý các nguồn cung cấp dữ liệu theo thời gian thực.

Bạn đang xem: Zookeeper là gì

Quý khách hàng đã xem: Zookeeper là gì

Kafka vận động như thế nào?

Kafka được kiến thiết dựa vào quy mô publish/subcribe, tựa như nhỏng bất kỳ hệ thống message như thế nào khác. Các ứng dụng (vào vai trò là producer) gửi các messages (records) cho tới một node kafka (broker) với nói rằng đông đảo messages này sẽ được xử trí bởi các vận dụng khác Gọi là consumers. Các messages được gửi tặng kafka node sẽ tiến hành tàng trữ vào một địa điểm Hotline là topic cùng tiếp đến consumer rất có thể subcribe cho tới topic kia cùng lắng tai đầy đủ messages này. Messages rất có thể là bất kể báo cáo gì như cực hiếm cảm ứng, hành động người dùng,…


*

Topic hoàn toàn có thể được coi như như thể thương hiệu của một hạng mục nhưng những messages sẽ được tàng trữ và được đẩy vào.

Partition

Topics trong kafka rất có thể tất cả size không hề nhỏ, những điều đó không nên lưu trữ toàn bộ dữ liệu của một topic bên trên một node, tài liệu đề nghị đươc phân chia ra thành những partition để giúp đỡ bảo toàn tài liệu cũng như xử lý tài liệu dễ dãi hơn. Partitions chất nhận được họ triển khai subcribe tuy nhiên tuy vậy tới một topic rõ ràng bằng phương pháp phân chia dữ liệu vào một topic ví dụ ra đến những broker không giống nhau (kafka node), mỗi partition có thể được để lên trên một đồ vật hiếm hoi – chất nhận được những consumer phát âm tài liệu xuất phát từ một topic diễn ra một phương pháp tuy vậy tuy vậy.

Để tăng tính khả dụng (availability) của partition, mỗi partition cũng có thể có quý giá replicas của riêng rẽ nó. Để dễ dàng nắm bắt hơn về kafka, bản thân đã trình bày bởi ví dụ với 3 node/broker.

Bây giờ đồng hồ, một topic sẽ tiến hành chia nhỏ ra thành 3 partitions và mỗi broker sẽ có một phiên bản copy của partition. Trong số hầu như bạn dạng copy partition này, sẽ có được một phiên bản copy được thai chọn có tác dụng leader, trong khi đa số bạn dạng copy khác chỉ triển khai đồng hóa dữ liệu cùng với partition leader.


*

Tất cả các hành vi ghi và hiểu cho tới một topic đã đông đảo đề nghị đi qua partition leader tương ứng và leader vẫn phối kết hợp để cập nhật dữ liệu mới cho tới những replica parition không giống. Nếu leader bị lỗi, một trong những replica partition vẫn đảm nhiệm phương châm là một trong những leader mới.


*

Để một producer/consumer ghi/đọc message xuất phát từ 1 partition, chắc chắn là bọn chúng cần phải biết leader là ai buộc phải không? tin tức này rất cần được gồm sẵn ở một địa điểm như thế nào kia.

Kafka tàng trữ đa số đọc tin những điều đó là metadata vào một hình thức Gọi là Zookeeper.

Cấu trúc dữ liệu log trong Kafka

Chìa khóa thiết yếu dẫn đến kĩ năng mở rộng cùng công suất của kafka chính là log. Thường thì những developer Khi bắt đầu tiếp cận kafka Cảm Xúc tương đối rối lúc lần trước tiên biết đến “log“, chính vì chúng ta thường hiểu “log” đó là thuật nghữ được sử dụng trong log áp dụng. Tuy nhiên, phần đa gì mình vẫn nói ở chỗ này, là cấu trúc tài liệu log. Log là một trong những cấu tạo tài liệu có thứ từ bỏ đồng hóa cơ mà chỉ cung ứng dạng nối thêm (append). Quý Khách bắt buộc chỉnh sửa giỏi xóa các records tự nó. Nó được gọi tự trái thanh lịch phải và được bảo đảm an toàn lắp thêm từ bỏ các tòa tháp.


*

Một nguồn dữ liệu đang ghi message vào log với một hoặc những consumer khác vẫn phát âm message tự log trên thời điểm họ gạn lọc.

Mỗi entry trong log được định danh do một số lượng Điện thoại tư vấn là offphối, tốt nói một giải pháp dễ dàng nắm bắt rộng, offmix hệt như chỉ số tuần trường đoản cú trong một array vậy.

Xem thêm: Up Ảnh Lên Facebook Bị Mờ Giảm Chất Lượng, Cách Up Ảnh Lên Fb Không Bị Giảm Chất Lượng

Parsistence data trong Kafa

Kafka tàng trữ tất cả message vào disk (không hề lưu giữ trên RAM) và được sắp xếp tất cả sản phẩm từ bỏ vào cấu tạo log có thể chấp nhận được kafka tận dụng tối đa về tối đa khả năng gọi và ghi lên disk một bí quyết tuần tự.

Nó là một trong những biện pháp sàng lọc khá phổ cập để tàng trữ tài liệu trên disk nhưng vẫn rất có thể áp dụng về tối đa hóa tính năng, có một số trong những nguyên do bao gồm dưới đây:

Kafka phụ thuộc không ít vào pagecađậy của hệ quản lý và điều hành cho bài toán lưu trữ dữ liệu, thực hiện RAM bên trên sản phẩm một cách tác dụng.Kafka tàng trữ những messages bên dưới định dạng nhị phân xuyên thấu quá trình (producer > broker > consumer), khiến cho nó có thể tận dụng tối đa tối ưu hóa kỹ năng zero-copy. Nghĩa là lúc hệ điều hành quản lý copy dữ liệu từ pagecabít thẳng thanh lịch socket, trọn vẹn làm lơ áp dụng trung gian là kafka.Đọc/ghi tài liệu con đường tính trên disk nhanh khô. Vấn đề khiến cho disk đủng đỉnh hiện giờ hay là vì quá trình kiếm tìm kiếm trên disk những lần. Kafka gọi và ghi trên disk tuyến tính, vì vậy nó có thể tận dụng tối đa buổi tối nhiều hóa công suất bên trên disk.

Consumer và Consumer Group

Consumer hiểu những messages từ bỏ ngẫu nhiên partition nào, cho phép các bạn không ngừng mở rộng lượng message được thực hiện tương tự nlỗi bí quyết những producer cung ứng message.

Consumer cũng rất được tổ chức triển khai thành các consumer groups cho một topic cụ thể – từng consumer phía bên trong group đọc message xuất phát điểm từ một partition tốt nhất, nhằm rời việc tất cả 2 consumer cùng cách xử lý gọi cùng một message gấp đôi với cục bộ group giải pháp xử lý toàn bộ các message trường đoản cú toàn bộ topic.

Nếu các bạn tất cả số consumer > số partition, lúc đó một trong những consumer đang làm việc chính sách thảnh thơi bởi vì chúng không có partition như thế nào nhằm xử lý.Nếu bạn bao gồm số partition > số consumer, lúc đó consumer vẫn nhận các message từ khá nhiều partition. Nếu bạn có số consumer = số partition, mỗi consumer đã gọi message theo sản phẩm công nghệ từ từ là một partition.

Để dễ hiểu rộng, chúng ta liếc qua hình hình họa dưới đây


*

Trong tấm hình sinh hoạt bên trên, Server 1 giữ partition 0 và 3 cùng VPS 2 duy trì các partition 1 với 2. Chúng ta có 2 consumer groups là A cùng B. Group A bao gồm 2 consumer và group B gồm 4 consumer. Consumer group A gồm 2 consumer, vậy bắt buộc mỗi consumer vẫn đọc message từ bỏ 2 partition.Trong consumer group B, con số consumer thông qua số partition đề nghị từng consumer đang phát âm message từ 1 partition.

Kafka tuân theo những luật lệ được hỗ trợ vày broker và consumer. Nghĩa là kafka không áp theo dõi các record được phát âm do consumer cùng cho nên lừng khừng gì về hành động của consumer. Việc gìn giữ những messages trong một khoảng thời gian được cấu hình trước với nó tùy thuộc vào consumer, để kiểm soát và điều chỉnh thời hạn thế nào cho phù hợp. Bản thân consumer đang dò hỏi xem Kafa tất cả message làm sao mới hay không cùng đến Kafka biết phần lớn record làm sao chúng ao ước hiểu. Điều này cho phép chúng tăng/sút offmix cơ mà consumer hy vọng, do đó nó rất có thể phát âm lại những message đã có được đọc rồi với tái giải pháp xử lý các sự khiếu nại vào ngôi trường đúng theo chạm mặt sự vắt.

Ví dụ: trường hợp Kafka được thông số kỹ thuật để giữ lại những messages mãi mãi trong một ngày với consumer bị down dài lâu 1 ngày, khi ấy consumer đang mất message. Tuy nhiên, trường hợp consumer chỉ bị down trong vòng 1 tiếng đồng hồ, khi ấy nó hoàn toàn rất có thể bước đầu hiểu lại message trường đoản cú offset tiên tiến nhất.

Vai trò của Zookeeper

Zookeeper nhập vai trò là địa điểm tàng trữ tài liệu phân tán dạng key-value. Nó được về tối ưu hóa mang đến tác vụ hiểu nkhô giòn mà lại ghi chậm chạp. Kafka sử dụng Zookeeper nhằm triển khai việc bầu lựa chọn leader của Kafka broker cùng topic partition. Zookeeper cũng được thiết kế với đến tài năng Chịu đựng lỗi cao, cho nên vì thế Kafka dựa vào không hề ít vào Zookeeper.

Nó cũng được áp dụng để tàng trữ toàn bộ metadata như là:

Offset cho từng partition của consumer groupACL (Access control list) – được áp dụng mang lại bài toán số lượng giới hạn truy cập/ủy quyềnQuota của consumer/producer – con số message buổi tối đa từng giâyPartition Leader cùng tâm lý của chúng

Producer và consumer ko cửa hàng thẳng với Zookeeper để biết leader của partition giỏi gần như metadata không giống, vậy vào đó chúng đã truy vấn metadata cho tới Kafka broker – tiếp nối Kafka can dự với Zookeeper với gửi bình luận metadata về lại cho việc đó.

Kết luận

Kafka đang mau lẹ trở thành trụ cột chính của con đường ống tài liệu đối với bất kỳ tổ chức như thế nào. Kafka chất nhận được chúng ta gồm một lượng bự các messages đi qua một phương tiện tập trung và lưu trữ bọn chúng mà không cần thiết phải băn khoăn lo lắng gì về phần nhiều sự việc nhỏng công suất xuất xắc mất đuối dữ liệu. Kafka rất có thể là nhân tố trung trung ương trong mô hình phong cách xây dựng hướng sự khiếu nại (event-driven) và chất nhận được chúng ta phân tách bóc thân vận dụng này với áp dụng không giống.