Cập nhật ngày 09 tháng 4 năm 2018 : Ngày nay, bạn cũng có thể sử dụng ksqlDB , cơ sở dữ liệu phát trực tuyến sự kiện cho Kafka, để xử lý dữ liệu của bạn trong Kafka. ksqlDB được xây dựng dựa trên API Luồng của Kafka và nó cũng đi kèm với hỗ trợ hạng nhất cho "luồng" và "bảng".
Sự khác biệt giữa API người tiêu dùng và API luồng là gì?
API Luồng của Kafka ( https://kafka.apache.org/documentation/streams/ ) được xây dựng dựa trên các nhà sản xuất và khách hàng tiêu dùng của Kafka. Nó mạnh hơn đáng kể và cũng biểu cảm hơn khách hàng tiêu dùng Kafka. Dưới đây là một số tính năng của API Kafka Streams:
- Hỗ trợ ngữ nghĩa xử lý chính xác một lần (phiên bản Kafka 0.11+)
- Hỗ trợ xử lý ở trạng thái có khả năng chịu lỗi (tất nhiên cũng như không trạng thái) bao gồm kết nối trực tuyến , tổng hợp và cửa sổ . Nói cách khác, nó hỗ trợ quản lý trạng thái xử lý ứng dụng của bạn.
- Hỗ trợ xử lý sự kiện thời gian cũng như xử lý dựa trên xử lý thời gian và tiêu hóa thời gian
- Có hỗ trợ hạng nhất cho cả luồng và bảng , đó là nơi xử lý luồng đáp ứng cơ sở dữ liệu; trong thực tế, hầu hết các ứng dụng xử lý luồng cần cả hai luồng VÀ bảng để triển khai các trường hợp sử dụng tương ứng của chúng, vì vậy nếu công nghệ xử lý luồng thiếu một trong hai nội dung trừu tượng (giả sử không hỗ trợ bảng) thì bạn sẽ bị mắc kẹt hoặc phải tự triển khai chức năng này theo cách thủ công (chúc may mắn với điều đó...)
- Hỗ trợ các truy vấn tương tác (còn được gọi là 'trạng thái có thể truy vấn ') để hiển thị kết quả xử lý mới nhất cho các ứng dụng và dịch vụ khác
- Là biểu cảm hơn: nó tàu với (1) một chương trình phong cách chức năng DSL với các hoạt động như
map
, filter
, reduce
cũng như (2) một phong cách bắt buộc API Processor cho ví dụ làm phức tạp xử lý sự kiện (CEP), và (3), bạn thậm chí có thể kết hợp DSL và API bộ xử lý.
Xem http://docs.confluent.io/current/streams/introduction.html để có phần giới thiệu chi tiết hơn nhưng vẫn ở cấp độ cao về API Kafka Streams, cũng sẽ giúp bạn hiểu sự khác biệt đối với người tiêu dùng Kafka cấp thấp hơn khách hàng. Ngoài ra còn có một hướng dẫn dựa trên Docker cho API Kafka Streams , mà tôi đã viết blog về đầu tuần này.
Vậy API Kafka Streams khác với API này như thế nào vì nó cũng sử dụng hoặc tạo ra các thông báo tới Kafka?
Có, API Kafka Streams vừa có thể đọc dữ liệu cũng như ghi dữ liệu vào Kafka.
và tại sao nó lại cần thiết vì chúng tôi có thể viết ứng dụng tiêu dùng của riêng mình bằng API người tiêu dùng và xử lý chúng khi cần thiết hoặc gửi chúng đến Spark từ ứng dụng tiêu dùng?
Có, bạn có thể viết ứng dụng tiêu dùng của riêng mình - như tôi đã đề cập, API luồng Kafka sử dụng chính ứng dụng khách hàng tiêu dùng Kafka (cộng với ứng dụng khách nhà sản xuất) - nhưng bạn phải triển khai thủ công tất cả các tính năng độc đáo mà API luồng cung cấp . Xem danh sách ở trên để biết mọi thứ bạn nhận được "miễn phí". Do đó, đây là một trường hợp hiếm hoi mà người dùng chọn khách hàng tiêu dùng cấp thấp hơn là API Kafka Streams mạnh mẽ hơn.