Kafka là một trong những từ ngữ tương đối phổ cập vào hầu hết các lĩnh vực nghề nằm trong lĩnh vực công nghiệp thời nay. Hầu như phần lớn cửa hàng số 1 trên quả đât phần lớn vẫn áp dụng kafka vào gốc rễ hạ tầng của mình. Nhưng thắc mắc đặt ra nó là gì cùng mức độ tác động của chính nó ra sao?

Kafka là gì?

Kafka là gốc rễ streaming phân tán, có thể mở rộng và là sản phẩm mã mối cung cấp mlàm việc. Dự án Kafka thuở đầu được cách tân và phát triển bởi vì Linkedin tiếp nối thay đổi dự án công trình Apađậy mã nguồn msinh sống vào năm 2011. Kafka được viết bởi ngữ điệu 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 gốc rễ mà có độ trễ phải chăng cùng thông lượng cao mang lại Việc giải pháp xử lý những nguồn cấp cho tài liệu theo thời gian thực.

Bạn đang xem: Apache kafka là gì? tìm hiểu và ứng dụng apache kafka cho hệ thống iot – smart factory & industrial iot vietnam

Kafka hoạt động như thế nào?

Kafka được chế tạo dựa trên quy mô publish/subcribe, giống như nhỏng bất kỳ hệ thống message nào không giống. Các vận dụng (đóng vai trò là producer) gửi những messages (records) tới một node kafka (broker) với bảo rằng đầy đủ messages này sẽ được giải pháp xử lý vì chưng những ứng dụng khác hotline là consumers. Các messages được gửi tặng kafka node sẽ tiến hành lưu trữ vào một địa điểm Điện thoại tư vấn là topic với tiếp đến consumer rất có thể subcribe cho tới topic đó và lắng nghe những messages này. Messages có thể là bất cứ đọc tin gì như quý giá cảm biến, hành động người tiêu dùng,…

*

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

Partition

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

Bây tiếng, một topic sẽ tiến hành chia ra thành 3 partitions với mỗi broker sẽ sở hữu một bạn dạng copy của partition. Trong số đa số phiên bản copy partition này, sẽ sở hữu một bạn dạng copy được bầu chọn làm cho leader, trong lúc phần đông phiên bản copy không giống chỉ triển khai đồng bộ tài liệu với partition leader.

*

Tất cả các hành động ghi và phát âm cho tới một topic vẫn phần đa đề nghị trải qua partition leader khớp ứng cùng leader sẽ phối hợp nhằm cập nhật tài liệu new cho tới các replica parition khác. Nếu leader bị lỗi, một trong số replica partition sẽ đảm nhận phương châm là một leader mới.

*

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

Kafka lưu trữ hầu hết thông tin điều này là metadata vào một các dịch vụ gọi là Zookeeper.

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

Chìa khóa thiết yếu dẫn tới khả năng mở rộng và năng suất của kafka đó 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 lúc lần đầu tiên biết đến “log“, cũng chính vì chúng ta hay phát âm “log” chính là thuật nghữ được áp dụng vào log áp dụng. Tuy nhiên, phần đông gì mình sẽ nói ở chỗ này, là kết cấu dữ liệu log. Log là một kết cấu dữ liệu có sản phẩm tự đồng nhất nhưng mà chỉ cung ứng dạng nối thêm (append). quý khách hàng cần yếu sửa đổi xuất xắc xóa các records từ nó. Nó được gọi tự trái quý phái buộc phải và được bảo đảm an toàn sản phẩm trường đoản cú những cống phẩm.

*

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

Mỗi entry trong log được định danh vị một con số Hotline là offphối, xuất xắc nói một biện pháp dễ dàng nắm bắt hơn, offset giống hệt như chỉ số tuần từ trong một array vậy.

Vì chuỗi/offphối chỉ hoàn toàn có thể được duy trì trên từng node/broker cụ thể cùng cần yếu được bảo trì đối với toàn cục cluster, cho nên vì vậy Kafka chỉ đảm bảo an toàn sắp xếp vật dụng từ tài liệu cho mỗi partition.

Xem thêm: Sự Thật Bất Ngờ Về Công Tử Bạc Liêu, Trần Trinh Huy

Parsistence data trong Kafa

Kafka tàng trữ toàn bộ message vào disk (không thể lưu giữ trên RAM) cùng được bố trí có đồ vật từ bỏ vào cấu tạo log được cho phép kafka tận dụng tối đa buổi tối nhiều kỹ năng phát âm và ghi lên disk một phương pháp tuần từ bỏ.

