Zookeeper là gì

     

Kafka là 1 trong từ ngữ khá thông dụng trong hầu hết các nghành nghề nghề thuộc nghành nghề dịch vụ công nghiệp ngày nay. Phần lớn mọi công ty bậc nhất trên quả đât đều đang thực hiện kafka trong căn cơ cơ sở hạ tầng của mình. Nhưng thắc mắc đặt ra nó là gì cùng sức ảnh hưở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ới là sản phẩm mã mối cung cấp mở. Dự án Kafka lúc đầu được cải cách và phát triển bởi Linkedin kế tiếp trở thành dự án Apache mã mối cung cấp mở vào thời điểm năm 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 nền tảng mà tất cả độ trễ thấp và thông lượng cao cho bài toán xử lý những nguồn cấp dữ liệu theo thời gian thực.

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

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

Kafka chuyển động như cố kỉnh nào?

Kafka được thi công dựa trên quy mô publish/subcribe, tựa như như ngẫu nhiên hệ thống message làm sao khác. Các ứng dụng (đóng mục đích là producer) gửi những messages (records) tới một node kafka (broker) với nói rằng đông đảo messages này sẽ được xử lý bởi những ứng dụng khác gọi là consumers. Các messages được gửi tới kafka node sẽ tiến hành lưu trữ trong một nơi gọi là topic và tiếp nối consumer rất có thể subcribe tới topic đó với lắng nghe hầu như messages này. Messages hoàn toàn có thể là bất cứ thông tin gì như quý giá cảm biến, hành động người dùng,…


*

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

Partition

Topics trong kafka có thể có size rất lớn, như vậy tránh việc lưu trữ toàn bộ dữ liệu của một topic bên trên một node, dữ liệu cần đươc phân chia ra thành các partition để giúp bảo toàn dữ liệu cũng như xử lý dữ liệu tiện lợi hơn. Partitions mang lại phép họ thực hiện tại subcribe tuy vậy song tới một topic chũm thể bằng cách phân chia dữ liệu trong một topic rõ ràng ra cho các broker khác nhau (kafka node), từng partition rất có thể được đặt lên một máy lẻ tẻ – chất nhận được nhiều consumer gọi dữ liệu xuất phát điểm từ một topic ra mắt một cách tuy nhiên song.

Để tăng tính khả dụng (availability) của partition, từng partition cũng có thể có giá trị replicas của riêng rẽ nó. Để dễ dàng nắm bắt hơn về kafka, bản thân sẽ trình bày bằng lấy ví dụ như với 3 node/broker.

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


*

Tất cả các hành vi ghi cùng đọc cho tới một topic sẽ hồ hết phải đi qua partition leader khớp ứng và leader sẽ kết hợp để update dữ liệu new tới các replica parition khác. Nếu leader bị hỏng, một trong các replica partition sẽ phụ trách vai trò là 1 trong leader mới.


*

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

Kafka tàng trữ những thông tin như vậy là metadata trong một thương mại dịch vụ gọi là Zookeeper.

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

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


*

Một nguồn tài liệu sẽ ghi message vào log và một hoặc những consumer khác đang đọc message từ bỏ log tại thời điểm họ lựa chọn.

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

Xem thêm: Hedge, Hedging Là Gì ? Chiến Lược Sử Dụng Hedging Forex 2022

Parsistence data trong Kafa

Kafka lưu trữ tất cả message vào disk (không hề lưu trên RAM) cùng được bố trí có máy tự trong cấu trúc log được cho phép kafka tận dụng tối đa kĩ năng đọc và ghi lên disk một cách tuần tự.

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

Kafka dựa vào khá những vào pagecache của hệ quản lý cho việc lưu trữ dữ liệu, áp dụng RAM trên thiết bị một bí quyết hiệu quả.Kafka giữ trữ các messages dưới format nhị phân xuyên suốt quá trình (producer > broker > consumer), làm cho nó hoàn toàn có thể tận dụng về tối ưu hóa kỹ năng zero-copy. Nghĩa là khi hệ điều hành và quản lý copy dữ liệu từ pagecache trực tiếp quý phái socket, trọn vẹn bỏ qua áp dụng trung gian là kafka.Đọc/ghi dữ liệu tuyến tính bên trên disk nhanh. Vấn đề làm cho disk chậm bây giờ thường là do quá trình tìm kiếm trên disk những lần. Kafka đọc cùng ghi bên trên disk con đường tính, vì thế nó rất có thể tận dụng về tối đa hóa công suất trên disk.

Consumer cùng Consumer Group

Consumer đọc các messages từ ngẫu nhiên partition nào, được cho phép bạn mở rộng lượng message được sử dụng tựa như như cách các producer cung cấp message.

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

Nếu bạn có số consumer > số partition, lúc đó một số trong những consumer sẽ ở cơ chế rảnh rỗi chính vì chúng không có partition nào nhằm xử lý.Nếu bạn có số partition > số consumer, lúc ấy consumer vẫn nhận những message từ khá nhiều partition. Nếu như khách hàng có số consumer = số partition, từng consumer sẽ đọc message theo thiết bị tự từ là 1 partition.

Để dễ hiểu hơn, các bạn xem qua hình hình ảnh dưới đây


*

Trong bức ảnh ở trên, server 1 giữ lại partition 0 với 3 và server 2 giữ các partition 1 với 2. Họ có 2 consumer groups là A cùng B. Group A bao gồm 2 consumer và group B có 4 consumer. Consumer group A gồm 2 consumer, vậy đề nghị mỗi consumer vẫn đọc message tự 2 partition.Trong consumer group B, số lượng consumer ngay số partition bắt buộc mỗi consumer đã đọc message từ 1 partition.

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

Ví dụ: trường hợp Kafka được thông số kỹ thuật để giữ các messages lâu dài trong một ngày với consumer bị down vĩnh viễn 1 ngày, khi đó consumer sẽ mất message. Tuy nhiên, nếu như consumer chỉ bị down trong khoảng 1 giờ đồng hồ đồng hồ, khi đó nó hoàn toàn có thể ban đầu đọc lại message tự offset mới nhất.

Vai trò của Zookeeper

Zookeeper vào vai trò là nơi tàng trữ dữ liệu phân tán dạng key-value. Nó được buổi tối ưu hóa mang lại tác vụ đọc nhanh nhưng ghi chậm. Kafka áp dụng Zookeeper để thực hiện việc thai chọn leader của Kafka broker với topic partition. Zookeeper cũng có phong cách thiết kế cho năng lực chịu lỗi cao, do đó Kafka nhờ vào khá nhiều vào Zookeeper.

Xem thêm: Chỉ Mong Em Sẽ Gặp Đúng Người Thật Lòng Thương Lấy Em Mp3, Chỉ Mong Em Sẽ Gặp Đúng Người

Nó cũng khá được sử dụng để lưu trữ tất cả metadata như là:

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

Kết luận

Kafka đang nhanh 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 nào. Kafka cho phép bạn tất cả một lượng lớn các messages đi sang 1 phương tiện tập trung và tàng trữ chúng cơ mà không bắt buộc phải lo lắng gì về những vụ việc như hiệu suất hay mất mát dữ liệu. Kafka có thể là thành phần trung trung khu trong quy mô kiến trúc phía sự kiện (event-driven) và được cho phép bạn phân bóc giữa vận dụng này với áp dụng khác.