View profile

#153 - Rewriting the heart of Dropbox Sync Engine

Revue
 
 

Grokking Newsletter

December 27 · Issue #154 · 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 các bạn đọc,
Sau hai tuần kể từ khi kêu gọi quyên góp tài trợ cho các hoạt động của Grokking, team đã nhận được một số đóng góp từ phía các bạn đọc của Grokking Newsletter. Qua đó giúp team Grokking có thêm nguồn kinh phí để duy trì các hoạt động như chi phí server, hosting, quay video các buổi talk, …
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
Và một điều rất quan trọng, 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ận các báo cáo định kỳ cập nhật thông tin về quá trình sử dụng kinh phí tài trợ của Grokking như thế nào nhé.
Ngoài ra, tùy theo mức độ đóng góp của các bạn, các bạn sẽ nhận được những phần quà đặc biệt từ phía team Grokking được cung cấp riêng cho nhà tài trợ.
Thân,
Grokking Vietnam

Những bài viết hay
Scaling Cache Infrastructure at Pinterest Scaling Cache Infrastructure at Pinterest
Rewriting the heart of our sync engine Rewriting the heart of our sync engine
Disaster Recovery for Multi-Region Kafka at Uber Disaster Recovery for Multi-Region Kafka at Uber
Chìa khóa của kiến trúc này chính là cơ chế message replication.
Các message được “replicated asynchronously”, từ regional cluster đến aggregation cluster. Để làm việc này, Uber đã xây dựng uReplicator, một giải pháp opensource nhằm replicate data một cách linh hoạt và đáng tin cậy.
Góc Distributed System
Distributed Cron được xây dựng ở Google như thế nào ?
Cron jobs là một thành phần tương đối cơ bản trong các hệ thống. Nhiệm vụ cơ bản của nó là thực thi một (hoặc nhiều) câu lệnh tại những thời điểm được định nghĩa sẵn. Cron có thể thực hiện rất nhiều tác vụ, phụ thuộc hoàn toàn vào định nghĩa của người vận hành (ví dụ garbage collection, data analysis, etc). Dạng cơ bản của Cron jobs có thể nói tới Crontab - chương trình này mặc định có trong OS, giúp người sử dụng có thể định nghĩa intervals mong muốn để thực hiện một chương trình nào đó.
Cron hoạt động đơn giản, nhưng khi vận hành hệ thống large-scale distributed system cỡ Google, việc sử dụng cron có gì khác biệt?
  • Cron reliability - đối với Google, cron cũng là một thành phần cần đảm bảo độ ổn định. Do vậy, họ không đặt cron jobs ngay trên các machine cần thực thi chương trình, mà de-couple thiết kế thành 1 distributed cron service riêng biệt - nếu muốn thực thi một service/program, đăng kí với cron service và chỉ định program, input, và datacenter (target) nào muốn thực thi program đó. Khi đó, cron service sẽ truyền lệnh thực thi tới datacenter scheduler (thông qua RPC) đó để thực hiện. Cron service này được quản lý như các hệ thống critical khác trong Google.
  • Thuật toán đồng thuận trong việc tracking trạng thái của các cron jobs - nhằm mục đích restore trong trường hợp failure. Trạng thái của cron jobs là 1 loại dữ liệu sensitive, và cần đảm bảo tính nhất quán trong môi trường distributed. Do vậy, cần có thuật toán đồng thuận. Google sử dụng Fast Paxos để giải quyết vấn đề này.
  1. Cron service được deploy thành nhiều replicas (distributed), trong đó có 1 replica là leader và những replicas khác là worker.
  2. Chỉ duy nhất Leader replica có quyền thực hiện các cron jobs. Leader replica có một scheduler bên trong để thực hiện việc này. Cách thức hoạt động tương tự crond.
  3. Chỉ duy nhất Leader replica có quyền thay đổi trạng thái (write state) của cron jobs. Các replicas khác chỉ có nhiệm vụ sync trạng thái về.
  4. Khi Leader replica gặp sự cố, tiến trình leader election sẽ tìm ra replica leader mới.
  5. Trạng thái cơ bản được lưu trữ trong cron service là những cron jobs nào đã được thực thi thành công (thời gian start, thời gian kết thúc, jobs nào đã được thực hiện)
  6. Giao tiếp trong thuật toán này thực hiện ở mode synchronous.
  7. Khi Leader replica bị “mất quyền làm leader”, nó buộc phải ngắt kết nối với datacenter scheduler. Điều kiện này đảm bảo tính mutual exclusion giữa “old leader” và “new leader”.
Một số vấn đề khác của hệ thống distributed cron service này bao gồm: xử lý lỗi, lưu trữ trạng thái ra sao, đối với những large cron jobs thì sao, mời các bạn tìm hiểu cụ thể theo link bài viết https://sre.google/sre-book/distributed-periodic-scheduling/
Góc Database
Ổ SSD (solid state drive) đã trở nên khá phổ biến trong nhiều năm trở lại đây và dần dần thay thế cho hard-disk thông thường. Một trong những ưu điểm của SSD đó là tốc độ đọc ngẫu nhiên tốt hơn hẳn so với hard-disk. Tuy nhiên, bản thân quá trình ghi (write) đặc biệt là ghi ngẫu nhiên của SSD vẫn còn chậm hơn nhiều lần so với đọc (read) khá nhiều lần.
Theo phân tích của các tác giả đến từ Đại học khoa học và công nghệ HongKong thì các cơ chế phổ biến để index như B+-tree và LSM trên thị trường mặc dù vẫn sử dụng được trên SSD nhưng vẫn chưa thực sự tận dụng hết các đặc tính của SSD để cải thiện hiệu năng tốt hơn.
Chính vì vậy, trong bài báo này, các tác giả đề xuất sử dụng FD-tree để làm cơ chế index trên các ổ đĩa SSD, một cấu trúc dữ liệu được xây dựng dựa trên B+-tree để vừa tận dụng được cơ chế đọc của SSD vừa giải quyết được vấn đề ghi ngẫu nhiên. Cơ chế index này được thiết kế dựa trên ba nguyên tắc chính:
  • Biến đổi các lệnh ghi ngẫu nhiên thành các lệnh ghi mang tính tuyến tính.
  • Giới hạn việc ghi ngẫu nhiên và các khu vực nhỏ
  • Hỗ trợ tối ưu hoá I/O đa trang.
Mời các bạn cùng đọc bài báo để hiểu thêm về cơ chế đề xuất của các tác giả: link
Sự kiện nổi bật
Grokking Techtalk #40 đã được tổ chức vào ngày hôm qua và nhận được sự tham gia đông đảo tới từ nhiều bạn. Các bạn có thể xem lại các slide của hai bài talk tại hai link sau:
LINE CODE WOW 2021
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
Programming is the art of doing one thing at a time
- Michael Feathers
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