Xây dựng sàn giao dịch tốc độ cao: Kiến trúc đơn luồng và thuật toán Raft trên nền tảng đám mây

23 tháng 4, 2026·6 phút đọc

Frank Yu từ Coinbase chia sẻ triết lý kỹ thuật để xây dựng các sàn giao dịch tài chính bền bỉ và công bằng. Ông giải thích sức mạnh của kiến trúc đơn luồng kết hợp với thuật toán đồng thuận Raft để duy trì tính sẵn sàng 24/7. Bài thuyết trình cũng thảo luận về cách tính xác định cho phép triển khai rolling không thời gian chết và khả năng tái tạo lại lỗi hoàn hảo từ nhật ký sản phẩm.

Xây dựng sàn giao dịch tốc độ cao: Kiến trúc đơn luồng và thuật toán Raft trên nền tảng đám mây

Frank Yu, Giám đốc Kỹ thuật tại Coinbase, chuyên trách các nền tảng giao dịch, đã chia sẻ những bài học sâu sắc từ quá trình xây dựng và vận hành hệ thống trao đổi tài chính quy mô lớn. Trong bài thuyết trình tại QCon, ông tập trung vào cách đạt được thời gian phản hồi dưới mili-giây và duy trì thời gian hoạt động 24/7 trên đám mây bằng cách áp dụng các nguyên tắc kiến trúc phần mềm tối giản nhưng hiệu quả cao.

Yêu cầu khắt khe của hạ tầng tài chính

Sàn giao dịch không chỉ là nơi mua bán tài sản; đó là hạ tầng tài chính cốt lõi đòi hỏi sự chính xác tuyệt đối và công bằng. Theo Frank Yu, một sàn giao dịch phải đáp ứng các tiêu chuẩn không thể thỏa hiệp:

  • Đúng đắn (Correctness): Mọi trạng thái giao dịch phải được ghi nhận chính xác.
  • Công bằng (Fairness): Tất cả người tham gia phải có cơ hội tiếp cận hiệu suất như nhau. Không ai được hưởng lợi thế về tốc độ, nếu không thị trường sẽ bị thao túng.
  • Sẵn sàng (Availability): Sàn phải hoạt động liên tục. Việc ngừng hoạt động, ngay cả trong tích tắc, có thể dẫn đến thua lỗ tài chính nghiêm trọng cho người dùng khi họ không thể cắt lỗ kịp thời.
  • Tính nhất quán và lưu trữ: Các cơ quan quản lý yêu cầu khả năng khôi phục trạng thái thị trường chính xác tại bất kỳ thời điểm nào trong quá khứ (tính theo microsecond).

Kiến trúc đơn luồng và sức mạnh của tính xác định

Để giải quyết bài toán về độ trễ và độ phức tạp, đội ngũ của Coinbase đã chọn một hướng đi có vẻ ngược đời: Kiến trúc đơn luồng (single-threaded architecture).

Thay vì sử dụng đa luồng để xử lý song song các đơn hàng – điều này tạo ra sự cạnh tranh về tài nguyên và khó kiểm soát trạng thái – họ xử lý tất cả các lệnh tuần tự trên một luồng duy nhất chạy trên một lõi CPU.

  • Tính xác định (Determinism): Với cùng một đầu vào, hệ thống luôn tạo ra cùng một đầu ra. Điều này loại bỏ các lỗi "heisenbug" khó lường thường gặp trong môi trường đa luồng.
  • Khả năng mở rộng: Trong kiến trúc này, khả năng mở rộng trực tiếp tỷ lệ thuận với hiệu suất của luồng đơn. Tối ưu hóa "đường dẫn nóng" (hot path) sẽ ngay lập tức tăng khả năng xử lý giao dịch của toàn hệ thống.

Thuật toán đồng thuận Raft thay thế Database truyền thống

Một trong những điểm nghẽn lớn nhất của các hệ thống giao dịch truyền thống là độ trễ khi ghi dữ liệu vào cơ sở dữ liệu (như Postgres). Để đạt được độ trễ dưới mili-giây, Frank Yu giải thích rằng họ loại bỏ database khỏi đường dẫn nóng và thay thế bằng thuật toán đồng thuận Raft.

  • Không chờ đợi I/O: Thay vì chờ xác nhận ghi đĩa từ database, hệ thống sử dụng Raft để đảm bảo rằng đa số các node trong cụm (ví dụ: 3 trên 5) đã nhận được tin nhắn yêu cầu trước khi xử lý.
  • Độ bền bỉ dữ liệu: Nếu một node bị hỏng, hệ thống có thể chuyển đổi sang node replica khác mà không mất dữ liệu. Việc chạy 5 node thay vì 3 node giúp hệ thống chịu đựng được sự cố của nhiều máy chủ cùng lúc mà không ảnh hưởng đến hoạt động.

