Back to Explore
DoorDash và bài toán Proxy Cache: Đạt 1.5 triệu yêu cầu mỗi giây với độ sẵn sàng 99.99999%

DoorDash và bài toán Proxy Cache: Đạt 1.5 triệu yêu cầu mỗi giây với độ sẵn sàng 99.99999%

Khám phá cách DoorDash tối ưu hóa hạ tầng microservices bằng cách kết hợp Envoy và Valkey để xây dựng Entity Cache, giải quyết bài toán tải backend và độ trễ với quy mô 1.5 triệu RPS.

Website
Upvote this postSign in to upvote this article.

Bài viết được dịch và tổng hợp từ tin tức gốc. Bạn có thể đọc bài viết gốc bằng tiếng Anh tại đây.

Điểm tin nhanh:

  • DoorDash triển khai Entity Cache, một giải pháp proxy caching trung tâm dựa trên Envoy và Valkey.
  • Hệ thống đạt hiệu năng ấn tượng với 1.5 triệu yêu cầu mỗi giây (RPS) và độ sẵn sàng đạt mức 99.99999%.
  • Kiến trúc này giúp giảm tải đáng kể cho các dịch vụ upstream, xử lý hiệu quả các yêu cầu dữ liệu lặp lại mà không cần thay đổi code ứng dụng.

Trong thế giới microservices quy mô lớn, việc đối mặt với hàng triệu yêu cầu mỗi giây (RPS) không chỉ là bài toán về sức mạnh tính toán mà còn là cuộc chiến chống lại sự dư thừa tài nguyên. Khi các dịch vụ liên tục truy vấn cùng một tập dữ liệu ít thay đổi, backend của bạn sẽ nhanh chóng trở thành nút thắt cổ chai, kéo theo độ trễ (latency) tăng vọt và chi phí vận hành leo thang. DoorDash đã giải quyết bài toán này bằng cách đưa caching ra khỏi phạm vi ứng dụng và đặt nó trực tiếp vào tầng hạ tầng với giải pháp Entity Cache.

Kiến trúc Entity Cache: Khi hạ tầng lên tiếng

Thay vì yêu cầu mỗi đội ngũ phát triển tự xây dựng logic caching riêng lẻ, DoorDash đã tận dụng sức mạnh của EnvoyValkey để tạo ra một lớp trung gian trong suốt. Entity Cache hoạt động như một proxy nằm giữa các dịch vụ client và upstream, chặn các yêu cầu HTTP và gRPC trước khi chúng chạm tới đích.

Ảnh bìa bài viết

Kiến trúc này cho phép quản lý tập trung các chính sách cache thông qua service mesh, giúp các kỹ sư tập trung vào logic nghiệp vụ thay vì loay hoay với việc quản lý cache state. Việc tối ưu hóa hạ tầng như thế này tương tự như cách chúng ta xây dựng các hệ thống giám sát chuyên sâu, giống như khi bạn tích hợp Sentry vào WooCommerce Membership để kiểm soát lỗi hệ thống.

Hình minh họa

Thông số vận hành và hiệu năng

Để đạt được độ sẵn sàng gần như tuyệt đối, DoorDash đã thiết kế hệ thống với các cơ chế dự phòng thông minh. Dưới đây là bảng tóm tắt các chỉ số ấn tượng của hệ thống:

Chỉ số Giá trị Ghi chú
Lưu lượng yêu cầu 1.5 triệu RPS Tổng lưu lượng qua proxy
Độ sẵn sàng 99.99999% Mức độ tin cậy cực cao
Quy mô hỗ trợ 50+ dịch vụ Tích hợp toàn hệ thống
Endpoint hỗ trợ 100+ endpoints Quản lý tập trung

Cơ chế vận hành và xử lý sự cố

Một trong những điểm sáng của Entity Cache là khả năng xử lý dữ liệu stale (cũ) trong các tình huống khẩn cấp. Khi xảy ra sự cố upstream, thay vì trả về lỗi, hệ thống vẫn phục vụ dữ liệu từ cache, đảm bảo trải nghiệm người dùng không bị gián đoạn. Điều này nhắc nhở chúng ta về tầm quan trọng của việc xây dựng các hệ thống bền bỉ, giống như cách thiết kế hệ thống cảnh báo dữ liệu trong Blue Watch.

Hình minh họa

Mẹo hay: Việc sử dụng Kafka để thực hiện invalidation dựa trên sự kiện giúp đảm bảo tính nhất quán của dữ liệu mà không cần phải xóa cache thủ công trên diện rộng.

Đánh giá & Lời khuyên Thực tiễn

Từ góc nhìn của một Senior Tech Lead, giải pháp của DoorDash là một ví dụ điển hình của việc áp dụng mô hình Platform Engineering.

Ưu điểm:

  • Giảm thiểu đáng kể tải cho các dịch vụ backend.
  • Không yêu cầu thay đổi code ứng dụng (transparent proxy).
  • Độ sẵn sàng cực cao nhờ cơ chế fallback dữ liệu stale.

Rủi ro cần đề phòng:

  • Độ phức tạp khi quản lý cấu hình cache tập trung.
  • Rủi ro dữ liệu bị stale quá lâu nếu cấu hình TTL không hợp lý.
  • Cần đội ngũ vận hành hạ tầng có kỹ năng cao về Envoy và Valkey.

Nếu bạn đang xây dựng các hệ thống lớn, hãy cân nhắc việc tách biệt logic caching ra khỏi ứng dụng. Điều này cũng tương tự như việc tối ưu hóa các quy trình tự động hóa tài liệu hóa mã nguồn để giảm bớt gánh nặng cho đội ngũ phát triển.

Câu hỏi thường gặp (FAQ)

Tại sao DoorDash chọn Valkey thay vì Redis?

Việc chọn Valkey thường liên quan đến các yêu cầu về hiệu năng cao, khả năng mở rộng tốt hơn và sự phù hợp với các đặc thù hạ tầng riêng của DoorDash trong việc xử lý dữ liệu cache quy mô lớn.

Entity Cache có gây ra độ trễ khi proxy không?

Có, nhưng với Envoy, độ trễ này là cực thấp (microsecond) và được bù đắp bằng việc giảm thời gian chờ đợi từ các dịch vụ backend vốn dĩ chậm hơn nhiều.

Có cần thay đổi code ứng dụng khi triển khai không?

Không, đây là ưu điểm lớn nhất. Vì nó nằm ở tầng hạ tầng (service mesh), các ứng dụng hoàn toàn không biết về sự tồn tại của lớp cache này.

Kết luận

Giải pháp Entity Cache của DoorDash một lần nữa khẳng định tầm quan trọng của việc đầu tư vào hạ tầng kỹ thuật thay vì chỉ chăm chăm tối ưu hóa ứng dụng. Nếu bạn đang đối mặt với bài toán hiệu năng tương tự, hãy bắt đầu bằng việc đánh giá lại kiến trúc microservices của mình. Đừng quên theo dõi hi_dev để cập nhật những kiến thức chuyên sâu về kiến trúc hệ thống và các công cụ lập trình mới nhất.

Related sponsor icon

Discussion (0)

You need to log in to post comments. Log In

No comments yet. Start the discussion!