View profile

#158 - Retry an toàn hơn với Idempotent API

Revue
 
 

Grokking Newsletter

February 1 · Issue #159 · 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.


Những bài viết hay
Airflow 2.0 and Why We Are Excited at Databand Airflow 2.0 and Why We Are Excited at Databand
Making retries safe with idempotent APIs Making retries safe with idempotent APIs
  1. Khi gọi một service, client cần truyền thêm một định danh cho request (ClientRequestIdentifier - unique)
  2. Khi nhận được request, service kiểm tra xem đã từng xử lý request này trước đây hay chưa:
  • Nếu chưa, service thực thi yêu cầu và tạo “session” cho request
  • Nếu service ghi nhận đã xử lý request này trước đây, service sẽ trả về kết quả tương ứng
Nói một cách đơn giản là biến một tác vụ non-idempontent thành idempotent bằng cách thực hiện request một lần duy nhất dựa vào ClientRequestIdentifier.
Có nhiều khía cạnh khác cần lưu tâm ở phương pháp này được đề cập trong bài viết gốc, mời bạn đọc xem thêm tại đây.
What's new in OAuth 2.1? What's new in OAuth 2.1?
Góc Distributed System
Giới thiệu Group Replication Service trong MySQL
MySQL trước đây thực hiện Replication với mô hình Primary-Secondary với primary server được coi là source to replica khi thực hiện toàn bộ việc ghi dữ liệu, gửi transactions tới các replicas để thực hiện việc cập nhật (mô hình shared-nothing - tất cả server giữ full copy). Việc replicate được thực hiện theo hai cách: 1/ asynchronous là master gửi transactions tới replicas rồi thực hiện commit 2/ semisynchronous - master gửi transactions tới replicas, đợi replicas gửi bản tin ACK xác nhận đã nhận được transactions rồi mới thực hiện commit.
Từ version 5.7, MySQL giới thiệu thêm tính năng mới là Group Replication. Tính năng này có thể được sử dụng ở hai dạng: 1/ single-primary với chỉ một master được lựa chọn để ghi dữ liệu và replicate tới các server khác, hoặc 2/ multi-primary cho phép toàn bộ servers đều có thể ghi dữ liệu. Với mô hình multi-primary, MySQL tổng hợp một số kĩ thuật failure-detection, group membership, fault-tolerance vào lại thành giao thức Group Communication System (GCS).
  • read-write transactions chỉ được commit khi nó nhận đủ “approve” từ group
  • read-only transactions được commit ngay mà không cần “approve” từ group
MySQL sử dụng Atomic Broadcast để đảm bảo transaction được gửi tới hoặc là toàn bộ nodes hoặc không node nào nhận được. Ngoài ra, total order message delivery cũng đảm bảo các transaction được gửi tới theo đúng thứ tự. Trong quá trình hoạt động sẽ có thể có những transactions xảy ra cùng thời điểm tại hai node khác nhau, quá trình certify sẽ được áp dụng để quyết định transaction nào được ưu tiên thực hiện trước. Giữa các node có xảy ra quá trình đồng thuận (consensus) và Group Replication trong MySQL là eventual consistency.
Chi tiết về quá trình Certify cũng như hành trình của transaction trong Group Replication bạn đọc cụ thể ở link này: http://mysqlhighavailability.com/mysql-group-replication-transaction-life-cycle-explained/
Cơ chế đồng thuận và quản lý membership trong Group Replication của MySQL là một biến thể của thuật toán Paxos, có tên gọi là XCOM (eXtended COMmunication). Cụ thể hoạt động của XCOM mời bạn đọc ở link này: https://mysqlhighavailability.com/the-king-is-dead-long-live-the-king-our-homegrown-paxos-based-consensus/
Code & Tools
This Week Sponsors
POPS is a creative, innovative & hyper-growth working environment where storytelling meets technology.
POPS is the leading digital entertainment company in Southeast Asia. With over 12 years in entertainment, we provide thousands of exclusive, high-quality, carefully curated local and international contents and bring a unique entertainment experience through POPS Original series, concerts, movies, comics, esports and more.
We are on a journey to find talents who are passionate about technology and love to develop POPS APP the digital entertainment product with the latest technologies such as: OTT, Video On Demand, Microservices, etc. to give end users in the region great experiences with an all-inclusive digital entertainment platform. 
Góc Tuyển Dụng
Quotes
If it doesn’t work, it doesn’t matter how fast it doesn’t work.
Mich Ravera
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