Nó là một trong những cách lựa chọn hơi thịnh hành nhằm lưu trữ dữ liệu trên disk mà lại vẫn rất có thể thực hiện buổi tối đa hóa tính năng, tất cả một số trong những nguyên do thiết yếu bên dưới đây:

Kafka nhờ vào không ít vào pagecache của hệ quản lý mang đến Việc lưu trữ tài liệu, sử dụng RAM bên trên sản phẩm công nghệ một cách hiệu quả.Kafka lưu trữ các messages dưới định hình nhị phân xuyên suốt quy trình (producer > broker > consumer), tạo cho nó rất có thể tận dụng tối đa buổi 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 quý phái socket, hoàn toàn bỏ qua mất vận dụng trung gian là kafka.Đọc/ghi dữ liệu đường tính trên disk nkhô hanh. Vấn đề làm cho disk lờ lững hiện giờ thường là do quy trình tìm kiếm tìm trên disk những lần. Kafka đọc và ghi bên trên disk tuyến tính, cho nên vì thế nó rất có thể tận dụng tối đa buổi tối đa hóa năng suất bên trên disk.

Consumer với Consumer Group

Consumer hiểu các messages từ bỏ ngẫu nhiên partition làm sao, cho phép chúng ta mở rộng lượng message được áp dụng tương tự như như cách các producer cung cấp message.

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

Nếu bạn bao gồm số consumer > số partition, lúc đó một số consumer đang sinh hoạt chính sách thanh nhàn cũng chính vì bọn chúng không tồn tại partition nào để xử trí.Nếu bạn có số partition > số consumer, lúc đó consumer vẫn thừa nhận các message từ nhiều partition. Nếu chúng ta bao gồm số consumer = số partition, từng consumer sẽ gọi message theo lắp thêm từ bỏ từ 1 partition.

Để dễ dàng nắm bắt hơn, chúng ta nhìn qua hình ảnh dưới đây

*

Trong tấm hình ở trên, Server 1 giữ partition 0 và 3 và server 2 giữ những partition 1 với 2. Chúng ta tất cả 2 consumer groups là A với B. Group A gồm 2 consumer cùng group B gồm 4 consumer. Consumer group A có 2 consumer, vậy yêu cầu từng consumer sẽ đọc message trường đoản cú 2 partition.Trong consumer group B, con số consumer bằng số partition phải mỗi consumer đã phát âm message từ một partition.

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

Ví dụ: trường hợp Kafka được cấu hình để giữ các messages lâu dài trong một ngày và consumer bị down lâu dài 1 ngày, khi đó consumer sẽ mất message. Tuy nhiên, nếu như consumer chỉ bị down trong tầm 1 giờ đồng hồ, khi ấy nó trọn vẹn rất có thể bắt đầu đọc lại message từ bỏ offphối mới nhất.

Vai trò của Zookeeper

Zookeeper nhập vai trò là khu vực 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ụ gọi nhanh hao tuy nhiên ghi chậm trễ. Kafka sử dụng Zookeeper nhằm triển khai việc thai chọn leader của Kafka broker với topic partition. Zookeeper cũng được thiết kế với cho kĩ năng chịu lỗi cao, cho nên vì thế Kafka phụ thuộc tương đối nhiều vào Zookeeper.

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

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

Producer cùng consumer ko xúc tiến trực tiếp với Zookeeper để hiểu leader của partition xuất xắc phần đa metadata khác, cố kỉnh vào kia chúng đang truy hỏi vấn metadata tới Kafka broker – tiếp nối Kafka can dự với Zookeeper cùng gửi đánh giá metadata về lại cho chúng.

Xem thêm: ' Giỗ Tổ Hùng Vương Tiếng Anh Là Gì, Lễ Hội Đền Hùng Dịch Nghĩa

Kết luận

Kafka sẽ lập cập biến trụ cột của mặt đường ống tài liệu so với bất kỳ tổ chức như thế nào. Kafka cho phép các bạn bao gồm một lượng to các messages đi sang một phương tiện triệu tập với lưu trữ chúng nhưng mà không nhất thiết phải băn khoăn lo lắng gì về phần đa vụ việc nlỗi công suất hay mất mát tài liệu. Kafka hoàn toàn có thể là nhân tố trung trung ương trong quy mô phong cách xây dựng phía sự khiếu nại (event-driven) với cho phép bạn phân tách thân ứng dụng này cùng với vận dụng không giống.


Chuyên mục: Ý NGHĨA
Bài viết liên quan

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *