View profile

#170 - Dịch vụ Quotas ở Grab - xử lý bài toán API rate limiting nội bộ

Revue
 
 

Grokking Newsletter

May 10 · Issue #171 · View online

Tuyển tập những bài viết hay cùng sự kiện bổ ích dành cho kĩ sư phần mềm tại Việt Nam.


Tối thứ 7 ngày 08/05, Grokking đã tổ chức Webinar #9 về những công việc kỹ thuật liên quan tới data, không chỉ giới hạn trong Data Science mà còn mở rộng cho Data Engineering hay Machine Learning Engineering, dựa trên chia sẻ từ hai khách mời dày dặn kinh nghiệm trong lĩnh vực này, anh Lộc và anh Đức. Bạn có thể xem lại chi tiết tại đường link sau:

Những bài viết hay
Hiểu rõ hơn về Data lake
Đảm bảo CI/CD pipelines an toàn trước các rủi ro về bảo mật
Starting a New App With Redux? Consider Context API First
Góc Distributed System
Dịch vụ Quotas ở Grab - xử lý bài toán API rate limiting nội bộ
Trong microservices, các vấn đề như service discovery, security, load balancing, monitoring và rate limiting là những bài toán khó. Bài viết này mô tả Quotas service được xây dựng ở Grab để giải quyết bài toán API rate limiting cho các microservices nội bộ Grab. Quotas được sử dụng cho toàn bộ services của Grab, do đó nó cần phải thiết kế đảm bảo high scale và high reliability. Grab thiết kế Quotas đi theo những guidelines sau:
  • Cung cấp thin client implementation (SDK) cho các services sử dụng Quotas để chuẩn hoá
  • Sử dụng asynchronous processing pipeline tăng khả năng scale cho Quotas.
  • Cho phép horizontally autoscaling Quotas tự động thông qua config, tránh bottle neck bởi toàn bộ Grab microservices sẽ sử dụng Quotas.
Vì lẽ đó, Quotas sử dụng Kafka làm trung tâm.
  • Các services sẽ gửi API usage information tới Quotas thông qua các Kafka topics riêng. Các Quotas instances (stateless, autoscaled) sẽ consume thông tin và xử lý.
  • Quotas gửi các quyết định về Rate limiting cũng thông qua các Kafka topics riêng và Quotas SDK trên các services sẽ consume thông tin đó và update local rate-limiting cache.
  • Có một thành phần là Archiver sẽ lưu các Kafka events lên AWS S3 cho các bài toán phân tích phụ.
Quotas client-side logic:
Mỗi service khi sử dụng Quotas sẽ sử dụng hai thành phần: Quotas middleware và Quotas SDK. Quotas middleware khi nhận API request tới sẽ thực hiện:
  • gửi API request info cho server qua Kafka
  • Nhận quyết định rate limit từ Quotas SDK để xử lý request
Quotas SDK có nhiệm vụ:
  • Nhận quyết định rate limit từ Quotas server thông qua Kafka
  • Cập nhật local cache.
Quotas server-side logic:
  • Tổng hợp API usages thông qua API request counts từ các Kafka topics.
  • Cập nhật rate counters vào hệ thống Redis
  • Quyết định rate limiting, gửi quyết định về service thông qua Kafka topic
  • Một số tích hợp khác về monitoring & alert lên Datadog.
Để tối ưu bài toán Kafka stream, Grab tự xây dựng hệ thống Sprinkler, cung cấp SDK cho các service sử dụng (build on top of OSS tên là Sarama). Thuật toán sử dụng trong Quotas là sliding window, với mức 1 giây và 5 giây. Một số thông tin benchmark nội bộ cũng được cung cấp trong bài viết. Mời bạn đọc chi tiết ở link này:
Code & Tools
This Week Sponsors
Theo đuổi sứ mệnh rút ngắn khoảng cách giữa con người, thông tin và dịch vụ, LINE đã phát triển thành nền tảng mạng xã hội với hàng trăm triệu người dùng thường xuyên trên toàn cầu, tập trung chiến lược vào thị trường châu Á vốn luôn tăng trưởng sôi động.
Là một trung tâm phát triển của Tập đoàn LINE, đội ngũ LINE Technology Vietnam đang sát cánh cùng LINE toàn cầu xây dựng và tối ưu các ứng dụng, dịch vụ đa dạng quanh hệ sinh thái LINE.
Góc Tuyển Dụng
Quotes
A good programmer is someone who always looks both ways before crossing a one-way street.
– Doug Linder
Did you enjoy this issue?
If you don't want these updates anymore, please unsubscribe here.
If you were forwarded this newsletter and you like it, you can subscribe here.
Powered by Revue
Charmington La Pointe, 181 Cao Thang, Dist 10, Ho Chi Minh city, Viet Nam