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

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

Kafka chuyển động như thế nào?

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

*

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

Partition

Topics trong kafka hoàn toàn có thể bao gồm size rất cao, như vậy không nên lưu trữ tất cả dữ liệu của một topic bên trên một node, tài liệu cần đươc phân chia ra thành các partition sẽ giúp đỡ bảo toàn tài liệu cũng như xử lý dữ liệu tiện lợi hơn. Partitions có thể chấp nhận được họ triển khai subcribe tuy nhiên song tới một topic ví dụ bằng cách phân loại 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 một đồ vật riêng lẻ – chất nhận được nhiều consumer hiểu dữ liệu xuất phát từ một topic ra mắt một bí quyết song tuy vậy.

Để tăng tính khả dụng (availability) của partition, mỗi partition cũng có thể có quý giá replicas của riêng biệt nó. Để dễ hiểu rộng về kafka, mình vẫn trình diễn bởi ví dụ với 3 node/broker.

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

*

Tất cả những hành động ghi với hiểu cho tới một topic đang đầy đủ yêu cầu trải qua partition leader khớp ứng cùng leader vẫn phối hợp để update tài liệu bắt đầu tới những replica parition khác. Nếu leader bị lỗi, một trong các replica partition đang đảm nhiệm mục đích là 1 trong những leader new.

*

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

Kafka lưu trữ những báo cáo điều này là metadata vào một hình thức dịch vụ Điện thoại tư vấn là Zookeeper.

Cấu trúc dữ liệu log vào Kafka

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

*

Một mối cung cấp dữ liệu đã ghi message vào log với một hoặc nhiều consumer không giống đang gọi message tự log tại thời khắc bọn họ gạn lọc.

Mỗi entry vào log được định danh vì một con số hotline là offmix, tốt nói một cách dễ nắm bắt hơn, offmix giống như chỉ số tuần từ bỏ vào một array vậy.

Vì chuỗi/offmix chỉ có thể được gia hạn bên trên từng node/broker rõ ràng với cần yếu được gia hạn đối với toàn thể cluster, vì thế Kafka chỉ đảm bảo bố trí sản phẩm công nghệ từ bỏ dữ liệu cho mỗi partition.

Xem thêm: Cách Giảm Lag Khi Chơi Liên Quân Tren Pc, 5 Cách Giảm Lag Liên Quân Mobile Cực Kỳ Hiệu Quả

Parsistence data trong Kafa

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

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

Kafka phụ thuộc không hề ít vào pagecabịt của hệ quản lý điều hành mang đến vấn đề tàng trữ tài liệu, áp dụng RAM trên đồ vật một biện pháp công dụng.Kafka tàng trữ các messages bên dưới định hình nhị phân xuyên thấu quá trình (producer > broker > consumer), làm cho nó có thể tận dụng về tối ưu hóa tài năng zero-copy. Nghĩa là khi hệ điều hành và quản lý copy dữ liệu từ bỏ pagecađậy thẳng quý phái socket, hoàn toàn làm lơ vận dụng trung gian là kafka.Đọc/ghi dữ liệu tuyến đường tính trên disk nkhô cứng. Vấn đề tạo cho disk chậm rì rì bây chừ thường xuyên là do quy trình kiếm tìm kiếm trên disk các lần. Kafka phát âm và ghi trên disk con đường tính, do đó 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 hiểu các messages trường đoản cú bất kỳ partition như thế nào, được cho phép các bạn mở rộng lượng message được áp dụng tương tự như nhỏng phương pháp các producer hỗ trợ message.

Consumer cũng được tổ chức thành những consumer groups cho 1 topic cụ thể – từng consumer bên trong group hiểu message xuất phát từ 1 partition tốt nhất, để tách vấn đề có 2 consumer thuộc xử lý gọi và một message 2 lần và toàn thể group giải pháp xử lý toàn bộ các message trường đoản cú tổng thể topic.

Nếu bạn bao gồm số consumer > số partition, khi ấy một số trong những consumer vẫn sinh hoạt chính sách nhàn rỗi bởi vì chúng không tồn tại partition nào để xử lý.Nếu các bạn có số partition > số consumer, khi ấy consumer vẫn thừa nhận các message từ nhiều partition. Nếu bạn bao gồm số consumer = số partition, từng consumer sẽ phát âm message theo trang bị trường đoản cú từ 1 partition.

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

*

Trong bức ảnh sinh hoạt trên, Server 1 giữ lại partition 0 cùng 3 cùng server 2 giữ những partition 1 và 2. Chúng ta bao gồm 2 consumer groups là A cùng B. Group A bao gồm 2 consumer cùng group B bao gồm 4 consumer. Consumer group A bao gồm 2 consumer, vậy yêu cầu từng consumer đang hiểu message tự 2 partition.Trong consumer group B, số lượng consumer ngay số partition đề nghị mỗi consumer đã gọi message từ là 1 partition.

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

Ví dụ: nếu như Kafka được thông số kỹ thuật để giữ lại những messages trường thọ vào một ngày và consumer bị down lâu bền hơn 1 ngày, lúc đó consumer vẫn mất message. Tuy nhiên, giả dụ consumer chỉ bị down trong vòng 1 giờ đồng hồ đeo tay, khi đó nó trọn vẹn có thể bắt đầu hiểu lại message từ bỏ offset tiên tiến nhất.

Vai trò của Zookeeper

Zookeeper nhập vai trò là khu vực lưu trữ dữ liệu phân tán dạng key-value. Nó được về tối ưu hóa đến tác vụ đọc nkhô cứng tuy thế ghi chậm. Kafka áp dụng Zookeeper nhằm triển khai vấn đề bầu chọn leader của Kafka broker và topic partition. Zookeeper cũng có phong cách thiết kế mang lại kỹ năng Chịu lỗi cao, do đó Kafka phụ thuộc vào khá nhiều vào Zookeeper.

Nó cũng rất được sử dụng để tàng trữ toàn bộ metadata nlỗi là:

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

Producer cùng consumer ko can dự trực tiếp với Zookeeper để tìm hiểu leader của partition hay đầy đủ metadata không giống, cố vào đó bọn chúng sẽ truy nã vấn metadata tới Kafka broker – tiếp đến Kafka tương tác cùng với Zookeeper cùng gửi bình luận metadata về lại cho cái đó.

Kết luận

Kafka sẽ gấp rút đổi thay lao động chính của con đường ống tài liệu đối với bất kỳ tổ chức như thế nào. Kafka cho phép các bạn gồm một lượng to các messages đi sang 1 phương tiện tập trung cùng lưu trữ chúng nhưng mà không cần thiết phải lo ngại gì về phần lớn vấn đề nhỏng năng suất tuyệt mất đuối tài liệu. Kafka hoàn toàn có thể là thành phần trung trung khu trong quy mô bản vẽ xây dựng hướng sự khiếu nại (event-driven) cùng được cho phép chúng ta phân bóc giữa áp dụng này cùng với áp dụng không giống.

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 *