View profile

#151 - Spotify đã cải tiến hệ thống Event của họ như thế nào?

Revue
 
 

Grokking Newsletter

December 13 · Issue #152 · 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.


Thân gửi bạn đọc newsletter,
Tính từ lúc thành lập Grokking năm từ cuối năm 2014 cho đến giờ cũng gần 6 năm. Trong suốt 6 năm qua thì các hoạt động của Grokking chủ yếu được duy trì dựa trên tinh thần đóng góp từ các thành viên core team là chính. Tuy nhiên trong 2 năm gần đây 2019-2020, Grokking bắt đầu mở rộng các hoạt động chỉn chu hơn nữa nên bắt đầu cần nguồn kinh phí ổn định để duy trì các chi phí server, hosting, quay video các buổi talk, …
Để đảm bảo duy trì và phát triển cho các hoạt động hiệu quả, Grokking đang cần kêu gọi một khoản đóng góp tự nguyện từ các thành viên trong cộng đồng để duy trì và mở rộng các dự án cốt lõi của Grokking (trong đó có newsletter)
Các bạn nào có nhã ý đóng góp cho các hoạt động Grokking thì có thể chuyển khoản vào tài khoản của Grokking với thông tin như sau:
- Chủ tài khoản: Cong ty TNHH Grokking Vietnam
- Số tài khoản: 216092759
- Ngân hàng: ACB
- Chi nhánh: HCM
- Nội dung:  <ho ten> tai tro Grokking 2021 qua newsletter
Sau khi chuyển tiền tài trợ, bạn vui lòng chụp hình uỷ nhiệm chi gửi email về cho finance@grokking.org để team ghi nhận và cập nhật bạn vào danh sách người đóng góp nhé.
Thân,
Grokking Vietnam

Những bài viết hay
How Alibaba Is Reshaping the Java Language on the Cloud How Alibaba Is Reshaping the Java Language on the Cloud
My Top 3 SQL Interview Questions. I frequently interview candidates for… My Top 3 SQL Interview Questions. I frequently interview candidates for…
Introducing mcrouter: A memcached protocol router for scaling memcached deployments Introducing mcrouter: A memcached protocol router for scaling memcached deployments
Góc Distributed System
Tại thời điểm bài viết, Spotify đang có những tính năng được ưa chuộng như: Discover Weekly playlist, Year in music, Spotify Party. Những tính năng này có được đều dựa trên hệ thống back-bone về event messaging được các kỹ sư Spotify xây dựng xoay quanh Kafka v0.7. Tuy nhiên tại thời điểm đó, Kafka Broker không đạt được đổ ổn định nên Spotify đã chọn phương án lưu trữ xuống file trên HDFS, điều này lại dẫn đến việc HDFS trở thành single-point-of-failure.
Trong số newsletter kỳ này, mời các bạn cùng tham khảo serie ba bài viết chia sẻ quá trình cải tiến hệ thống event của Spotify qua từng giai đoạn.
Bài viết đầu tiên mô tả hệ thống “cũ” của Spotify xoay quanh self-hosted Kafka, HDFS, và các ETL jobs và những bài học của họ trong quá trình vận hành: link phần một.
Bài toán Reliable Persistent Storage vẫn gặp khó khăn, ngay cả khi họ nâng cấp Kafka lên 0.8 và một số cải tiến trong kĩ thuật xử lý như:
  • Sử dụng nhiều topic cho mỗi event type.
  • Đẩy nhiều việc về xử lý dữ liệu về phía Producer hơn để giảm latency cho các job ETL ở phía Consumer.
  • Xây dựng dự án Mirror Maker để mirroring dữ liệu giữa các data center.
Để cải thiện hơn bài toán Reliable Persistence, Spotify đã có 1 quyết định chiến lược là loại bỏ hệ thống Kafka self-hosted mà thay bằng dịch vụ Google Cloud Pub/Sub. Một số tính năng của Cloud Pub/Sub được khai thác bởi Spotify bao gồm:
  • Có thể giữ message chưa gửi đi trong 7 ngày
  • Hỗ trợ mô hình gửi “at-least-once”
  • Cung cấp global availability
  • Cung cấp REST API thân thiện và dễ sử dụng
  • Các tính năng về monitoring, alerting hoặc deployment được hỗ trợ dễ dàng bởi Google Cloud
Tại thời điểm áp dụng, hệ thống của Spotify phía Producer đạt 700k events trên mỗi giây và về phía consumer là 800k events trên giây. Họ đã tiến hành thử nghiệm load test với Cloud Pub/Sub với mong muốn có thể đạt được 2M events trên giây trên mỗi zone. Với global availability, con số mong muốn đạt được là: số lượng zone * 2M events trên giây. Link phần hai
Một số cải tiến tiếp theo để tối ưu phần xử lý dữ liệu phía đầu consumer được Spotify mô tả trong phần cuối của blog:
  • Export dữ liệu từ Pub/Sub qua các bucket theo giờ sử dụng Google Dataflow.
  • Một số cải tiến trong các ETL job (có implementation detail trong bài viết).
  • Áp dụng Sharding và Window.
Code & Tools
This Week Sponsors
Established in 2012, Chotot.com is the leading online classified website in Vietnam with more than 1,2 billion monthly page views, 10 million monthly users, 3,6 million transactions in 2019. With the motto “Muốn Là Có” (“A Way to Your Wants”), Chotot.com provides an effective online marketplace for Vietnamese to buy and sell various types of products easily. For more information, please visit www.chotot.com.
Góc tuyển dụng
Cho Tot creates products using a variety of open source and cloud native technologies, to name some: Kubernetes, Kafka, Elastic Search, PostgreSQL, MongoDB, TimescaleDB. We utilize Google Cloud Platform services such as Google Kubernetes, AI Platform, Cloud Composer, Data Catalog, BigQuery, Google Analytics for our infrastructure needs while running our heavy workloads on our own on-premises infrastructure. Visit careers.chotot.com to learn more about our vacancies and company culture.
Quotes
Talk is cheap. Show me the code.
- Linus Torvalds
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