Kafka Là Gì

Kafka là 1 từ ngữ hơi thường dùng trong hầu như những nghành nghề thuộc nghành nghề công nghiệp ngày nay. Hầu như phần nhiều đơn vị bậc nhất bên trên thế giới phần nhiều sẽ áp dụng kafka vào nền tảng hạ tầng của bản thân. Nhưng câu hỏi đề ra nó là gì cùng sức tác động của chính nó ra sao?

Kafka là gì?

Kafka là căn cơ streaming phân tán, hoàn toàn có thể không ngừng mở rộng và là sản phẩm mã nguồn msống. Dự án Kafka thuở đầu được phát triển vị Linkedin kế tiếp vươn lên là dự án Apabít mã nguồn mlàm việc vào khoảng thời gian 2011. Kafka được viết bằng ngôn ngữ Scala với Java. Nó được viết ra nhằm mục đích mục đích hỗ trợ một gốc rễ nhưng mà gồm độ trễ phải chăng với thông lượng cao đến vấn đề xử lý những nguồn cung cấp tài liệu theo thời hạn thực.

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

Kafka vận động như thế nào?

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

*

Topic có thể được xem 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 có thể bao gồm size không hề nhỏ, những điều đó không nên tàng trữ toàn bộ tài liệu của một topic bên trên một node, dữ liệu đề xuất đươc phân chia ra thành nhiều partition sẽ giúp đỡ bảo toàn tài liệu tương tự như cách xử trí dữ liệu tiện lợi hơn. Partitions chất nhận được bọn họ thực hiện subcribe tuy vậy tuy nhiên cho tới một topic cụ thể bằng cách phân loại tài liệu vào một topic ví dụ ra cho những broker khác nhau (kafka node), mỗi partition hoàn toàn có thể được đặt lên một lắp thêm riêng biệt – cho phép những consumer gọi tài liệu từ 1 topic ra mắt một cách tuy nhiên song.

Để tăng tính khả dụng (availability) của partition, mỗi partition cũng đều có cực hiếm replicas của riêng biệt nó. Để dễ dàng nắm bắt hơn về kafka, bản thân đang trình bày bằng ví dụ cùng với 3 node/broker.

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

*

Tất cả những hành động ghi với phát âm tới một topic đã đa số phải đi qua partition leader khớp ứng và leader vẫn kết hợp để update tài liệu bắt đầu tới những replica parition không giống. Nếu leader bị hư, một trong số replica partition sẽ đảm nhận vai trò là 1 leader bắt đầu.

*

Để một producer/consumer ghi/đọc message xuất phát điểm từ 1 partition, chắc hẳn rằng bọn chúng cần phải biết leader là ai đề xuất không? Thông tin này cần được bao gồm sẵn ở một vị trí nào đó.

Kafka tàng trữ mọi biết tin những điều đó là metadata vào một hình thức dịch vụ Call là Zookeeper.

Cấu trúc dữ liệu log trong Kafka

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

*

Một nguồn dữ liệu đã ghi message vào log với một hoặc những consumer khác vẫn đọc message từ log trên thời gian họ sàng lọc.

Mỗi entry trong log được định danh bởi vì một con số Gọi là offset, hay nói một bí quyết dễ hiểu rộng, offphối y như chỉ số tuần trường đoản cú vào một array vậy.

Vì chuỗi/offmix chỉ có thể được duy trì trên từng node/broker cụ thể với cần yếu được duy trì so với tổng thể cluster, cho nên Kafka chỉ bảo vệ sắp xếp lắp thêm tự dữ liệu cho mỗi partition.

Xem thêm: #55 Câu Chúc Tết Hài Hước Dí Dỏm Vui Nhộn, Lời Chúc Tết Bá Đạo, Độc Lạ Cho Năm 2021

Parsistence data trong Kafa

Kafka lưu trữ tất cả message vào disk (không còn lưu giữ trên RAM) và được bố trí gồm thứ tự vào cấu tạo log được cho phép kafka tận dụng về tối nhiều kĩ năng đọc cùng ghi lên disk một cách tuần tự.

Nó là 1 trong giải pháp chọn lọc khá thịnh hành nhằm lưu trữ tài liệu trên disk nhưng mà vẫn rất có thể áp dụng buổi tối nhiều hóa hiệu năng, tất cả một vài lý do thiết yếu bên dưới đây:

