close

Kafka là gì? 5 cách sử dụng Kafka phổ biến

Tác giả: TinoHost Ngày cập nhật: 28/07/2021 Chuyên mục: Webmasters
Disclosure
Website Wiki.tino.org được cung cấp bởi Tino Group. Truy cập và sử dụng website đồng nghĩa với việc bạn đồng ý với các điều khoản và điều kiện trong chính sách bảo mật - điều khoản sử dụng nội dung. Wiki.tino.org có thể thay đổi điều khoản sử dụng bất cứ lúc nào. Việc bạn tiếp tục sử dụng Wiki.tino.org sau khi thay đổi có nghĩa là bạn chấp nhận những thay đổi đó.
Why Trust Us
Các bài viết với hàm lượng tri thức cao tại wiki.tino.org được tạo ra bởi các chuyên viên Marketing vững chuyên môn và được kiểm duyệt nghiêm túc theo chính sách biên tập bởi đội ngũ biên tập viên dày dặn kinh nghiệm. Mọi nỗ lực của chúng tôi đều hướng đến mong muốn mang đến cho cộng đồng nguồn thông tin chất lượng, chính xác, khách quan, đồng thời tuân thủ các tiêu chuẩn cao nhất trong báo cáo và xuất bản.

Nếu bạn mới tìm hiểu về Kafka bạn sẽ thấy nhiều điều khá lạ, vì Confluent định nghĩa Kafka là một nền tảng stream, nhiều bài viết khác cũng đi theo định hướng này; còn nhiều bài viết khác lại nói về Kafka là một message broker. Vậy, Tino Group sẽ giúp bạn hiểu hơn về Kafka là gì, Apache Kafka là gì và cả Kafka streaming nhé!

Kafka là gì?

Apache Kafka là gì?

Apache Kafka là một hệ thống phân tán messagedistributed messaging system, Kafka được phát triển và duy trì bởi Apache, vì thế Kafka (message broker) có tên là Apache Kafka.

kafka-la-gi

Giống như những chương trình/ phần mềm message broker khác, Kafka được phát triển theo mô hình public/subscribe. Bên public dữ liệu được gọi là producer và bên nhận dữ liệu theo các topic sẽ được gọi là consumer.

Bạn có thể tìm hiểu thêm về message broker và các từ tiếng Anh được giữ nguyên trong bài viết Kafka tại đây.

Kafka stream là gì?

Kafka stream là một nền tảng streaming phân tán sự kiệndistributed event streaming platform. Được phát triển dựa trên nền tảng Apache Kafka distributed messaging system bởi Linkedin vào năm 2011, sau đó trở thành dự án mã nguồn mở của Apache. Cho đến thời điểm hiện tại, Apache Kafka được phân phối chính thức và đầy đủ nhất bởi Confluent thông qua Confluent Platform.

Nền tảng Kafka stream được viết bởi ngôn ngữ Scala và Java nhằm mục đích cung cấp dịch vụ xử lý sự kiện dựa trên thời gian thực với độ trễ thấp và thông lượng cao. Vì thế, Kafka được hơn 80% doanh nghiệp trong top 100 của Fortune tin dùng.

kafka-la-gi

Bài viết sẽ đi theo hướng Kafka stream được sử dụng thông dụng trong thời điểm hiện tại.

Kafka được sử dụng để làm gì?

Kafka là một kho dữ liệu phân tán được tối ưu hóa để xử lý dữ liệu theo thời gian thực. Nếu là một nền tảng streaming trực tuyến sẽ cần phải xử lý dữ liệu một cách liên tục và tuần tự tăng dần. Sau đây sẽ là 3 chức năng chính Kafka sẽ cung cấp cho người dùng:

  • Publish và subscribe các stream của record (luồng dữ liệu).
  • Khả năng lưu trữ các stream of record một cách hiệu theo thứ tự các record được tạo.
  • Khả năng xử lý stream of record theo thời gian thực

Vì sao nên sử dụng Kafka?

