ZOOKEEPER LÀ GÌ

  -  

Kafka là một trong từ ngữ tương đối phổ biến vào phần đông những nghành nghề nghề ở trong lĩnh vực công nghiệp thời buổi này. Hầu như hầu như đơn vị hàng đầu trên nhân loại mọi đang sử dụng kafka vào nền tảng gốc rễ cơ sở hạ tầng của bản thân. Nhưng câu hỏi đưa ra nó là gì với sức tác độ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 mnghỉ ngơi. Dự án Kafka ban sơ được trở nên tân tiến do Linkedin tiếp đến vươn lên là dự án Apache mã mối cung cấp mnghỉ ngơi vào khoảng thời gian 2011. Kafka được viết bằng ngôn ngữ Scala và Java. Nó được viết ra nhằm mục đích mục đích cung ứng một gốc rễ nhưng mà có độ trễ rẻ với thông lượng cao mang đến bài toán cách xử lý các mối cung cấp cấp cho dữ liệu theo thời gian thực.

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

Kafka hoạt động như vậy nào?

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

*

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

Partition

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

Để tăng tính khả dụng (availability) của partition, từng partition cũng có thể có cực 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 tiếng, một topic sẽ tiến hành chia nhỏ ra thành 3 partitions với mỗi broker sẽ có một bạn dạng copy của partition. Trong số gần như bản copy partition này, sẽ có được một phiên bản copy được bầu lựa chọn làm leader, trong những lúc đầy đủ phiên bản copy không giống chỉ triển khai nhất quán tài liệu cùng với partition leader.

*

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

*

Để một producer/consumer ghi/hiểu message từ 1 partition, chắc chắn là bọn chúng nên biết leader là ai phải không? Thông tin này cần phải bao gồm sẵn ở 1 vị trí làm sao kia.

Kafka tàng trữ rất nhiều thông báo điều đó là metadata vào một dịch vụ Điện thoại tư vấn là Zookeeper.

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

Chìa khóa chủ yếu mang tới tài năng không ngừng mở rộng và năng suất của kafka chính là log. Thường thì các developer khi bắt đầu tiếp cận kafka cảm thấy hơi rối khi lần thứ nhất nghe đến “log“, cũng chính vì bọn họ hay đọc “log” chính là thuật nghữ được sử dụng vào log áp dụng. Tuy nhiên, đầy đủ gì bản thân đang nói ở đây, là cấu trúc tài liệu log. Log là một cấu tạo tài liệu gồm thiết bị trường đoản cú đồng nhất mà chỉ cung ứng dạng nối thêm (append). quý khách hàng không thể sửa đổi xuất xắc xóa những records từ bỏ nó. Nó được phát âm trường đoản cú trái sang cần với được đảm bảo an toàn thứ tự các vật phẩm.

*

Một nguồn dữ liệu sẽ ghi message vào log với một hoặc nhiều consumer không giống sẽ đọc message từ log trên thời gian chúng ta chọn lựa.

Mỗi entry vào log được định danh bởi một số lượng gọi là offphối, tốt nói một biện pháp dễ dàng nắm bắt hơn, offset y hệt như chỉ số tuần tự trong một array vậy.

Vì chuỗi/offmix chỉ có thể được duy trì bên trên từng node/broker ví dụ và bắt buộc được bảo trì so với cục bộ cluster, cho nên Kafka chỉ đảm bảo bố trí vật dụng từ dữ liệu cho mỗi partition.

Xem thêm:

Parsistence data trong Kafa

Kafka tàng trữ toàn bộ message vào disk (không hề giữ trên RAM) và được bố trí gồm vật dụng từ vào kết cấu log có thể chấp nhận được kafka tận dụng buổi tối nhiều kỹ năng phát âm với ghi lên disk một bí quyết tuần từ.

Nó là 1 giải pháp lựa chọn tương đối thông dụng nhằm lưu trữ tài liệu bên trên disk nhưng vẫn rất có thể thực hiện về tối nhiều hóa tính năng, gồm một số trong những nguyên nhân chính bên dưới đây:

Kafka nhờ vào khá nhiều vào pagecađậy của hệ điều hành quản lý cho câu hỏi tàng trữ dữ liệu, áp dụng RAM bên trên thiết bị một phương pháp hiệu quả.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ó rất có thể tận dụng tối đa tối ưu hóa năng lực zero-copy. Nghĩa là khi hệ điều hành và quản lý copy dữ liệu từ bỏ pagecache thẳng sang trọng socket, hoàn toàn bỏ lỡ ứng dụng trung gian là kafka.Đọc/ghi dữ liệu tuyến tính trên disk nhanh. Vấn đề khiến cho disk lờ lững hiện giờ thường xuyên là do quá trình tìm kiếm tìm trên disk nhiều lần. Kafka phát âm và ghi trên disk tuyến đường tính, do đó nó rất có thể tận dụng tối đa tối nhiều hóa năng suất trên disk.

Consumer và Consumer Group

Consumer hiểu các messages trường đoản cú ngẫu nhiên partition làm sao, có thể chấp nhận được chúng ta không ngừng mở rộng lượng message được sử dụng tương tự như nhỏng cách những producer hỗ trợ message.

Consumer cũng được tổ chức triển khai thành các consumer groups cho một topic ví dụ – mỗi consumer phía bên trong group hiểu message xuất phát điểm từ 1 partition duy nhất, nhằm tránh Việc gồm 2 consumer thuộc xử lý phát âm và một message 2 lần cùng cục bộ group xử lý toàn bộ những message từ bỏ cục bộ topic.

Nếu bạn bao gồm số consumer > số partition, khi ấy một số consumer sẽ sống chính sách nhàn hạ cũng chính vì chúng không tồn tại partition nào nhằm cách xử trí.Nếu các bạn tất cả số partition > số consumer, lúc đó consumer đã dấn các message từ không ít partition. Nếu chúng ta gồm số consumer = số partition, từng consumer vẫn gọi message theo lắp thêm tự từ một partition.

Để dễ hiểu hơn, chúng ta nhìn qua hình hình họa dưới đây

*

Trong tấm hình ngơi nghỉ bên trên, Server 1 duy trì partition 0 và 3 với VPS 2 giữ lại các partition 1 và 2. Chúng ta tất cả 2 consumer groups là A và B. Group A tất cả 2 consumer với group B tất cả 4 consumer. Consumer group A bao gồm 2 consumer, vậy buộc phải mỗi consumer đã phát âm message tự 2 partition.Trong consumer group B, số lượng consumer thông qua số partition yêu cầu từng consumer sẽ gọi message từ một partition.

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

Ví dụ: nếu như Kafka được thông số kỹ thuật để giữ lại những messages tồn tại vào một ngày cùng consumer bị down lâu dài 1 ngày, lúc đó consumer vẫn mất message. Tuy nhiên, nếu như consumer chỉ bị down trong tầm 1 giờ đồng hồ đồng hồ thời trang, lúc đó nó hoàn toàn rất có thể bắt đầu gọi lại message từ offphối tiên tiến nhất.

Vai trò của Zookeeper

Zookeeper vào vai trò là nơi lưu trữ dữ liệu phân tán dạng key-value. Nó được tối ưu hóa cho tác vụ đọc nhanh khô tuy vậy ghi lừ đừ. Kafka áp dụng Zookeeper nhằm tiến hành câu hỏi thai chọn leader của Kafka broker cùng topic partition. Zookeeper cũng có thiết kế cho khả năng chịu lỗi cao, vì thế Kafka dựa vào không hề ít vào Zookeeper.

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

Offset cho mỗi partition của consumer groupACL (Access control list) – được thực hiện đến Việc số lượng giới hạn truy hỏi cập/ủy quyềnQuota của consumer/producer – số lượng message tối nhiều mỗi giâyPartition Leader và tâm lý của chúng

Producer với consumer không xúc tiến thẳng với Zookeeper để hiểu leader của partition giỏi rất nhiều metadata khác, nạm vào đó chúng đã truy vấn metadata cho tới Kafka broker – tiếp nối Kafka hệ trọng cùng với Zookeeper cùng gửi ý kiến metadata về lại cho cái đó.

Xem thêm: Vàng 10K Có Bị Đen - Có Nên Mua Vàng 10K Không

Kết luận

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