Bỏ qua, tới nội dung

Learn · Xử lý dữ liệu: batch và stream · Bài 4 trên 6

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

5 phútTrung cấpKiểm tra thông tin: Read in English

Bài 4 trên 6 · Xử lý dữ liệu: batch và stream
  1. Batch và stream là gì? Hiểu nhanh qua một mô phỏng
  2. Nên chọn batch hay stream cho bài toán của bạn?
  3. Cửa sổ thời gian, event time và dữ liệu đến trễ trong stream
  4. Công nghệ xử lý dữ liệu: chọn gì theo ngôn ngữ và cloud
  5. Dựng pipeline xử lý dữ liệu rẻ bằng TypeScript trên Cloudflare, AWS
  6. Dựng pipeline batch bằng Spark và stream bằng Kafka, Flink

Tóm tắt

  • 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

Chọn một đáp án để xem vì sao đúng hay sai.

  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