Zookeeper là gì

Kafka là một trong những trường đoản cú ngữ khá thông dụng vào số đông các nghành nghề nghề ở trong nghành nghề công nghiệp ngày này. Hầu như đa số cửa hàng số 1 bên trên nhân loại những vẫn sử dụng kafka vào nền tảng hạ tầng của bản thân. Nhưng thắc mắc đặt ra nó là gì với mức độ tác động của nó ra sao?

Kafka là gì?

Kafka là căn cơ streaming phân tán, có thể mở rộng và là sản phẩm mã nguồn mngơi nghỉ. Dự án Kafka lúc đầu được phát triển bởi Linkedin kế tiếp phát triển thành dự án Apache 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ới Java. Nó được viết ra nhằm mục tiêu mục tiêu hỗ trợ một căn cơ mà lại bao gồm độ trễ phải chăng với thông lượng cao cho Việc xử lý các mối cung cấp cung cấp dữ liệu theo thời gian thực.Quý Khách đang xem: Zookeeper là gì

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

Kafka được xuất bản dựa vào mô hình publish/subcribe, tương tự như như ngẫu nhiên hệ thống message làm sao 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 phần lớn messages này sẽ tiến hành cách xử trí vị các áp dụng không giống gọi là consumers. Các messages được gửi đến kafka node sẽ tiến hành tàng trữ vào một chỗ gọi là topic và sau đó consumer có thể subcribe tới topic kia cùng lắng nghe hồ hết messages này. Messages có thể là bất cứ lên tiếng gì nhỏng quý hiếm cảm biến, hành động người tiêu dùng,…


*

Topic có thể được xem như như là tên của một hạng mục nhưng các messages sẽ được tàng trữ và được đẩy vào.

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

Partition

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

Để tăng tính khả dụng (availability) của partition, mỗi partition cũng có thể có quý hiếm replicas của riêng biệt nó. Để dễ hiểu rộng về kafka, mình vẫ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 ra thành 3 partitions cùng từng broker sẽ sở hữu một phiên bản copy của partition. Trong số hồ hết phiên bản copy partition này, sẽ sở hữu một bạn dạng copy được thai chọn có tác dụng leader, trong những khi số đông phiên bản copy không giống chỉ tiến hành đồng điệu tài liệu với partition leader.


*

Tất cả những hành vi ghi cùng đọc cho tới một topic vẫn những yêu cầu đi qua partition leader tương ứng cùng leader vẫn phối hợp để update 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 đang phụ trách sứ mệnh là một trong những leader new.


*

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

Kafka lưu trữ phần lớn biết tin điều này là metadata vào một hình thức dịch vụ Gọi là Zookeeper.

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

Chìa khóa bao gồm dẫn tới tài năng không ngừng mở rộng với năng suất của kafka chính là log. Thường thì các developer Khi mới tiếp cận kafka cảm thấy tương đối rối khi lần thứ nhất biết đến “log“, bởi vì họ hay gọi “log” đó là thuật nghữ được áp dụng trong log vận dụng. Tuy nhiên, đa số gì bản thân đã nói tại chỗ này, là cấu tạo dữ liệu log. Log là 1 trong kết cấu tài liệu gồm lắp thêm từ đồng nhất mà lại chỉ hỗ trợ dạng nối thêm (append). Bạn quan yếu chỉnh sửa tốt xóa những records tự nó. Nó được phát âm từ trái sang nên với được đảm bảo an toàn đồ vật trường đoản cú những cống phẩm.


*

Một nguồn dữ liệu sẽ ghi message vào log với một hoặc các consumer không giống đã phát âm message từ log tại thời điểm họ lựa chọn.

Mỗi entry trong log được định danh vì một con số Call là offset, tuyệt nói một bí quyết dễ dàng nắm bắt rộng, offmix giống như chỉ số tuần từ bỏ vào một array vậy.

Parsistence data trong Kafa

Kafka tàng trữ tất cả message vào disk (không còn lưu lại bên trên RAM) với được thu xếp có máy từ bỏ vào cấu trúc log được cho phép kafka tận dụng về tối nhiều kĩ năng đọc cùng ghi lên disk một phương pháp tuần từ bỏ.

Xem thêm: Download Facefighter Gold 1, Download Facefighter Gold For Android

Nó là 1 trong những cách chọn lọc hơi thông dụng để tàng trữ tài liệu bên trên disk nhưng mà vẫn hoàn toàn 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 lý do bao gồm bên dưới đây:

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

Consumer với Consumer Group

Consumer phát âm các messages từ ngẫu nhiên partition làm sao, chất nhận được bạn không ngừng mở rộng lượng message được thực hiện tương tự nhỏng cách những producer cung ứng message.

Consumer cũng khá được tổ chức thành các consumer groups cho 1 topic ví dụ – từng consumer phía bên trong group hiểu message từ một partition nhất, nhằm tránh việc có 2 consumer cùng cách xử lý phát âm và một message 2 lần cùng toàn thể group giải pháp xử lý tất cả những message từ toàn thể topic.

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

Để dễ dàng nắm bắt rộng, các bạn nhìn qua hình hình ảnh dưới đây


*

Trong tấm hình nghỉ ngơi bên trên, Server 1 duy trì partition 0 với 3 cùng VPS 2 giữ những partition 1 và 2. Chúng ta bao gồm 2 consumer groups là A và B. Group A gồm 2 consumer cùng group B có 4 consumer. Consumer group A có 2 consumer, vậy bắt buộc từng consumer sẽ đọc message tự 2 partition.Trong consumer group B, con số consumer bằng số partition bắt buộc từng consumer vẫn gọi message từ là một partition.

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

Ví dụ: nếu như Kafka được cấu hình để lưu lại những messages mãi sau vào một ngày cùng consumer bị down dài lâu một ngày, lúc đó consumer đã mất message. Tuy nhiên, trường hợp consumer chỉ bị down trong vòng 1 giờ đồng hồ đồng hồ đeo tay, lúc đó nó trọn vẹn hoàn toàn có thể bước đầu hiểu 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ữ tài liệu phân tán dạng key-value. Nó được buổi tối ưu hóa cho tác vụ hiểu nkhô giòn cơ mà ghi chậm trễ. Kafka sử dụng Zookeeper nhằm tiến hành việc bầu lựa chọn leader của Kafka broker với topic partition. Zookeeper cũng được thiết kế đến năng lực Chịu lỗi cao, vì vậy Kafka dựa vào khá nhiều vào Zookeeper.

Nó cũng rất được sử dụng nhằm lưu trữ toàn bộ metadata như là:

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

Producer với consumer ko địa chỉ thẳng với Zookeeper để biết leader của partition xuất xắc mọi metadata khác, vậy vào kia bọn chúng đã truy nã vấn metadata tới Kafka broker – tiếp nối Kafka tác động cùng với Zookeeper cùng gửi ý kiến metadata về lại cho chúng.

Kết luận

Kafka đang lập cập biến đổi trụ cột chính của mặt đường ống tài liệu đối với bất kỳ tổ chức như thế nào. Kafka được cho phép chúng ta gồm một lượng Khủng các messages đi qua 1 phương tiện triệu tập với lưu trữ chúng mà lại không cần phải lo ngại gì về hồ hết sự việc như năng suất tuyệt mất mát tài liệu. Kafka hoàn toàn có thể là thành phần trung tâm vào quy mô phong cách thiết kế hướng sự kiện (event-driven) với 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ông giống.