Vì Kafka là một dự án mã nguồn mở được đóng gói hoàn chỉnh, với hiệu năng tốt, dễ dàng mở rộng mà không cần phải tạm dừng hệ thống cùng với đó là khả năng chịu lỗi cao.

Nếu bạn đang xây dựng một phần mềm, một trang web hiển thị thông tin cho người dùng theo thời gian thực, Kafka chính là một lựa chọn tối ưu. Bạn có thể sử dụng Kafka để nhập và lưu trữ dữ liệu trong quá trình phát trực tiếp; bạn cũng có thể sử dụng như một phần mềm message broker giúp 2 ứng dụng/ nền tảng có thể giao tiếp với nhau.

Những lợi ích khiến bạn cân nhắc về việc sử dụng Kafka:

  • Khả năng mở rộng: mô hình phân vùng nhật ký của Kafka cho phép dữ liệu của bạn có thể phân phối trên nhiều máy chủ và giúp bạn có thể mở rộng máy chủ mở rộng khi không còn phù hợp.
  • Nhanh: Với cách xử lý tách các luồng dữ liệu, vì thế độ trễ rất thấp làm cho tốc độ trở nên nhanh hơn.
  • Khả năng chịu lỗi và độ bền: Các gói dữ liệu của bạn có thể được sao chép và phân phối trên nhiều server khác nhau. Vì thế, khi có một sự cố xảy ra, dữ liệu của bạn ít bị lỗi hơn và bền hơn.

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

Kafka sử dụng kết hợp 2 mô hình chính là queuing và publish-subscribe nhằm cung cấp lợi ích tốt nhất cho người dùng.

Queuing cho phép dữ liệu có thể được xử lý phân tán trên nhiều consumer và tạo ra khả năng mở rộng cao.

kafka-la-gi

Publish-subscribe sẽ tiếp cận cùng lúc nhiều subscribe và các message sẽ được gửi đến nhiều subscribe, không thể sử dụng để phân tán công việc cho nhiều worker.

kafka-la-gi

Các khái niệm cần nắm khi tìm hiểu về Kafka

Producer

Trước khi xử lý, Kafka sẽ thực hiện phân loại và lưu trữ các message dựa theo topic của chúng. Producer có nhiệm vụ publish message vào các topic thích hợp. Sau đó, khi dữ liệu được gửi đến partition của topic được lưu trữ tại Broker.

Consumer

Các consumer sẽ được định danh theo từng group name, nhiều consumer có thể cùng nằm trong một topic.

kafka-la-gi

Partition

Partition là nơi lưu trữ dữ liệu cho các topic, mỗi topic có thể có một hoặc nhiều Partition khác nhau. Mỗi Partition sẽ được gán một ID và lưu trữ dữ liệu có định.

Trong 1 Kafka cluster, một Partition có thể được sao chép thành nhiều bản và có một bản chính leader chịu trách nhiệm đọc ghi dữ liệu; các bản còn lại sẽ có tên là follower. Khi bản chính bị lỗi,sẽ có một bản follower lên thay thế thành leader.

Broker

Kafka cluster là một nhóm các server và mỗi nhóm server này sẽ được gọi là broker.

kafka-la-gi

Zookeeper

Zookeeper là một chức năng nhằm để quản lý và bố trí lại các broker.

Một số Use Case Kafka tiêu biểu

Sử dụng như một message broker

Bạn có thể sử dụng Kafka để thay thế cho các Message broker như ActiveMQ hoặc RabbitMQ.

Website Activity Tracking

Đây là một cách thức truyền thống để sử dụng Kafka, bạn có thể sử dụng để xây dựng website và đăng tải nội dung theo thời gian thực. Tất cả các dữ liệu như: lượt xem trang, hoạt động tìm kiếm và bất cứ một hoạt động nào khác trên trang của bạn đều sẽ được tạo thành các topic. Hoạt động theo dõi website này sẽ giúp bạn có thể phân tích được hành vi người dùng trên trang và thu hút nhiều người đọc hơn.

