# Công nghệ xử lý dữ liệu: chọn gì theo ngôn ngữ và cloud

> Spark, Flink, Kafka, Airflow và các dịch vụ trên Cloudflare, AWS, Google Cloud, Azure làm gì. Chọn theo ba lớp: tiêu chuẩn ngành, cloud, ngôn ngữ.

Canonical URL: https://learn.chabulab.com/vi/system-design/cong-nghe-xu-ly-du-lieu. Kiểm tra thông tin: 2026-11-03.

- Kafka vận chuyển sự kiện, Flink và Spark tính toán, Airflow đặt lịch. Mỗi cái một vai trò.
- Dùng dịch vụ của chính cloud bạn đang chạy thường là cách nhanh và rẻ nhất để bắt đầu.
- Thứ tự ưu tiên khi chọn: SQL trước, rồi ngôn ngữ bạn đang dùng, cuối cùng mới học thêm ngôn ngữ khác.

Nhiều công cụ nổi tiếng nhất viết bằng Java, nhưng bạn dùng được chúng qua SQL, Python hoặc TypeScript mà không cần biết Java. Bài này xếp chúng theo ba lớp.

> Phiên bản trong bài được kiểm tra ngày 03/11/2026 và đổi rất nhanh. Hãy đối chiếu trang chính thức trước khi quyết định.

## Những công cụ nào là tiêu chuẩn ngành?

Đây là những cái tên bạn sẽ gặp ở hầu hết công ty dữ liệu lớn. Nên biết vai trò của chúng, dù bạn không dùng ngay.

| Công cụ | Dùng cho | Phiên bản | Vai trò |
| --- | --- | --- | --- |
| Apache Spark | Batch | 4.3.0 | Engine batch phân tán phổ biến nhất. Viết bằng SQL, Python hoặc Scala. Có dịch vụ như Databricks, AWS EMR và Glue, Google Dataproc |
| dbt | Batch | | Biến đổi dữ liệu bằng SQL ngay trong data warehouse |
| Apache Airflow | Batch | 3.3.2 | Điều phối pipeline: lịch, thứ tự, thử lại, chạy lại theo ngày. Cùng nhóm: Dagster, Prefect |
| Apache Kafka | Stream | 4.4.0 | Log sự kiện phân tán. Có client cho hầu hết ngôn ngữ. Từ 4.0 chạy bằng KRaft, không còn ZooKeeper |
| Apache Flink | Stream | 2.3.0 | Mạnh về trạng thái và event time. Dùng bằng SQL là chính, không bắt buộc viết Java |
| Spark Structured Streaming | Stream | | Cùng API với Spark batch. Mặc định micro-batch |

Cái giá của nhóm này là vận hành: cluster, cấu hình, theo dõi. Nếu quy mô chưa lớn, xem lớp 2 trước.

## Mỗi cloud có dịch vụ gì cho cùng một việc?

Dùng dịch vụ của chính nền tảng bạn đang chạy thường là cách nhanh và rẻ nhất để bắt đầu.

| Vai trò | Cloudflare | AWS | Google Cloud | Azure |
| --- | --- | --- | --- | --- |
| Chạy theo lịch | Cron Triggers + Workers | EventBridge Scheduler + Lambda | Cloud Scheduler + Cloud Run jobs | Functions (timer), Data Factory |
| Nhận và đệm sự kiện | Queues, Pipelines | SQS, SNS, EventBridge, Kinesis Data Streams | Pub/Sub | Event Hubs, Service Bus |
| Kafka quản lý sẵn | Dùng Queues, hoặc Kafka ngoài | Amazon MSK | Managed Service for Apache Kafka | Event Hubs (giao diện Kafka) |
| Xử lý stream có trạng thái | Queue consumer + Durable Objects, Pipelines (SQL) | Lambda, Managed Service for Apache Flink | Dataflow | Stream Analytics, Functions |
| Workflow bền vững | Workflows | Step Functions | Workflows | Durable Functions |
| Lưu và truy vấn phân tích | R2 + Data Catalog + R2 SQL, D1, Analytics Engine | S3 + Athena, S3 Tables, Redshift | BigQuery | Synapse, Fabric |
| Batch quy mô lớn | Pipelines + R2 SQL; Spark hoặc DuckDB ngoài đọc Iceberg trên R2 | EMR, Glue | Dataproc, Dataflow, BigQuery | Synapse Spark, Databricks, Data Factory |

Đáng chú ý: Cloudflare mua lại Arroyo, một engine stream SQL viết bằng Rust, để làm nền cho Pipelines. Pipelines nhận sự kiện qua HTTP hoặc Worker, biến đổi bằng SQL rồi ghi ra R2 dưới dạng Iceberg hoặc Parquet.

## Nên chọn gì theo ngôn ngữ đang dùng?

Trình tự ưu tiên: dùng SQL trước, rồi ngôn ngữ của bạn, cuối cùng mới học thêm ngôn ngữ khác.

### TypeScript và JavaScript

- **Chạy trên hạ tầng JS:** Cloudflare Workers với Queues và Workflows, hoặc AWS Lambda với SQS và Step Functions.
- **Workflow bền vững:** Cloudflare Workflows, Vercel Workflows, Inngest, Trigger.dev, Upstash Workflow, Temporal.
- **Hàng đợi trên Redis:** BullMQ cho Node.js, hợp khi đã có Redis.
- **Kafka từ TypeScript:** Confluent JavaScript client.
- **Phân tích:** SQL trên D1, Athena, BigQuery hoặc DuckDB.

### Python

- **Batch:** PySpark. DuckDB và Polars cho dữ liệu vừa chạy trên một máy, rất nhẹ.
- **Điều phối:** Airflow, Dagster, Prefect.
- **Stream:** PyFlink, Apache Beam Python SDK, client Kafka của Confluent.
- **Workflow bền vững:** Temporal Python SDK.

### Java, Kotlin và Scala

Đầy đủ tính năng nhất: Flink, Kafka Streams, Spark gốc, Beam Java. Hợp khi đội đã dùng JVM và cần kiểm soát sâu. Đổi lại, nặng hơn để bắt đầu và vận hành.

### Go và Rust

- **Go:** Temporal Go SDK, franz-go (client Kafka), Redpanda Connect.
- **Rust:** Arroyo, engine stream SQL nay thuộc Cloudflare.

## Xu hướng gần đây là gì?

- **Stream vào Iceberg bằng SQL.** Cloudflare Pipelines với R2 Data Catalog, AWS Kinesis với S3 Tables. Dữ liệu vào thẳng bảng truy vấn được.
- **Workflow bền vững cho AI agent.** Retry, chờ duyệt và chạy tiếp sau sự cố mà không viết hàng đợi thủ công.
- **Kafka bỏ ZooKeeper.** Từ 4.0 cluster chạy hoàn toàn bằng KRaft nên dễ vận hành hơn.
- **Flink 2.x tách trạng thái ra khỏi máy tính toán.** Trạng thái lớn lưu ở kho từ xa nên mở rộng và phục hồi nhanh hơn.
- **Spark có Real-Time Mode.** Theo Databricks, độ trễ xuống cỡ vài trăm mili giây. Đây là số do nhà cung cấp công bố.
- **Batch và stream dùng chung một bảng.** Iceberg, Delta và Paimon cho phép ghi bằng stream và đọc bằng batch.

## Kiểm tra lại

1. Kafka giữ vai trò chính nào trong một pipeline stream?
   Xem đáp án: Nhận, lưu và vận chuyển luồng sự kiện. Kafka là log phân tán nối nguồn với bộ xử lý. Việc tính toán do Flink, Kafka Streams hoặc Spark làm. Đặt lịch là việc của Airflow.
2. Đội của bạn đang chạy trên AWS và cần một hàng đợi sự kiện đơn giản. Nên xem gì trước?
   Xem đáp án: SQS, dịch vụ sẵn có của AWS. Dịch vụ của chính nền tảng bạn đang chạy thường nhanh và rẻ nhất để bắt đầu. Kafka chỉ cần khi số liệu đòi hỏi.

## Nguồn

- [Apache Flink: phiên bản](https://flink.apache.org/downloads/)
- [Apache Kafka: các dòng phát hành (endoflife.date)](https://endoflife.date/apache-kafka)
- [Apache Spark: các dòng phát hành (endoflife.date)](https://endoflife.date/apache-spark)
- [Apache Airflow: các dòng phát hành (endoflife.date)](https://endoflife.date/apache-airflow)
- [Cloudflare Pipelines](https://developers.cloudflare.com/pipelines/)
- [Cloudflare mua lại Arroyo](https://blog.cloudflare.com/cloudflare-acquires-arroyo-pipelines-streaming-ingestion-beta/)
- [Confluent JavaScript client cho Apache Kafka](https://docs.confluent.io/kafka-clients/javascript/current/overview.html)
- [Databricks: Real-Time Mode cho Spark Structured Streaming](https://www.databricks.com/blog/announcing-general-availability-real-time-mode-apache-spark-structured-streaming-databricks)
