So sánh Apache Kafka và Amazon Kinesis

Nhu cầu xử lý stream data ngày càng tăng, hệ quả là ngày càng nhiều các nền tảng và framework được đưa vào sử dụng để giảm thiểu tính phức tạp của khi cần xây dựng hệ thống xử lý dữ liệu băng thông lớn. Xử lý thời gian thực được ứng dụng trong các trường hợp thông dụng như Web Analytics và Machine Learning và cho kết quả chính xác hơn, có tính thời gian thực hơn thay vì mất hàng giờ như trước.

Trong khi các frameworks Pub-Sub truyền thống như RabbitMQActiveMQ đã xuất hiện để giải quyết các thách thức đó, Apache Kakfa là framework mã nguồn mở phát triển tại Linkedin, trở thành lựa chọn cho rất nhiều các trường hợp xử lý luồng dữ liệu do được cấu trúc tốt, khả năng mở rộng và thiết kế bền vững. Nhược điểm của Kakfa là thiếu thiết kế đảm bảo dự phòng trên môi trường Cloud, đòi hỏi mất nhiều thời gian và công súc vận hành của đội ngũ kỹ thuật.

Giải pháp thay thế Kakfa trên AWS với các tính năng tương tự là Amazon Kinesis. Trong bài viết này sẽ đưa ra so sánh giữa Apache Kakfa và Amazon Kinesis. Tuy nhiên để đánh giá, chúng ta cần có kiến thức nền tảng về Publisher/Subcribe Model.

Khái niệm chung về Pub/Sub

Trong hệ thống phân tán lớn, messaging là một thành phần vô cùng quan trọng. Hiện nay, có 2 messaging model phổ biến là message queuing và pub/sub messaging.

Pub/Sub messaging cũng làm nhiệm vụ giống như message queuing. Tuy nhiên, cơ chế của pub/sub có khác biệt:

  • Pub – Publish: producer sẽ đẩy data vào một chanel.
  • Sub – Subscribe: consumer đăng ký nhận dữ liệu từ một chanel.

1. Publish/Subscribe (Pub/Sub) Messaging

Mang đến khả năng mở rộng, linh hoạt và tin cậy để gửi thông báo sự kiện cho các ứng dụng phân tán. Bằng cách cung cấp nhiều tin nhắn không đồng bộ, nhiều người, tách riêng người gửi và người nhận, phương pháp này cho phép liên lạc an toàn và khả dụng cao giữa các ứng dụng được viết độc lập.

Pub / Sub cung cấp tin nhắn bền vững, độ trễ thấp, giúp tích hợp nhiều ứng dụng một cách nhanh chóng. Tin nhắn Pub / Sub cho phép các kiến ​​trúc hướng sự kiện và thông báo sự kiện không đồng bộ, đồng thời cải thiện hiệu suất, độ tin cậy và khả năng mở rộng trong môi trường phân tán.

2. Message Broker/Message Queue

Message Broker cho phép các ứng dụng liên lạc bằng cách gửi tin nhắn / sự kiện cho nhau. Các ứng dụng xuất bản tin nhắn cho nhà môi giới tin nhắn cung cấp lưu trữ tin nhắn tạm thời và các ứng dụng tiêu dùng sẽ tiêu thụ những tin nhắn đó.

Apache Kakfa

Là giải pháp Pub-Sub mã nguồn mở được phát triển khởi đầu tại Linkedin. Apache Kafka bao gồm nhiều node Message Broker nhận bản tin từ phía leader và sao chép nguyên bản gửi lai cho các broker còn lại (follower). Mô hình phân tán của Apache Kakfa cho phép hệ thống mở rộng theo chiều ngang và cung cấp tính sẵn sàng khi có node lỗi.

Các thành viên leader và follower của broker trong cluster sẽ được theo dõi và quản trị thông qua Apache Zookeeper là một framework mã nguồn mở khác.

Amazon Kinesis

Là giải pháp message dạng Pub-Sub do Amazon cung cấp và có những tính năng tương tự Apache Kafka. Sử dụng Kinesis cho phép người dùng không cần quan tâm đến công tác bảo trì hệ thống.

Apache Kafka vs Amazon Kinesis

ItemsKakfaKinesis
Developed/Hosted ByLinkedInAmazon
SoftwareOpen-SourceProprietary
SDK SupportKafka SDK supports JavaAWS SDK supports Android, Java, Go, .NET
Configuration & FeaturesMore control on configuration and better performance.Number of days/shards can only be configured
Data Stored InKafka PartitionKinesis Shard
ReliabilityReplication factor can be configuredKinesis writes synchronously to 3 different machines/data-centers
PerformanceKafka winsKinesis writes each message synchronously to 3 different machines
Configuration StoreApache ZookeeperAmazon DynamoDB
SetupWeeksCouple Of hours
Data RetentionConfigurable7 days at max
Log CompactionSupportedOnly can store logs for 7 days
Processing EventsMore than 1000s of events/secAtmost 1000s of events/sec
CheckpointingOffsets stored in special topicDynamoDB
OrderingPartion levelShard level
Human CostsRequire human support for installing and managing their clusters, and also accounting for requirements such as high availability, durability, and recoveryKinesis is just about pay and use
Producer ThroughputKafka WinsKinesis is bit slower than Kafka
Incident Risk/MaintainenceMore In KafkaAmazon takes care
Ordered sequence of immutable data recordsKafka TopicKinesis Stream
Each record has a unique number calledOffset numberSequence number
ConceptsKafka StreamsKinesis Analytics

Phân tích chi phí

Ở đây mọi thứ hơi phức tạp khi so sánh chi phí sử dụng. Môt bên sử dụng Kakfa yêu cầu chi phí nhân lực bảo trì, thiết lập cài đặt, trong khi đó sử dụng Kinesis thì không cần phải quan tâm đến việc đó.

Tuy nhiên theo khảo sát của enlyft.com, hiên có khoảng 12,792 công ty đã sử dụng Kakfa, chiếm tỉ lệ 15% thị trườn gấp 10 lần so với Amazon Kinesis tương ứng với 1%.

Tham khảo

https://medium.com/@shastri.shankar9/apache-kafka-vs-amazon-kinesis-b55821c7f51f

https://viblo.asia/p/gioi-thieu-ve-pubsub-va-su-dung-python-va-redis-demo-pubsub-V3m5WbywlO7

https://dzone.com/articles/evaluating-message-brokers-kafka-vs-kinesis-vs-sqs

Leave a Reply

Your email address will not be published. Required fields are marked *