Kafka dựa vào không ít vào pagecabịt của hệ điều hành đến câu hỏi lưu trữ tài liệu, sử dụng RAM bên trên máy một biện pháp công dụng.Kafka lưu trữ những messages dưới format 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 về tối ưu hóa kĩ năng zero-copy. Nghĩa là lúc hệ điều hành copy dữ liệu từ bỏ pagecabít trực tiếp thanh lịch socket, trọn vẹn bỏ lỡ áp dụng trung gian là kafka.Đọc/ghi dữ liệu đường tính bên trên disk nkhô cứng. Vấn đề tạo nên disk chậm rì rì bây chừ hay là vì quá trình tìm tìm trên disk những lần. Kafka gọi với ghi trên disk tuyến đường tính, cho nên vì thế nó có thể tận dụng tối đa tối nhiều hóa công suất bên trên disk.

Consumer cùng Consumer Group

Consumer phát âm những messages trường đoản cú bất kỳ partition làm sao, chất nhận được các bạn mở rộng lượng message được sử dụng tựa như nhỏng cách những producer cung cấp message.

Consumer cũng được tổ chức triển khai thành những consumer groups cho một topic cụ thể – từng consumer phía bên trong group gọi message từ 1 partition độc nhất, nhằm tách Việc gồm 2 consumer cùng xử lý gọi và một message gấp đôi cùng toàn bộ group giải pháp xử lý tất cả các message trường đoản cú toàn thể topic.

Nếu bạn gồm số consumer > số partition, khi ấy một số trong những consumer đang ở chế độ nhàn rỗi chính vì chúng không tồn tại partition nào để giải pháp xử lý.Nếu các bạn có số partition > số consumer, khi đó consumer sẽ nhận những message từ nhiều partition. Nếu các bạn tất cả số consumer = số partition, từng consumer đã phát âm message theo đồ vật từ từ 1 partition.

Để dễ dàng nắm bắt rộng, chúng ta liếc qua hình hình họa bên dưới đây

*

Trong bức ảnh làm việc trên, Server 1 giữ lại partition 0 và 3 và VPS 2 giữ lại các partition 1 với 2. Chúng ta có 2 consumer groups là A và B. Group A tất cả 2 consumer với group B gồm 4 consumer. Consumer group A gồm 2 consumer, vậy buộc phải từng consumer đã gọi message từ 2 partition.Trong consumer group B, con số consumer thông qua số partition bắt buộc từng consumer sẽ phát âm message từ một partition.

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

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

Vai trò của Zookeeper

Zookeeper vào vai trò là vị trí tàng trữ dữ liệu phân tán dạng key-value. Nó được tối ưu hóa mang lại tác vụ phát âm nkhô cứng nhưng mà ghi lừ đừ. Kafka áp dụng Zookeeper nhằm triển khai việc thai chọn leader của Kafka broker và topic partition. Zookeeper cũng được thiết kế với đến năng lực Chịu lỗi cao, vì vậy Kafka nhờ vào khá nhiều vào Zookeeper.

Nó cũng rất được thực hiện nhằm lưu trữ toàn bộ metadata như là:

Offset cho từng partition của consumer groupACL (Access control list) – được thực hiện mang lại vấn đề giới hạn truy vấ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 can dự trực tiếp cùng với Zookeeper để hiểu leader của partition giỏi các metadata khác, rứa vào kia chúng đang truy hỏi vấn metadata tới Kafka broker – tiếp đến Kafka can hệ cùng với Zookeeper và gửi đánh giá metadata về lại cho cái đó.

Kết luận

Kafka sẽ nhanh lẹ trở nên trụ cột của mặt đường ống tài liệu so với bất kỳ tổ chức triển khai làm sao. Kafka chất nhận được chúng ta bao gồm một lượng béo những messages đi qua một phương tiện tập trung với lưu trữ chúng nhưng không cần phải lo ngại gì về phần đa vấn đề nlỗi công suất xuất xắc mất đuối dữ liệu. Kafka rất có thể là thành phần trung trọng tâm trong quy mô phong cách thiết kế phía sự kiện (event-driven) cùng có thể chấp nhận được bạn phân tách bóc thân ứng dụng này với vận dụng không giống.