Zookeeper là gì

  -  

Kafka là 1 trong từ bỏ ngữ tương đối phổ cập vào hầu hết các lĩnh vực nghề trực thuộc lĩnh vực công nghiệp ngày nay. Hầu như phần đa công ty hàng đầu trên thế giới các sẽ sử dụng kafka trong gốc rễ hạ tầng của chính bản thân mình. Nhưng thắc mắc đặt ra nó là gì cùng mứ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ể không ngừng mở rộng và là sản phẩm mã mối cung cấp msống. Dự án Kafka ban sơ được phát triển vị Linkedin tiếp đến trở thành dự án Apache mã nguồn msinh sống vào thời điểm năm 2011. Kafka được viết bằng ngôn ngữ Scala và Java. Nó được viết ra nhằm mục tiêu hỗ trợ một nền tảng nhưng mà có độ trễ tốt cùng thông lượng cao mang lại vấn đề cách xử lý các mối cung cấp cấp cho tài liệu theo thời hạn thực.quý khách sẽ xem: Zookeeper là gì

Kafka chuyển động như vậy nào?

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


*

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

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

Partition

Topics vào kafka hoàn toàn có thể gồm kích thước không hề nhỏ, những điều đó không nên lưu trữ toàn bộ tài liệu của một topic trên một node, tài liệu buộc phải đươc phân loại ra thành nhiều partition để giúp bảo toàn dữ liệu cũng như cách xử lý tài liệu thuận tiện hơn. Partitions được cho phép họ triển khai subcribe tuy nhiên tuy vậy cho tới một topic rõ ràng bằng phương pháp phân chia dữ liệu trong một topic rõ ràng ra cho nhiều broker không giống nhau (kafka node), mỗi partition hoàn toàn có thể được bỏ trên một sản phẩm công nghệ đơn nhất – chất nhận được các consumer đọc dữ liệu xuất phát điểm từ 1 topic diễn ra một cách tuy vậy 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 nó. Để dễ nắm bắt rộng về kafka, mình đã trình diễn bởi ví dụ với 3 node/broker.

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


*

Tất cả các hành động ghi cùng hiểu cho tới một topic sẽ gần như yêu cầu đi qua partition leader khớp ứng cùng leader sẽ kết hợp để update tài liệu mới tới những replica parition không giống. Nếu leader bị hỏng, một trong số replica partition sẽ phụ trách mục đích là một trong những leader bắt đầu.


*

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

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

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

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


*

Một mối cung cấp dữ liệu đang ghi message vào log cùng một hoặc các consumer khác vẫn phát âm message trường đoản cú log tại thời gian bọn họ chọn lựa.

Mỗi entry trong log được định danh vì chưng một con số Hotline là offmix, hay nói một phương pháp dễ hiểu hơn, offset giống như chỉ số tuần từ vào một array vậy.

Parsistence data trong Kafa

Kafka lưu trữ tất cả message vào disk (không hề lưu trên RAM) với được sắp xếp bao gồm lắp thêm trường đoản cú trong cấu trúc log có thể chấp nhận được kafka tận dụng về tối nhiều khả năng phát âm cùng ghi lên disk một bí quyết tuần trường đoản cú.

Xem thêm: Bóp Tương Tác Là Gì ? Vì Sao Chúng Ta Lại Cần Nhiều Tương Tác Trên Facebook?

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

Kafka nhờ vào tương đối nhiều vào pagecabít của hệ quản lý cho bài toán lưu trữ dữ liệu, áp dụng RAM bên trên lắp thêm một bí quyết công dụng.Kafka lưu trữ các messages dưới định dạng nhị phân xuyên suốt quy 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 kỹ năng zero-copy. Nghĩa là khi hệ quản lý điều hành copy dữ liệu tự pagecađậy trực tiếp lịch sự socket, trọn vẹn bỏ qua áp dụng trung gian là kafka.Đọc/ghi tài liệu con đường tính trên disk nkhô hanh. Vấn đề khiến cho disk chậm chạp hiện nay thường là vì quá trình tìm kiếm tìm trên disk những lần. Kafka gọi cùng ghi bên trên disk tuyến tính, vì vậy nó có thể tận dụng về tối nhiều hóa công suất trên disk.

Consumer với Consumer Group

Consumer hiểu các messages từ ngẫu nhiên partition làm sao, cho phép bạn không ngừng mở rộng lượng message được thực hiện giống như nhỏng cách các producer cung cấp message.

