Thursday, November 14, 2024

[AWS] Kinesis Data Analytics and MSK Managed Streaming for Apache Kafka

-

Kinesis Data Analytics for SQL applications

Kinesis Data Analytics là một dịch vụ của Amazon Web Services (AWS) cho phép phát triển các ứng dụng SQL tiêu chuẩn để xử lý dữ liệu trực tiếp từ các luồng dữ liệu Kinesis. Nó cho phép bạn xử lý và phân tích dữ liệu theo thời gian thực với các truy vấn SQL tiêu chuẩn, để truy vấn và phân tích dữ liệu đang chảy qua các luồng dữ liệu Kinesis. Nó được sử dụng chủ yếu trong các trường hợp sử dụng phân tích dữ liệu trực tiếp từ các luồng dữ liệu như xử lý dữ liệu ngay lập tức, phân tích thời gian thực và thực hiện các hoạt động xử lý dữ liệu trực tuyến.

Kinesis Data Analytics (SQL application)

Kinesis Data Analytics for Apache Flink là một dịch vụ trên AWS để xử lý và phân tích dữ liệu theo thời gian thực sử dụng Apache Flink (Java, Scala hoặc SQL). Bằng cách sử dụng dịch vụ này, người dùng có thể chạy bất kỳ ứng dụng Apache Flink nào trên một cụm quản lý trên AWS, cung cấp tài nguyên tính toán, tính toán song song và tự động mở rộng, sao lưu ứng dụng (được thực hiện dưới dạng các checkpoint và snapshots). Ngoài ra, người dùng có thể sử dụng bất kỳ tính năng lập trình Apache Flink nào. Tuy nhiên, Flink không đọc dữ liệu từ Firehose và người dùng cần sử dụng Kinesis Analytics for SQL thay thế.

Sơ đồ này cho thấy quá trình dữ liệu chảy từ Kinesis Data Streams hoặc Amazon Managed Streaming for Apache Kafka (MSK) được chuyển đến Kinesis Data Analytics for Apache Flink để thực hiện các phân tích thời gian thực. Kinesis Data Analytics for Apache Flink sẽ đọc dữ liệu từ các nguồn này, sau đó áp dụng các truy vấn Apache Flink để phân tích và xử lý dữ liệu trong thời gian thực. Kết quả phân tích có thể được đưa ra cho các đối tượng khác như Kinesis Data Streams hoặc Amazon Kinesis Data Firehose để lưu trữ hoặc xử lý tiếp theo.

Amazon Managed Streaming for Apache Kafka (Amazon MSK)

Thay vì sử dụng Amazon Kinesis, ta có thể sử dụng một giải pháp khác là Apache Kafka trên AWS, được quản lý hoàn toàn. Giải pháp này cho phép ta tạo, cập nhật và xóa các cluster, và MSK sẽ tạo và quản lý các node của Kafka brokers và Zookeeper nodes thay ta. Ta có thể triển khai cluster của MSK trên VPC của mình, đồng thời đảm bảo tính khả dụng cao bằng cách triển khai đến nhiều khu vực khác nhau (tối đa 3 khu vực). MSK cung cấp khả năng phục hồi tự động từ các lỗi thường gặp trong Apache Kafka. Dữ liệu được lưu trữ trên các ổ đĩa EBS trong thời gian tùy ý. Ngoài ra, MSK còn có tính năng Serverless, cho phép ta chạy Apache Kafka trên MSK mà không cần quản lý khả năng chứa. MSK sẽ tự động cấp phát tài nguyên và tự động mở rộng tính toán và lưu trữ.

Apache Kafka at a high level

Sơ đồ trên mô tả hoạt động của hệ thống xử lý dữ liệu streaming. Dữ liệu được thu thập từ các nguồn như Kinesis, IoT, RDS và các nguồn khác, sau đó được gửi đến các producer code để xử lý. Sau đó, dữ liệu được ghi vào các topic trong MSK Cluster, nơi mà dữ liệu sẽ được lưu trữ và nhân bản trên các broker khác nhau để đảm bảo tính sẵn sàng cao (high availability).

Tiếp đó, các consumer code sẽ lấy dữ liệu từ các topic trong MSK Cluster, sau đó sử dụng chúng cho mục đích phân tích và xử lý dữ liệu. Các consumer code này có thể sử dụng cho nhiều mục đích khác nhau, bao gồm lưu trữ dữ liệu vào S3, xử lý dữ liệu trên EMR, đưa ra các dự đoán và giải pháp thông qua SageMaker, hoặc lưu trữ dữ liệu trên RDS, vv.

Tổng quan, sơ đồ này cho phép thu thập và xử lý dữ liệu streaming từ nhiều nguồn khác nhau và sử dụng chúng cho nhiều mục đích khác nhau trong hệ thống phân tích dữ liệu.

Kinesis Data Streams vs. Amazon MSK

Kinesis Data Streams và Amazon MSK đều là dịch vụ streaming data trên AWS. Tuy nhiên, chúng có một vài điểm khác nhau.

Đầu tiên, giới hạn kích thước message của Kinesis Data Streams là 1 MB, trong khi đó MSK có giới hạn mặc định là 1 MB, nhưng có thể cấu hình cho giới hạn cao hơn (ví dụ như 10 MB).

Thứ hai, Data Streams của Kinesis có các Shards để phân phối dữ liệu, trong khi Kafka Topics của MSK có Partitions để phân phối dữ liệu. Tuy nhiên, MSK chỉ có thể thêm các partition vào một topic, trong khi Kinesis Data Streams có thể thêm hoặc xóa các shards.

Thứ ba, cả Kinesis Data Streams và MSK đều hỗ trợ mã hóa TLS cho dữ liệu trong khi truyền, và hỗ trợ mã hóa KMS khi lưu trữ dữ liệu.

Tóm lại, Kinesis Data Streams và Amazon MSK đều có tính năng và đặc điểm riêng của mình, và tùy thuộc vào nhu cầu của từng trường hợp sử dụng mà người dùng có thể chọn giữa hai dịch vụ này.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories