Zookeeper là gì

Kafka là một từ ngữ khá thông dụng trong hầu hết các nghành nghề thuộc nghành công nghiệp ngày nay. Phần đông mọi công ty số 1 trên thế giới đều đang áp dụng kafka trong căn cơ cơ sở hạ tầng của mình. Nhưng câu hỏi đặt ra nó là gì và sức tác động của nó ra sao?

Kafka là gì?

Kafka là gốc rễ streaming phân tán, có thể mở rộng với là thành phầm mã mối cung cấp mở. Dự án công trình Kafka ban đầu được cải cách và phát triển bởi Linkedin kế tiếp trở thành dự án Apache mã nguồn mở vào năm 2011. Kafka được viết bằng ngữ điệu Scala cùng Java. Nó được viết ra nhằm mục đích mục đích hỗ trợ một căn cơ mà có độ trễ thấp với thông lượng cao cho câu hỏi xử lý những nguồn cấp dữ liệu theo thời hạn thực.Bạn đã xem: Zookeeper là gì

Kafka chuyển động như cụ nào?

Kafka được phát hành dựa trên mô hình publish/subcribe, tựa như như bất kỳ hệ thống message như thế nào khác. Những ứng dụng (đóng vai trò là producer) gửi các messages (records) tới một node kafka (broker) cùng nói rằng những messages này sẽ tiến hành xử lý bởi các ứng dụng khác call là consumers. Những messages được gửi đến kafka node sẽ tiến hành lưu trữ vào một nơi call là topic và sau đó consumer rất có thể subcribe tới topic đó với lắng nghe rất nhiều messages này. Messages có thể là bất cứ thông tin gì như cực hiếm cảm biến, hành động người dùng,…


*

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

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

Partition

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

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

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


*

Tất cả các hành vi ghi với đọc tới một topic sẽ đầy đủ phải đi qua partition leader khớp ứng và leader sẽ phối hợp để cập nhật dữ liệu mới tới các replica parition khác. Giả dụ leader bị hỏng, một trong số replica partition sẽ đảm nhận vai trò là một trong leader mới.


*

Để một producer/consumer ghi/đọc message từ một partition, chắc chắn chúng cần phải biết leader là ai cần không? thông tin này cần phải có sẵn ở một vị trí nào đó.

Kafka lưu trữ những tin tức như vậy là metadata vào một thương mại & 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 mở rộng lớn và hiệu suất của kafka chính là log. Thường thì các developer khi new tiếp cận kafka cảm xúc khá rối lúc lần đầu tiên nghe mang đến “log“, bởi vì chúng ta thường đọc “log” chính là thuật nghữ được sử dụng trong log ứng dụng. Mặc dù nhiên, đông đảo gì mình đã nói sinh sống đây, là cấu tạo dữ liệu log. Log là một cấu tạo dữ liệu gồm thứ tự đồng hóa mà chỉ hỗ trợ dạng nối thêm (append). Chúng ta không thể sửa đổi hay xóa các records từ bỏ nó. Nó được gọi từ trái sang nên và được bảo vệ 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 sẽ đọc message từ log tại thời khắc họ lựa chọn.

Mỗi entry trong log được định danh do 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 hệt như chỉ số tuần tự vào một array vậy.

Parsistence data trong Kafa

Kafka lưu lại trữ tất cả message vào disk (không hề lưu lại trên RAM) cùng được thu xếp có sản phẩm tự trong cấu tạo log chất nhận được kafka tận dụng tối đa khả năng đọc và ghi lên disk một cách tuần tự.

Xem thêm: Xem Trực Tiếp Bóng Đá Thái Lan, Bóng Đá Thái Lan

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

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

Consumer với Consumer Group

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

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

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

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


*

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

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

Ví dụ: giả dụ Kafka được thông số kỹ thuật để giữ các messages vĩnh cửu trong một ngày và consumer bị down dài lâu 1 ngày, khi ấy consumer sẽ mất message. Tuy nhiên, nếu consumer chỉ bị down trong tầm 1 tiếng đồng hồ, lúc đó nó trọn vẹn có thể ban đầu đọc lại message từ offset new 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 đến tác vụ đọc cấp tốc nhưng ghi chậm. Kafka áp dụng Zookeeper để triển khai việc thai chọn leader của Kafka broker và topic partition. Zookeeper cũng được thiết kế theo phong cách cho kỹ năng chịu lỗi cao, cho nên vì vậy Kafka dựa vào khá nhiều vào Zookeeper.

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

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

Producer cùng consumer không can dự trực tiếp với Zookeeper để biết leader của partition hay phần lớn metadata khác, gắng vào đó bọn chúng sẽ truy vấn vấn metadata tới Kafka broker – sau đó Kafka liên hệ với Zookeeper cùng gửi phản hồi metadata về lại đến chúng.

Kết luận

Kafka đang hối hả trở thành lao động chính của con đường ống dữ liệu đối với bất kỳ tổ chức nào. Kafka được cho phép bạn bao gồm một lượng lớn các messages đi sang 1 phương tiện triệu tập và lưu trữ chúng nhưng không đề nghị phải băn khoăn lo lắng gì về những vấn đề như năng suất hay mất đuối dữ liệu. Kafka rất có thể là nhân tố trung trung ương trong quy mô kiến trúc phía sự kiện (event-driven) và có thể chấp nhận được bạn phân bóc tách giữa vận dụng này với vận dụng khác.