Bước tới nội dung

Apache Kafka

Bách khoa toàn thư mở Wikipedia

Đây là một phiên bản cũ của trang này, do Lvphuong (thảo luận | đóng góp) sửa đổi vào lúc 07:30, ngày 26 tháng 4 năm 2022. Địa chỉ URL hiện tại là một liên kết vĩnh viễn đến phiên bản này của trang, có thể khác biệt rất nhiều so với phiên bản hiện hành.

Apache Kafka[1]
Tác giả gốcLinkedIn
Nhà phát triểnApache Software Foundation
Phát hành lần đầutháng 1 năm 2011; 14 năm trước (2011-01)[2]
Phiên bản ổn định
3.1.0 / 24 tháng 1 năm 2022; 3 năm trước (2022-01-24)[3]
Kho mã nguồn
Viết bằngScala, Java
Hệ điều hànhCross-platform
Thể loạiStream processing, Message broker
Giấy phépApache License 2.0
Websitekafka.apache.org Sửa dữ liệu tại Wikidata

Apache Kafka là một nền tảng theo kiến trúc phân tán cho phép lưu trữ sự kiện và xử lý luồng dữ liệu (streaming) mã nguồn mở được phát triển bởi Apache Software Foundation được viết bằng Java và Scala.

Lịch sử

Kafka ban đầu được phát triển bởi LinkedIn và sau đó được mở nguồn vào đầu năm 2011. Jay Kreps, Neha NarkhedeJun Rao là các đồng sáng lập nền tảng phần mềm Kafka.[4] Xuất phát từ dự án Apache Incubator vào ngày 23 tháng 10 năm 2012, phần mềm được Jay Kreps đặt tên theo tên nhà văn Franz Kafka vì theo anh nó là "một hệ thống được tối ưu hóa cho việc viết", và anh rất thích các tác phẩm của Kafka.[5]

Nhiều hệ thống ứng dụng xuất bản dữ liệu số lượng lớn hoặc ứng dụng thời gian thực đã sử dụng Kafka, ví dụ quản lý đối sánh hành khách và tài xế tại Uber, nhiều dịch vụ thời gian thực trên toàn bộ LinkedIn.[6]

Kiến trúc

Kafka lưu trữ các gói tin dạng cặp khóa-giá trị quan trọng gửi đến từ nhiều tiến trình được gọi là producer. Dữ liệu có thể được phân hoạch thành các "phân vùng" (partition) trong các "chủ đề" (topic) khác nhau. Trong một phân vùng, các gói tin được sắp xếp theo thứ tự nghiêm ngặt của chúng (vị trí của một gói tin trong một phân vùng), được lập chỉ mục và lưu trữ cùng với một mốc thời gian. Các tiến trình khác được gọi là consumer có thể đọc tin nhắn từ các phân vùng. Để xử lý dữ liệu luồng stream, Kafka cung cấp Stream API cho phép viết các ứng dụng Java sử dụng dữ liệu từ Kafka và ghi kết quả trở lại Kafka. Apache Kafka cũng hoạt động với các hệ thống xử lý dữ liệu luồng (stream processing system) khác bên ngoài như Apache Apex, Apache Flink, Apache Spark, Apache Storm hay Apache NiFi.

Có năm API chính trong Kafka bao gồm:

  • Producer API - Cho phép ứng dụng xuất bản các luồng bản ghi.
  • Consumer API - Cho phép ứng dụng đăng ký các topic và xử lý các bản ghi luồng dữ liệu.
  • Connector API - Thực thi các consumer và producer API cho phép liên kết các topic với các ứng dụng sẵn có.
  • Streams API - API này chuyển đổi các dữ liệu luồng đầu vào thành đầu ra và tạo ra kết quả.
  • Admin API - được sử dụng để quản lý các topic, broker, và các đối tượng Kafka khác.

Các consumer và producer API xây dựng dựa trên giao thức truyền tin của Kafka và cung cấp triển khai tham chiếu cho các ứng dụng khách consumer và producer client xây dựng trên Java. Giao thức truyền tin cơ bản là một giao thức dạng nhị phân (binary protocol) mà các nhà phát triển có thể sử dụng để viết các ứng dụng consumer và producer client của riêng họ trên bất kỳ ngôn ngữ lập trình nào. Điều này cho phép Kafka thoát khỏi việc phụ thuộc vào hệ sinh thái Máy ảo Java (JVM).

Xem thêm

Liên kết ngoài

Tham khảo

  1. ^ "Apache Kafka at GitHub". github.com. Truy cập ngày 5 tháng 3 năm 2018.
  2. ^ "Open-sourcing Kafka, LinkedIn's distributed message queue". Truy cập ngày 27 tháng 10 năm 2016.
  3. ^ "Download". Truy cập ngày 21 tháng 9 năm 2021.
  4. ^ Li, Steven. "He Left His High-Paying Job At LinkedIn And Then Built A $4.5 Billion Business In A Niche You've Never Heard Of". Forbes (bằng tiếng Anh). Truy cập ngày 31 tháng 3 năm 2022.
  5. ^ "What is the relation between Kafka, the writer, and Apache Kafka, the distributed messaging system?". Quora (bằng tiếng Anh). Truy cập ngày 31 tháng 3 năm 2022.
  6. ^ "Apache Kafka". Apache Kafka (bằng tiếng Anh). Truy cập ngày 26 tháng 4 năm 2022.

Đọc thêm

  •  Ted Dunning, Ellen M. D. Friedman: Streaming Architecture. New Designs Using Apache Kafka and MapR. O’Reilly Verlag, Sebastopol 2016, ISBN 978-1-4919-5392-1.
  •  Neha Narkhede, Gwen Shapira, Todd Palino: Kafka: The Definitive Guide. Real-time data and stream processing at scale. O’Reilly Verlag, Sebastopol 2017, ISBN 978-1-4919-3616-0.
  •  William P. Bejeck Jr.: Kafka Streams in Action. Real-time apps and microservices with the Kafka Streams API. Manning, Shelter Island 2018, ISBN 978-1-6172-9447-1.