Consumer cũng được tổ chức thành những consumer groups cho một topic rõ ràng – mỗi consumer phía bên trong group đọc message xuất phát điểm từ 1 partition độc nhất, nhằm tách bài toán bao gồm 2 consumer cùng cách xử lý hiểu và một message 2 lần và tổng thể group giải pháp xử lý toàn bộ các message từ toàn bộ topic.

Nếu chúng ta có số consumer > số partition, khi đó một số consumer sẽ ở chính sách nhàn hạ chính vì bọn chúng không tồn tại partition làm sao nhằm cách xử trí.Nếu chúng ta tất cả số partition > số consumer, lúc ấy consumer đang thừa nhận những message từ không ít partition. Nếu các bạn gồm số consumer = số partition, từng consumer đã đọc message theo thứ trường đoản cú từ 1 partition.

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


*

Trong tấm hình ngơi nghỉ bên trên, Server 1 giữ partition 0 và 3 cùng hệ thống 2 giữ các partition 1 và 2. Chúng ta tất cả 2 consumer groups là A và B. Group A gồm 2 consumer cùng group B bao gồm 4 consumer. Consumer group A tất cả 2 consumer, vậy bắt buộc từng consumer đang gọi message từ 2 partition.Trong consumer group B, số lượng consumer ngay số partition bắt buộc từng consumer vẫn đọc message từ một partition.

Kafka tuân thủ theo đúng các phép tắc được hỗ trợ bởi vì broker và consumer. Nghĩa là kafka không tuân theo dõi các record được hiểu bởi vì consumer với cho nên vì vậy lừng khừng 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 với nó tùy ở trong vào consumer, để điều chỉnh thời hạn sao cho tương xứng. Bản thân consumer vẫn dò hỏi coi Kafa bao gồm message như thế nào bắt đầu hay là không với mang lại Kafka biết phần lớn record như thế nào chúng mong gọi. Vấn đề này cho phép bọn chúng tăng/giảm offset mà lại consumer ao ước, cho nên vì thế nó có thể phát âm lại các message đã có phát âm rồi cùng tái xử trí các sự khiếu nại trong ngôi trường đúng theo gặp mặt sự cầm.

Ví dụ: trường hợp Kafka được cấu hình để giữ lại các messages mãi mãi vào một ngày với consumer bị down lâu dài 1 ngày, khi ấy consumer vẫn mất message. Tuy nhiên, giả dụ consumer chỉ bị down trong khoảng 1 giờ đồng hồ đồng hồ thời trang, lúc ấy nó hoàn toàn có thể bước đầu gọi lại message từ offset tiên tiến nhất.

Vai trò của Zookeeper

Zookeeper nhập vai trò là khu vực lưu trữ tài liệu phân tán dạng key-value. Nó được tối ưu hóa đến tác vụ gọi nkhô hanh tuy thế ghi lờ đờ. Kafka áp dụng Zookeeper để tiến hành Việc thai lựa chọn leader của Kafka broker cùng topic partition. Zookeeper cũng được thiết kế với mang đến kỹ năng Chịu đựng lỗi cao, vì vậy Kafka nhờ vào tương đối nhiều vào Zookeeper.

Nó cũng được áp dụng để tàng trữ tất cả metadata nlỗi là:

Offset cho mỗi partition của consumer groupACL (Access control list) – được sử dụng cho bài toán số lượng giới hạn tróc nã 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 trạng của chúng

Producer với consumer không xúc tiến trực tiếp cùng với Zookeeper để hiểu leader của partition tuyệt rất nhiều metadata không giống, nắm vào đó bọn chúng đã tróc nã vấn metadata cho tới Kafka broker – tiếp nối Kafka can dự cùng với Zookeeper và gửi đánh giá metadata về lại cho việc đó.

Xem thêm: Nghĩa Của Từ Stomata Là Gì ? Nghĩa Của Từ Stomata Trong Tiếng Việt

Kết luận

Kafka sẽ gấp rút thay đổi trụ cột chính của con đường ống dữ liệu đối với ngẫu nhiên tổ chức triển khai như thế nào. Kafka được cho phép các bạn gồm một lượng mập những messages đi qua 1 phương tiện đi lại tập trung với lưu trữ bọn chúng nhưng mà không cần thiết phải lo lắng gì về hầu như vụ việc nlỗi hiệu suất hay mất đuối dữ liệu. Kafka hoàn toàn có thể là nhân tố trung tâm vào mô hình bản vẽ xây dựng hướng sự khiếu nại (event-driven) với cho phép chúng ta phân tách thân vận dụng này cùng với vận dụng không giống.