Zookeeper là gì

Kafka là 1 trong tự ngữ tương đối phổ biến trong số đông các lĩnh vực nghề thuộc lĩnh vực công nghiệp ngày này. Hầu như mọi đơn vị hàng đầu bên trên quả đât hồ hết vẫn áp dụng kafka vào căn nguyên cơ sở hạ tầng của mình. Nhưng câu hỏi đặt ra nó là gì với sức ảnh hưởng của nó ra sao?

Kafka là gì?

Kafka là gốc rễ streaming phân tán, hoàn toàn có thể mở rộng cùng là thành phầm mã mối cung cấp mlàm việc. Dự án Kafka ban đầu được cải cách và phát triển vày Linkedin tiếp nối trở nên dự án công trình Apabịt mã mối cung cấp msinh sống vào khoảng thời gian 2011. Kafka được viết bằng ngôn ngữ Scala cùng Java. Nó được viết ra nhằm mục đích mục đích hỗ trợ một căn nguyên mà lại có độ trễ phải chăng cùng thông lượng cao mang đến bài toán xử trí những mối cung cấp cung cấp tài liệu theo thời gian thực.

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

Kafka chuyển động như thế nào?

Kafka được tạo ra dựa trên quy mô publish/subcribe, tương tự nlỗi bất kỳ khối hệ thống message làm sao khác. Các ứng dụng (đóng vai trò là producer) gửi những messages (records) cho tới một node kafka (broker) với bảo rằng phần đa messages này sẽ tiến hành cách xử trí vày các áp dụng không giống call là consumers. Các messages được gửi trao kafka node sẽ tiến hành lưu trữ vào một nơi Hotline là topic với sau đó consumer hoàn toàn có thể subcribe tới topic kia với lắng tai hầu như messages này. Messages rất có thể là bất cứ biết tin gì nhỏng giá trị cảm ứng, hành vi người tiêu dùng,…

*

Topic có thể được coi như như thể thương hiệu của một danh mục mà lại các messages sẽ tiến hành lưu trữ cùng được đẩy vào.

Partition

Topics trong kafka hoàn toàn có thể có kích cỡ rất lớn, điều đó không nên tàng trữ tất cả dữ liệu của một topic bên trên một node, dữ liệu đề xuất đươc phân loại ra thành những partition để giúp bảo toàn dữ liệu cũng tương tự cách xử lý tài liệu dễ dãi rộng. Partitions chất nhận được chúng ta thực hiện subcribe song tuy vậy tới một topic rõ ràng bằng cách phân loại tài liệu trong một topic ví dụ ra mang đến những broker khác nhau (kafka node), mỗi partition hoàn toàn có thể được để trên một thứ riêng biệt – chất nhận được nhiều consumer đọc dữ liệu xuất phát điểm từ một topic ra mắt một bí quyết tuy nhiên tuy nhiên.

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

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

*

Tất cả những hành vi ghi cùng đọc tới một topic đang hầu như đề nghị đi qua partition leader khớp ứng với leader vẫn phối kết hợp nhằm cập nhật dữ liệu mới tới các replica parition không giống. Nếu leader bị hỏng, một trong những replica partition đã phụ trách mục đích là một trong leader bắt đầu.

*

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

Kafka tàng trữ những thông tin như vậy là metadata trong một hình thức gọi là Zookeeper.

Cấu trúc tài liệu log vào Kafka

Chìa khóa thiết yếu mang tới tài năng mở rộng cùng năng suất của kafka đó là log. Thông thường các developer Khi mới 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“, bởi vì chúng ta thường hiểu “log” chính là thuật nghữ được áp dụng trong log ứng dụng. Tuy nhiên, đều gì mình sẽ nói tại chỗ này, là cấu trúc tài liệu log. Log là một trong kết cấu dữ liệu có thiết bị trường đoản cú đồng điệu cơ mà chỉ cung ứng dạng nối thêm (append). quý khách hàng cần thiết sửa đổi tuyệt xóa các records từ bỏ nó. Nó được hiểu tự trái sang trọng nên với được bảo đảm an toàn máy tự các sản phẩm.

*

Một nguồn tài liệu sẽ ghi message vào log cùng một hoặc những consumer không giống sẽ hiểu message trường đoản cú log tại thời khắc bọn họ chọn lọc.

Mỗi entry vào log được định danh vị một con số gọi là offset, hay nói một cách dễ dàng nắm bắt rộng, offmix hệt như chỉ số tuần từ bỏ vào một array vậy.

Vì chuỗi/offset chỉ hoàn toàn có thể được bảo trì trên từng node/broker rõ ràng và thiết yếu được duy trì đối với toàn cục cluster, cho nên vì thế Kafka chỉ bảo đảm an toàn bố trí vật dụng trường đoản cú tài liệu cho từng partition.