Triển khai không thời gian chết (Zero-downtime Deployment)

Nhờ kiến trúc xác định và cụm Raft, Coinbase có thể thực hiện các bản cập nhật phần mềm theo kiểu "rolling deployment" mà không cần bảo trì hay ngừng hệ thống.

  • Quy trình này giống như việc khởi động lại một node do lỗi phần cứng, nhưng là do cập nhật phần mềm.
  • Nó cho phép cập nhật logic giao dịch hàng tuần hoặc thậm chí thường xuyên hơn, thay vì các chu kỳ quý như các sàn truyền thống.
  • Điều này đặc biệt quan trọng trong thế giới tiền điện tử, nơi thị trường hoạt động 24/7 và không có khái niệm "cuối tuần".

Tối ưu hóa hiệu suất và chi phí

Để đạt được hiệu suất tối đa, Frank Yu nhấn mạnh việc tối ưu hóa "đường dẫn nóng" (hot path) – quãng đường từ lúc nhận yêu cầu đến lúc xử lý xong.

  • Đặt các node gần nhau: Các node trong cụm Raft nên được đặt trong cùng một Availability Zone để giảm độ trễ mạng (RTT). Việc phân tán quá rộng sẽ làm tăng độ trễ, tương đương với việc gây ra sự cố nhỏ cho từng yêu cầu.
  • Mã hóa nhị phân đơn giản: Sử dụng các cấu trúc dữ liệu nhị phẳng (flat binary) thay vì các định dạng lồng nhau phức tạp như JSON hay Protobuf sâu. Điều này giúp CPU xử lý tuần tự nhanh chóng và dễ dàng xác định loại tin nhắn.
  • Tránh cấp phát bộ nhớ (Garbage Collection): Trong môi trường JVM, họ tránh việc gọi new trong luồng chính bằng cách sử dụng bộ nhớ off-heap và các buffer được cấp phát sẵn. Điều này ngăn chặn trình thu gom rác (Garbage Collector) làm tạm dừng luồng xử lý.
  • Ghim luồng vào CPU (CPU Pinning): Cấu hình hệ điều hành để ghim luồng xử lý vào một lõi CPU cụ thể và chuyển các ngắt (interrupt) sang các lõi khác. Luồng xử lý sẽ chạy trong một vòng lặp vô hạn (busy spin) để đảm bảo phản hồi tức thì.

Lợi ích của việc tái tạo lại nhật ký (Log Replay)

Có lẽ lợi ích lớn nhất của kiến trúc đơn luồng và tính xác định là khả năng gỡ lỗi và kiểm thử.

  • Vì toàn bộ trạng thái hệ thống nằm trong bộ nhớ của một luồng, nó có thể chạy trên máy tính xách tay của kỹ sư.
  • Khi có sự cố bất thường, đội ngũ có thể tải xuống nhật ký yêu cầu (request log) từ môi trường sản xuất và "phát lại" (replay) toàn bộ quá trình trên trình gỡ lỗi (debugger).
  • Họ cũng có thể phát trực tiếp nhật ký yêu cầu sang một hệ thống khác để thử nghiệm các thay đổi cấu hình hoặc bản cập nhật mới với tải thực tế trước khi triển khai rộng rãi.

Kết luận

Bài thuyết trình của Frank Yu là một minh chứng cho triết lý kỹ thuật "Sự đơn giản là tối thượng". Bằng cách giảm thiểu sự phức tạp, loại bỏ các thành phần không cần thiết khỏi đường dẫn nóng và tận dụng tối đa các nguyên tắc cơ bản của tính xác định, Coinbase đã xây dựng được một sàn giao dịch có khả năng xử lý hàng trăm nghìn giao dịch mỗi giây với độ trễ P99 dưới 1 mili-giây, đồng thời duy trì sự linh hoạt trong việc phát triển và vận hành.

Bài viết được tổng hợp và biên soạn bằng AI từ các nguồn tin tức công nghệ. Nội dung mang tính tham khảo. Xem bài gốc ↗