Zookeeper Là Gì

 - 

Kafka là 1 từ ngữ tương đối thông dụng trong phần lớn các nghành nghề nghề thuộc nghành nghề dịch vụ công nghiệp ngày nay. Hầu hết mọi công ty số 1 trên thế giới đều đang sử dụng kafka trong nền tảng 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à nền tảng gốc rễ streaming phân tán, rất có thể mở rộng và là thành phầm mã nguồn mở. Dự án Kafka thuở đầu được cách tân và phát triển bởi Linkedin sau đó trở thành dự án công trình Apache mã mối cung cấp mở vào năm 2011. Kafka được viết bằng ngôn từ Scala cùng Java. Nó được viết ra nhằm mục đích cung cấp một nền tảng gốc rễ mà bao gồm độ trễ thấp cùng thông lượng cao cho việc xử lý những nguồn cấp tài 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ư thay nào?

Kafka được gây ra dựa trên quy mô publish/subcribe, giống như như bất kỳ hệ thống message nào khác. Những ứng dụng (đóng sứ mệnh là producer) gửi các messages (records) cho tới một node kafka (broker) cùng nói rằng hầu như messages này sẽ được xử lý bởi những ứng dụng khác call là consumers. Các messages được gửi tặng kafka node sẽ được lưu trữ trong một nơi call là topic và kế tiếp consumer rất có thể subcribe tới topic đó cùng lắng nghe phần đa messages này. Messages rất có thể là bất kể thông tin gì như quý 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 danh mục mà các messages sẽ tiến hành lưu trữ với được đẩy vào.

Partition

Topics trong kafka có thể có kích cỡ 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 nhiều partition để giúp bảo toàn dữ liệu cũng giống như xử lý dữ liệu dễ dàng hơn. Partitions mang đến phép chúng ta thực hiện tại subcribe tuy nhiên song cho tới một topic vậy thể bằng phương pháp phân chia tài liệu trong một topic rõ ràng ra cho những broker khác nhau (kafka node), từng partition hoàn toàn có thể được bỏ lên một máy riêng biệt – chất nhận được nhiều consumer hiểu dữ liệu 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 đều có giá trị replicas của riêng biệt nó. Để dễ hiểu hơn về kafka, mình sẽ trình diễn bằng lấy một ví dụ 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 được một bạn dạng copy của partition. Trong những những phiên bản copy partition này, sẽ có được một phiên bản copy được thai chọn có tác dụng leader, trong những lúc những 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 động ghi với đọc tới một topic sẽ hầu hết phải trải qua partition leader tương xứng và leader sẽ phối hợp để cập nhật dữ liệu mới tới những replica parition khác. Nếu leader bị hỏng, một trong số replica partition sẽ đảm nhận vai trò là 1 trong những leader mới.


*

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

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

Mỗi entry trong log được định danh vì một số lượng gọi là offset, tuyệt 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ự trong một array vậy.

Xem thêm: Heboh Aktris Train To Busan, Jung Yu Mi Pakai Hijab Di Dekat Masjid

Parsistence data trong Kafa

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

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

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

Consumer với Consumer Group

Consumer đọc những messages từ bất kỳ partition nào, cho phép bạn không ngừng mở rộng lượng message được sử dụng tương tự như như cách các producer hỗ trợ message.

Consumer cũng khá được tổ chức thành các consumer groups cho một topic rõ ràng – 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 có 2 consumer cùng giải pháp xử lý đọc và một message 2 lần và tổng thể group xử lý tất cả các message từ toàn thể topic.

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

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


*

Trong bức hình ảnh ở trên, vps 1 duy trì partition 0 cùng 3 với server 2 giữ những partition 1 cùng 2. Bọn họ có 2 consumer groups là A với B. Group A có 2 consumer và group B có 4 consumer. Consumer group A có 2 consumer, vậy đề nghị mỗi consumer vẫn đọc message từ 2 partition.Trong consumer group B, con số consumer thông qua số partition bắt buộc mỗi consumer đang đọc message từ là một partition.

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

Ví dụ: ví như Kafka được cấu hình để giữ các messages mãi sau trong một ngày với consumer bị down lâu bền hơn 1 ngày, khi ấy consumer đã mất message. Mặc dù nhiên, giả dụ 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 trường đoản cú offset new nhất.

Vai trò của Zookeeper

Zookeeper đóng vai trò là nơi tàng trữ dữ liệu phân tán dạng key-value. Nó được tối ưu hóa đến tác vụ đọc nhanh nhưng ghi chậm. Kafka áp dụng Zookeeper để triển khai việc bầu chọn leader của Kafka broker cùng topic partition. Zookeeper cũng có thiết kế cho năng lực chịu lỗi cao, vì vậy Kafka dựa vào khá nhiều vào Zookeeper.

Xem thêm: Có Chàng Trai Viết Lên Cây Sing My Song, Có Chàng Trai Viết Lên Cây

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

Offset cho mỗi partition của consumer groupACL (Access control list) – được áp dụng cho việc 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 chóng trở thành lao động chính của đường ống dữ liệu đối với ngẫu nhiên tổ chức nào. Kafka chất nhận được bạn bao gồm một lượng lớn các messages đi qua một phương tiện tập trung và tàng trữ chúng nhưng mà không bắt buộc phải lo ngại gì về những vụ việc như hiệu suất hay mất đuối dữ liệu. Kafka hoàn toàn có thể là yếu tắc trung chổ chính giữa trong mô hình kiến trúc phía sự kiện (event-driven) và cho phép bạn phân tách bóc giữa vận dụng này với ứng dụng khác.