Xem thêm: Đấu Vật Mỹ ( Wwe Là Gì : Giấc Mơ Đô Vật Mỹ Trong Căn Phòng Nhỏ

Parsistence data vào Kafa

Kafka lưu trữ toàn bộ message vào disk (không còn lưu giữ trên RAM) cùng được thu xếp gồm đồ vật tự trong cấu trúc log có thể chấp nhận được kafka tận dụng tối đa buổi tối đa năng lực đọc và ghi lên disk một biện pháp tuần từ bỏ.

Nó là 1 giải pháp sàng lọc khá phổ biến để lưu trữ tài liệu bên trên disk mà lại vẫn rất có thể sử dụng về tối đa hóa tính năng, có một số trong những lý do chủ yếu bên dưới đây:

Kafka phụ thuộc không ít vào pagecađậy của hệ điều hành mang lại vấn đề lưu trữ dữ liệu, sử dụng RAM trên thiết bị một giải pháp tác dụng.Kafka lưu trữ những messages dưới định dạng nhị phân xuyên thấu quy trình (producer > broker > consumer), khiến cho nó có thể tận dụng buổi tối ưu hóa kĩ năng zero-copy. Nghĩa là lúc hệ quản lý điều hành copy tài liệu từ pagecabít trực tiếp sang trọng socket, trọn vẹn bỏ lỡ ứng dụng trung gian là kafka.Đọc/ghi tài liệu tuyến đường tính bên trên disk nkhô cứng. Vấn đề tạo nên disk chậm rì rì bây giờ thường xuyên là vì quy trình search kiếm bên trên disk các lần. Kafka đọc với ghi bên trên disk tuyến đường tính, do đó nó hoàn toàn có thể tận dụng buổi tối nhiều hóa năng suất bên trên disk.

Consumer với Consumer Group

Consumer đọc những messages từ ngẫu nhiên partition làm sao, cho phép bạn không ngừng mở rộng lượng message được áp dụng tương tự như như biện pháp những producer cung cấp message.

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

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

Để dễ dàng nắm bắt rộng, chúng ta liếc qua hình ảnh bên dưới đây

*

Trong tấm hình làm việc trên, Server 1 giữ lại partition 0 với 3 cùng hệ thống 2 duy trì các partition 1 cùng 2. Chúng ta có 2 consumer groups là A và B. Group A có 2 consumer cùng group B có 4 consumer. Consumer group A gồm 2 consumer, vậy bắt buộc từng consumer đang đọc message từ 2 partition.Trong consumer group B, con số consumer bằng số partition cần mỗi consumer đã hiểu message từ một partition.

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

Ví dụ: nếu Kafka được thông số kỹ thuật để giữ lại các messages lâu dài trong một ngày và consumer bị down lâu hơn một ngày, lúc ấy consumer vẫn mất message. Tuy nhiên, nếu consumer chỉ bị down trong tầm 1 giờ đồng hồ, lúc ấy nó trọn vẹn có thể bước đầu đọc lại message từ offset mới nhất.

Vai trò của Zookeeper

Zookeeper đóng vai trò là khu vực tàng trữ dữ 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 nhanh khô tuy vậy ghi lừ đừ. Kafka sử dụng Zookeeper để triển khai câu hỏi bầu chọn leader của Kafka broker và topic partition. Zookeeper cũng được thiết kế theo phong cách mang đến tài năng Chịu đựng lỗi cao, vì thế Kafka phụ thuộc vào không hề ít vào Zookeeper.

Nó cũng khá được áp dụng nhằm tàng trữ tất cả metadata nhỏng là:

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

Producer và consumer ko can dự thẳng cùng với Zookeeper để tìm hiểu leader của partition tốt đông đảo metadata không giống, chũm vào kia bọn chúng vẫn truy vấn metadata cho tới Kafka broker – kế tiếp Kafka can hệ cùng với Zookeeper cùng gửi phản hồi metadata về lại cho chúng.

Xem thêm: Ca Sĩ Nhí Của "Vietnam Idol Kids" Gia Khiêm Bao Nhiêu Tuổi, Idol Nhí Gia Khiêm Đã Biết

Kết luận

Kafka vẫn lập cập đổi thay trụ cột chính của con đường ống dữ liệu đối với bất kỳ tổ chức triển khai làm sao. Kafka chất nhận được các bạn có một lượng béo các messages đi qua một phương tiện tập trung cùng tàng trữ bọn chúng cơ mà không nhất thiết phải lo ngại gì về hầu hết vụ việc nlỗi năng suất tốt mất mát tài liệu. Kafka rất có thể là nguyên tố trung trung ương vào mô hình phong cách xây dựng phía sự kiện (event-driven) cùng có thể chấp nhận được bạn phân tách giữa ứng dụng này cùng với ứng dụng không giống.


Chuyên mục: ĐỜI SỐNG