kafka-la-gi

Đo lường

Bạn có thể sử dụng Kafka để xây dựng dữ liệu giám sát các hoạt động. Đồng nghĩa với việc bạn đang tập hợp số liệu thống kê từ các nguồn phân tán trên trang nhằm tạo ra một nguồn dữ liệu tổng hợp.

Sử dụng để tạo Log

Tổng hợp log hay nhật ký hoạt động, đây là phương pháp nhiều người sử dụng Kafka nhằm để tóm tắt các chi tiết và cung cấp bản ghi rõ ràng về dữ liệu sự kiện nhằm để xử lý về sau.

Stream Processing

Đây là cách sử dụng phổ biến nhất ở thời điểm hiện tại của Kafka, là một hệ thống được phát triển để thích hợp với việc xử lý dữ liệu trong thời gian thực. Mỗi khi dữ liệu được thêm mới vào topic sẽ ngay lập tức được ghi vào hệ thống và truyền đến cho bên nhận dữ liệu. Với thư viện Kafka Streams được tích hợp từ phiên bản 0.10.0.0 có khả năng xử lý stream nhẹ nhưng vô cùng mạnh mẽ.

Ngoài ra, bạn cũng có thể sử dụng các công cụ mã nguồn mở khác như: Apache Storm và Apache Samza để xử lý.

kafka-la-gi

Tổng kết lại, Tino Group đã giúp bạn hiểu được về Kafka là gì cũng như bạn cũng đã có thể thấy rằng Kafka rất đáng để sử dụng. Cuối cùng, Tino Group chúc bạn gặt hái được nhiều thành công trong việc lập trình!

Bài viết có tham khảo tại: Kafka Use Cases, APACHE Kafka.

Những câu hỏi thường gặp về Kafka

Cách triển khai một Kafka đơn giản như thế nào?

Để triển khai một Kafka đơn giản, trước tiên, bạn cần tài bộ cài đặt Kafka mới nhất về tại đây. Để quá trình triển khai một cách thuận lợi hơn, bạn có thể tham khảo video và bài viết Apache Kafka Quickstart nhé!

Tài liệu tìm hiểu sâu Kafka ở đâu?

Để tìm hiểu và khai thác Kafka hiệu quả hơn, bạn có thể xem bộ tài liệu hướng dẫn chính thức của Kafka tại đây, không chỉ hướng dẫn bạn các khái niệm cơ bản. Kafka sẽ giới thiệu cho bạn nhiều hơn về các API, cách kết nối, thiết kế, cách vận hành và bảo mật Kafka rất đơn giản dễ hiểu. Điều kiện để học tối ưu nhất là bạn phải biết tiếng Anh.

RabbitMQ là gì?

RabbitMQ là một chương trình message broker mã nguồn mở giống với Kafka. Tuy nhiên, khác với Kafka, mỗi message của RabbitMQ chỉ đi đến duy nhất một consumer.

Apache Software Foundation là gì?

Apache Software Foundation là một tổ chức phát triển phần mềm mã nguồn mở và phi lợi nhuận lớn nhất thế giới với hơn 350 dự án mã nguồn mở. Nếu bạn thích thú với Apache Software Foundation, bạn có thể tìm hiểu thêm về tổ chức này tại đây.

Chia sẻ một chút thông tin về bạn. Những thông tin này có thể được công khai.

Xem thêm bài viết

Bài viết liên quan

CÔNG TY CỔ PHẦN TẬP ĐOÀN TINO
Trụ sở chính: L17-11, Tầng 17, Tòa nhà Vincom Center, Số 72 Lê Thánh Tôn,  Phường Bến Nghé, Q. 1, TP. Hồ Chí Minh

Văn phòng kinh doanh: Số 42 Trần Phú, Phường 4, Quận 5, TP HCM
GPKD số 0315679836 do Sở KH và ĐT TP Hồ Chí Minh cấp
Hotline: 0364 333 333
Góp ý/Phản ánh dịch vụ: 0933 000 886