SlideShare une entreprise Scribd logo
1  sur  40
Distributed Transaction
in Microservice
Lê Minh Nghĩa
Solution Architect at Tiki.Vn
Contents
1. Distributed Transaction Problem.
2. CAP Theorem
3. Replicate Model
4. Consistency and Eventually Consistency
5. Implementation
6. Case Study
Phần 1.
Các kiến thức căn bản
Distributed Transaction
Problem
• Là vấn đề đòi hỏi đảm bảo tính nhất quán của dữ
liệu trên môi trường phân tán
• Có sự tham gia nhiều hơn một data source vào
một quá trình xử lý
Data Sources
Database
Service
Write
Caching
Message
Queue
External
Service
Các data source đa dạng
Phải đảm bảo dữ liệu giữa các
nguồn nhất quán
Transaction
Transaction phải đảm bảo tính ACID:
• Atomic: phải đảm bảo thực thi tất cả hoặc không
gì
• Consistency: đảm bảo nhất quán dữ liệu
• Isolation: đảm bảo vấn đề tranh chấp
• Duration: dữ liệu phải được lưu trữ ổn định
Disitributed Transaction in
Microservice
• Hệ thống chia nhỏ thành các Microservice rất nhỏ
• Phải đảm bảo dữ liệu tất cả các service phải nhất
quán
• Các service hầu hết là các restful service
• Microservice là một hệ thống phân tán mức độ cao
• Về cơ bản: không có Transaction trong kiến trúc
Microservice!
CAP Theorem
• Consistency
• Avalaibility
• Partition Tolerant
Một hệ thống phân tán chỉ có
thể đạt được 2 trên ba tính
chất trên
CAP Theorem
• Consistency: Đảm bảo dữ liệu giữa các node là
nhất quán
• Availabiilty: đảm bảo tính available của hệ thống
khi một số node không available
• Partition Tolerance: đảm bảo khả năng hoạt
động khi mạng giữa các node không ổn định
CAP Theorem
in Microservice
Nói chung Microservice chỉ có thể đảm bảo hai tính
chất:
• Avaialability
• Partition Tolerance
Microservice không đảm bảo consistency giữa
các node trên toàn bộ hệ thống!
Consistency
vs Eventually Consistency
• Consistency: đảm bảo tính nhất quán của dữ
liệu. Tại mọi thời điểm trên hệ thống dữ liệu phải
nhìn nhất quán giữa tất cả các node.
• Eventually Consistency: đảm bảo dữ liệu giữa
các hệ thống sẽ nhất quán sau một khoảng thời
gian nhất định.
• Microservice chỉ có thể đảm bảo dữ liệu là
Eventually Consistency
Microservice
• Đánh đổi Consistency bằng tính chất Avalaibility
và Partition Tolerance
• Không consistency nhưng phải đảm bảo là
eventually consistency giữa các service
Phần 2:
Giải pháp
Replicate Model
• Primary Data Backup
• State Machine Model
(Active Active Model)
Replicate Model
• VD: để thay đổi dữ liệu tồn kho khi mua bán và
xuất nhập. Ban đầu có 10. Bán đi 2, nhập vào 5,
bán đi 7. Cần replicate dữ liệu đi các nguồn:
• Primary Backup: 8, 13, 6
• State Machine: -2, + 5, -7
Replicate Model
• Luôn đảm bảo ghi log các quá trình thay đổi
• Gửi các thay đổi đúng thứ tự và ổn định
Problems in Microservice
Database
Service
Write
Caching
Message
Queue
External
Service
Không có bất cứ cách nào
đảm bảo việc ghi dữ liệu
đồng thời nhiều nguồn dữ
liệu thoả mãn tính chất của
một transaction
Problems in Microservice
• Các kịch bản lỗi:
• Ghi dữ liệu nhưng không gọi được service khác
• Gọi được serivce khác nhưng không ghi được
dữ liệu
Solutions
• Đảm bảo chỉ thay đổi dữ liệu bắt đầu ở một nguồn.
Không đồng thời thay đổi dữ liệu của tất cả các nguồn.
• Tiến hành replicate các thay đổi một cách ổn định tới
các nguồn đích
• Triển khai hệ thống log để đảm bảo quá trình replicate
là ổn định.
• Mục tiêu: đảm bảo dữ liệu giữa các hệ thống là
Eventually Consistency
Phần 3:
Implementations
1. Log
• Log là phương thức chính và quan trọng nhất để
giải quyết vấn đề replicate dữ liệu trong hệ thống
phân tán
• Xây dựng cấu trúc log, lưu trữ các thay đổi muốn
gửi đi và gửi bất đồng bộ tới nguồn đích
• Đảm bảo transation giữa business data và log
data
• Xoá bỏ log sau khi gửi đi
1. Log
Service
Business
Data
Log
Data
Đảm bảo
transaction
BackGround
Worker
Other Service
Caching
Message
Queue
Other Data
Sources
2. Event Sourcing Pattern
Lưu trữ các thay đổi
dưới dạng log event
Gửi các event tới
các nguồn đích
3. Saga Pattern
Xây dựng cơ chế log
để theo dõi các bước
thực thi
Thực hiện roll back
khi các bước bị lỗi
4. CDC
Capture Data Change
• Bắt trực tiếp các thay đổi Database để replicate
thay đổi tới các data source khác nhau. VD:
• MySQL: decode file binlog
• Mongo: sử dụng cơ chế oplog
5. Message Queue
5. Message Queue
• Sử dụng message queue là nền tảng tích hợp
bất đồng bộ chính cho toàn bộ các service
• Loại bỏ việc gọi api chéo giữa các service
• Tăng khả năng availability của hệ thống
• Giảm thiểu chi phí maitain khi chỉ cần đảm bảo
message queue available. Các Service không
cần available tại cùng một thời điểm
6. Integration Model
6. Integration Model
Log:
• Đảm bảo các dữ liệu cần gửi đi được lưu trữ ổn định. Đảm bảo business data và log data luôn được lưu trữ
ổn định.
Background Worker:
• Đảm bảo quá trình gửi dữ liệu từ log tới message queue ổn định: chắc chắn gửi được và gửi đúng thứ tự.
Message Queue:
• Đảm bảo gửi message tới các nguồn dữ liệu đích
• Đảm bảo các message được delivery đúng thứ tự gửi vào
• Đảm bảo các message được persistent không bị mất
• Kafka và Windows Service Bus là các giải pháp tốt nhất
Các Data Source khác:
• Trực tiếp nhận message từ queue
• Chú ý việc chống trùng lặp message (Idempotemcy filtering)
7. Consistency
Requirements
• Trong ba yếu tố CAP, liệu AP có thể thoả mãn mọi trường hợp?
• Trong trường hợp bắt buộc đòi hỏi Consistency cần phải đánh giá
lại mô hình:
1. Liệu việc chia service đã hợp lý hay chưa? Thông thường sẽ
không chia nếu dữ liệu bắt buộc phải strong consistency.
2. Có thể điều chỉnh nghiệp vụ được không? Có trade off được giữa
đòi hỏi tính nhất quán và khả năng mở rộng không?
3. Có thể triển khai SOAP để handle distributed transaction không?
4. Có thể cài đặt two phase commit để handle distributed transaction
không?
Phần 4
Một số case study
1. Đặt hàng
• Kịch bản: có hai serivce, catalog service quản lý
dữ liệu sản phẩm, order service quản lý đơn
hàng. Khi đặt hàng thì trừ đi một lượng sản
phẩm nhất định rồi tạo đơn hàng.
• Risk: có thể trừ số lượng sản phẩm mà không
tạo được đơn hàng
Solution
Order
Service
Catalog
Service
1. Gửi request giữ tồn (Sync)
Database
2. Place Order
Message Queue
3. Gửi một lệnh trừ tồn
4. Nếu không nhận được lệnh trừ tồn thì sau một khoảng
thời gian nhất định thì rollback lại số lượng tồn.
2. Bài toán trừ tiền
• Kịch bản: có hai service là order service và
payment service. Payment service chứa thông
tin tiền ảo của người dùng. Tiền ảo trừ được thì
đơn hàng được đặt.
• Risk: tiền trừ mà đơn hàng không đặt được
Solutions
Order
Service Catalog
Service
1. Gửi request giữ tiền (Sync)
Database
2. Place Order
Request Queue
3. Gửi một lệnh trừ tiền
5. Nếu không nhận được lệnh trừ tiền thì sau một khoảng
thời gian nhất định thì rollback lại tiền cho người dùng
Response Queue
4. Gửi response
3. Bài toán tính tiền gói hàng
• Kịch bản: giả sử một khách hàng mua 2 sản phẩm trị giá 200k, mỗi món
100k. Đã trả trước 150k, hàng được chia làm hai gói, giao hai lần. Cần
thu khách hàng thêm 50k.
• Lần 1 đi giao món thứ nhất, không phải thu gì. Đã trừ 100k vào số tiền đã
trả. Số tiền khách hàng còn là 50k.
• Lần 2 đi giao nốt món còn lại và thu 50k.
• Điều gì sẽ xảy ra nếu ngay món hàng 2 xuất giao, thì món hàng thứ nhất
bị giao lỗi và phải cập nhật lại số tiền của khách hàng? Kịch bản hợp lý
nhất: khách hàng không phải trả thêm tiền.
• Nếu hệ thống được chia làm hai service: service để quản lý hàng tại trạm
và service quản lý hàng đi giao. Trong trường hợp này handle
consistency kiểu gì?
Analysis
Khó khăn:
• Muốn consistency phải gộp hai service làm một
—> Ảnh hưởng tới thiết kế tổng thể.
• Hệ thống không thể đảm bảo khi quy trình đã
không consistency. VD: nhân viên giao nhận thứ
nhất vừa về thì nhân viên thứ hai đã đi, cả hai
còn chưa kịp cập nhật qua máy tính.
Solution
• Dùng nghiệp vụ giải quyết: ghi nhận lỗi và hoàn
tiền cho khách hàng qua tài khoản ngân hàng
—-> và thống thiết gọi xin lỗi khách hàng :(((
Conclusions
• Khi phân chia hệ thống phải đảm bảo dữ liệu là eventually
consistency
• Cơ bản không có transaction giữa các data source khác nhau
• Không đồng thời ghi dữ liệu vào nhiều nguồn khác nhau.
• Lưu trữ log để đẩy các thay đổi một cách ổn định sang các data
source khác
• Nên sử dụng message queue là nền tảng chính cho việc tích hợp
bất đồng bộ giữa các service. Hạn chế sử dụng gọi chéo api.
• Đánh giá việc phân chia service phù hợp với đòi hỏi về consistency
dữ liệu.
Thank you!

Contenu connexe

Tendances

Toi uu hoa he thong 30 trieu nguoi dung
Toi uu hoa he thong 30 trieu nguoi dungToi uu hoa he thong 30 trieu nguoi dung
Toi uu hoa he thong 30 trieu nguoi dungIT Expert Club
 
Asynchronous processing in big system
Asynchronous processing in big systemAsynchronous processing in big system
Asynchronous processing in big systemNghia Minh
 
High Concurrency Architecture at TIKI
High Concurrency Architecture at TIKIHigh Concurrency Architecture at TIKI
High Concurrency Architecture at TIKINghia Minh
 
Go micro framework to build microservices
Go micro framework to build microservicesGo micro framework to build microservices
Go micro framework to build microservicesTechMaster Vietnam
 
DDD - DuyLV - VINID - 17.07.2019
DDD - DuyLV - VINID - 17.07.2019DDD - DuyLV - VINID - 17.07.2019
DDD - DuyLV - VINID - 17.07.2019Lê Văn Duy
 
Tiki.vn - How we scale as a tech startup
Tiki.vn - How we scale as a tech startupTiki.vn - How we scale as a tech startup
Tiki.vn - How we scale as a tech startupTung Ns
 
Software architecture for high traffic website
Software architecture for high traffic websiteSoftware architecture for high traffic website
Software architecture for high traffic websiteTung Nguyen Thanh
 
itlchn 20 - Kien truc he thong chung khoan - Phan 1
itlchn 20 - Kien truc he thong chung khoan - Phan 1itlchn 20 - Kien truc he thong chung khoan - Phan 1
itlchn 20 - Kien truc he thong chung khoan - Phan 1IT Expert Club
 
MongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDB
MongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDBMongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDB
MongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDBMongoDB
 
Grokking Techtalk #39: How to build an event driven architecture with Kafka ...
 Grokking Techtalk #39: How to build an event driven architecture with Kafka ... Grokking Techtalk #39: How to build an event driven architecture with Kafka ...
Grokking Techtalk #39: How to build an event driven architecture with Kafka ...Grokking VN
 
Microservice - Up to 500k CCU
Microservice - Up to 500k CCUMicroservice - Up to 500k CCU
Microservice - Up to 500k CCUViet Tran
 
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안SANG WON PARK
 
Domain Driven Design Introduction
Domain Driven Design IntroductionDomain Driven Design Introduction
Domain Driven Design IntroductionTung Nguyen Thanh
 
Grokking Techtalk #37: Data intensive problem
 Grokking Techtalk #37: Data intensive problem Grokking Techtalk #37: Data intensive problem
Grokking Techtalk #37: Data intensive problemGrokking VN
 
Twitter의 snowflake 소개 및 활용
Twitter의 snowflake 소개 및 활용Twitter의 snowflake 소개 및 활용
Twitter의 snowflake 소개 및 활용흥배 최
 
Event Sourcing & CQRS, Kafka, Rabbit MQ
Event Sourcing & CQRS, Kafka, Rabbit MQEvent Sourcing & CQRS, Kafka, Rabbit MQ
Event Sourcing & CQRS, Kafka, Rabbit MQAraf Karsh Hamid
 
Understanding MicroSERVICE Architecture with Java & Spring Boot
Understanding MicroSERVICE Architecture with Java & Spring BootUnderstanding MicroSERVICE Architecture with Java & Spring Boot
Understanding MicroSERVICE Architecture with Java & Spring BootKashif Ali Siddiqui
 
Bài 7 Xây dựng website sử dụng PHP và MySQL - Giáo trình FPT
Bài 7 Xây dựng website sử dụng PHP và MySQL - Giáo trình FPTBài 7 Xây dựng website sử dụng PHP và MySQL - Giáo trình FPT
Bài 7 Xây dựng website sử dụng PHP và MySQL - Giáo trình FPTMasterCode.vn
 
Kiem thu phan mem
Kiem thu phan memKiem thu phan mem
Kiem thu phan memTIen Le
 
Grokking Techtalk #39: Gossip protocol and applications
Grokking Techtalk #39: Gossip protocol and applicationsGrokking Techtalk #39: Gossip protocol and applications
Grokking Techtalk #39: Gossip protocol and applicationsGrokking VN
 

Tendances (20)

Toi uu hoa he thong 30 trieu nguoi dung
Toi uu hoa he thong 30 trieu nguoi dungToi uu hoa he thong 30 trieu nguoi dung
Toi uu hoa he thong 30 trieu nguoi dung
 
Asynchronous processing in big system
Asynchronous processing in big systemAsynchronous processing in big system
Asynchronous processing in big system
 
High Concurrency Architecture at TIKI
High Concurrency Architecture at TIKIHigh Concurrency Architecture at TIKI
High Concurrency Architecture at TIKI
 
Go micro framework to build microservices
Go micro framework to build microservicesGo micro framework to build microservices
Go micro framework to build microservices
 
DDD - DuyLV - VINID - 17.07.2019
DDD - DuyLV - VINID - 17.07.2019DDD - DuyLV - VINID - 17.07.2019
DDD - DuyLV - VINID - 17.07.2019
 
Tiki.vn - How we scale as a tech startup
Tiki.vn - How we scale as a tech startupTiki.vn - How we scale as a tech startup
Tiki.vn - How we scale as a tech startup
 
Software architecture for high traffic website
Software architecture for high traffic websiteSoftware architecture for high traffic website
Software architecture for high traffic website
 
itlchn 20 - Kien truc he thong chung khoan - Phan 1
itlchn 20 - Kien truc he thong chung khoan - Phan 1itlchn 20 - Kien truc he thong chung khoan - Phan 1
itlchn 20 - Kien truc he thong chung khoan - Phan 1
 
MongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDB
MongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDBMongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDB
MongoDB SoCal 2020: A Complete Methodology of Data Modeling for MongoDB
 
Grokking Techtalk #39: How to build an event driven architecture with Kafka ...
 Grokking Techtalk #39: How to build an event driven architecture with Kafka ... Grokking Techtalk #39: How to build an event driven architecture with Kafka ...
Grokking Techtalk #39: How to build an event driven architecture with Kafka ...
 
Microservice - Up to 500k CCU
Microservice - Up to 500k CCUMicroservice - Up to 500k CCU
Microservice - Up to 500k CCU
 
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
 
Domain Driven Design Introduction
Domain Driven Design IntroductionDomain Driven Design Introduction
Domain Driven Design Introduction
 
Grokking Techtalk #37: Data intensive problem
 Grokking Techtalk #37: Data intensive problem Grokking Techtalk #37: Data intensive problem
Grokking Techtalk #37: Data intensive problem
 
Twitter의 snowflake 소개 및 활용
Twitter의 snowflake 소개 및 활용Twitter의 snowflake 소개 및 활용
Twitter의 snowflake 소개 및 활용
 
Event Sourcing & CQRS, Kafka, Rabbit MQ
Event Sourcing & CQRS, Kafka, Rabbit MQEvent Sourcing & CQRS, Kafka, Rabbit MQ
Event Sourcing & CQRS, Kafka, Rabbit MQ
 
Understanding MicroSERVICE Architecture with Java & Spring Boot
Understanding MicroSERVICE Architecture with Java & Spring BootUnderstanding MicroSERVICE Architecture with Java & Spring Boot
Understanding MicroSERVICE Architecture with Java & Spring Boot
 
Bài 7 Xây dựng website sử dụng PHP và MySQL - Giáo trình FPT
Bài 7 Xây dựng website sử dụng PHP và MySQL - Giáo trình FPTBài 7 Xây dựng website sử dụng PHP và MySQL - Giáo trình FPT
Bài 7 Xây dựng website sử dụng PHP và MySQL - Giáo trình FPT
 
Kiem thu phan mem
Kiem thu phan memKiem thu phan mem
Kiem thu phan mem
 
Grokking Techtalk #39: Gossip protocol and applications
Grokking Techtalk #39: Gossip protocol and applicationsGrokking Techtalk #39: Gossip protocol and applications
Grokking Techtalk #39: Gossip protocol and applications
 

Similaire à Distributed Transaction in Microservice

Tính chịu lỗi trong hệ thống tệp tin phân tán
Tính chịu lỗi trong hệ thống tệp tin phân tánTính chịu lỗi trong hệ thống tệp tin phân tán
Tính chịu lỗi trong hệ thống tệp tin phân tánDuc Tran
 
Fault tolerance làm rõ đối với Distributed File System
Fault tolerance làm rõ đối với Distributed File SystemFault tolerance làm rõ đối với Distributed File System
Fault tolerance làm rõ đối với Distributed File SystemThường Thường
 
chuong 1 - Tong quan ve Lap trinh mang.ppt
chuong 1 - Tong quan ve Lap trinh mang.pptchuong 1 - Tong quan ve Lap trinh mang.ppt
chuong 1 - Tong quan ve Lap trinh mang.pptkhamgo1191
 
NHÓM 1010_ĐỒ ÁN LẬP TRÌNH WEB .docx.pptx
NHÓM 1010_ĐỒ ÁN LẬP TRÌNH WEB .docx.pptxNHÓM 1010_ĐỒ ÁN LẬP TRÌNH WEB .docx.pptx
NHÓM 1010_ĐỒ ÁN LẬP TRÌNH WEB .docx.pptxPhuongPhan826909
 
Lương Trung Thành - Cloud Control Matrix
Lương Trung Thành - Cloud Control MatrixLương Trung Thành - Cloud Control Matrix
Lương Trung Thành - Cloud Control MatrixSecurity Bootcamp
 
Gioi thieu phan mem quan ly nhan su tien luong comtek.hrm v2
Gioi thieu phan mem quan ly nhan su tien luong comtek.hrm v2Gioi thieu phan mem quan ly nhan su tien luong comtek.hrm v2
Gioi thieu phan mem quan ly nhan su tien luong comtek.hrm v2Snoozeloop AF
 
Cloud Control Matrix v3 - Security Bootcamp 2016
Cloud Control Matrix v3 - Security Bootcamp 2016Cloud Control Matrix v3 - Security Bootcamp 2016
Cloud Control Matrix v3 - Security Bootcamp 2016Luong Trung Thanh
 
Thiết kế hệ thống mạng nội bộ cho cty vn transport
Thiết kế hệ thống mạng nội bộ cho cty vn transportThiết kế hệ thống mạng nội bộ cho cty vn transport
Thiết kế hệ thống mạng nội bộ cho cty vn transportHate To Love
 
Why switch to google apps vn
Why switch to google apps vnWhy switch to google apps vn
Why switch to google apps vnDinh Anh
 
Bài Giảng Môn Học Cơ Sở Dữ Liệu Nâng Cao
Bài Giảng Môn Học Cơ Sở Dữ Liệu Nâng Cao Bài Giảng Môn Học Cơ Sở Dữ Liệu Nâng Cao
Bài Giảng Môn Học Cơ Sở Dữ Liệu Nâng Cao nataliej4
 
Dynamo: Amazon’s Highly Available Key-value Store
Dynamo: Amazon’s Highly Available Key-value StoreDynamo: Amazon’s Highly Available Key-value Store
Dynamo: Amazon’s Highly Available Key-value StoreViet-Trung TRAN
 
Data center
Data centerData center
Data centerVNG
 
Chương 2: HƯỚNG DẪN SỬ DỤNG ARENA
Chương 2: HƯỚNG DẪN SỬ DỤNG ARENAChương 2: HƯỚNG DẪN SỬ DỤNG ARENA
Chương 2: HƯỚNG DẪN SỬ DỤNG ARENALe Nguyen Truong Giang
 
the real-time operating system and real-time programming
the real-time operating system and real-time programmingthe real-time operating system and real-time programming
the real-time operating system and real-time programmingDucLe868608
 
bctntlvn (50).pdf
bctntlvn (50).pdfbctntlvn (50).pdf
bctntlvn (50).pdfLuanvan84
 
vndscasestudy1-160513170651.pdf
vndscasestudy1-160513170651.pdfvndscasestudy1-160513170651.pdf
vndscasestudy1-160513170651.pdftungdinhthanh3
 

Similaire à Distributed Transaction in Microservice (20)

Dsd02 sta
Dsd02 staDsd02 sta
Dsd02 sta
 
Tính chịu lỗi trong hệ thống tệp tin phân tán
Tính chịu lỗi trong hệ thống tệp tin phân tánTính chịu lỗi trong hệ thống tệp tin phân tán
Tính chịu lỗi trong hệ thống tệp tin phân tán
 
Dsd04 sta
Dsd04 staDsd04 sta
Dsd04 sta
 
Fault tolerance làm rõ đối với Distributed File System
Fault tolerance làm rõ đối với Distributed File SystemFault tolerance làm rõ đối với Distributed File System
Fault tolerance làm rõ đối với Distributed File System
 
chuong 1 - Tong quan ve Lap trinh mang.ppt
chuong 1 - Tong quan ve Lap trinh mang.pptchuong 1 - Tong quan ve Lap trinh mang.ppt
chuong 1 - Tong quan ve Lap trinh mang.ppt
 
Chapter 8 fault tolerance full
Chapter 8   fault tolerance fullChapter 8   fault tolerance full
Chapter 8 fault tolerance full
 
NHÓM 1010_ĐỒ ÁN LẬP TRÌNH WEB .docx.pptx
NHÓM 1010_ĐỒ ÁN LẬP TRÌNH WEB .docx.pptxNHÓM 1010_ĐỒ ÁN LẬP TRÌNH WEB .docx.pptx
NHÓM 1010_ĐỒ ÁN LẬP TRÌNH WEB .docx.pptx
 
Lương Trung Thành - Cloud Control Matrix
Lương Trung Thành - Cloud Control MatrixLương Trung Thành - Cloud Control Matrix
Lương Trung Thành - Cloud Control Matrix
 
Gioi thieu phan mem quan ly nhan su tien luong comtek.hrm v2
Gioi thieu phan mem quan ly nhan su tien luong comtek.hrm v2Gioi thieu phan mem quan ly nhan su tien luong comtek.hrm v2
Gioi thieu phan mem quan ly nhan su tien luong comtek.hrm v2
 
Dsd03 sta
Dsd03 staDsd03 sta
Dsd03 sta
 
Cloud Control Matrix v3 - Security Bootcamp 2016
Cloud Control Matrix v3 - Security Bootcamp 2016Cloud Control Matrix v3 - Security Bootcamp 2016
Cloud Control Matrix v3 - Security Bootcamp 2016
 
Thiết kế hệ thống mạng nội bộ cho cty vn transport
Thiết kế hệ thống mạng nội bộ cho cty vn transportThiết kế hệ thống mạng nội bộ cho cty vn transport
Thiết kế hệ thống mạng nội bộ cho cty vn transport
 
Why switch to google apps vn
Why switch to google apps vnWhy switch to google apps vn
Why switch to google apps vn
 
Bài Giảng Môn Học Cơ Sở Dữ Liệu Nâng Cao
Bài Giảng Môn Học Cơ Sở Dữ Liệu Nâng Cao Bài Giảng Môn Học Cơ Sở Dữ Liệu Nâng Cao
Bài Giảng Môn Học Cơ Sở Dữ Liệu Nâng Cao
 
Dynamo: Amazon’s Highly Available Key-value Store
Dynamo: Amazon’s Highly Available Key-value StoreDynamo: Amazon’s Highly Available Key-value Store
Dynamo: Amazon’s Highly Available Key-value Store
 
Data center
Data centerData center
Data center
 
Chương 2: HƯỚNG DẪN SỬ DỤNG ARENA
Chương 2: HƯỚNG DẪN SỬ DỤNG ARENAChương 2: HƯỚNG DẪN SỬ DỤNG ARENA
Chương 2: HƯỚNG DẪN SỬ DỤNG ARENA
 
the real-time operating system and real-time programming
the real-time operating system and real-time programmingthe real-time operating system and real-time programming
the real-time operating system and real-time programming
 
bctntlvn (50).pdf
bctntlvn (50).pdfbctntlvn (50).pdf
bctntlvn (50).pdf
 
vndscasestudy1-160513170651.pdf
vndscasestudy1-160513170651.pdfvndscasestudy1-160513170651.pdf
vndscasestudy1-160513170651.pdf
 

Distributed Transaction in Microservice

  • 1. Distributed Transaction in Microservice Lê Minh Nghĩa Solution Architect at Tiki.Vn
  • 2. Contents 1. Distributed Transaction Problem. 2. CAP Theorem 3. Replicate Model 4. Consistency and Eventually Consistency 5. Implementation 6. Case Study
  • 3. Phần 1. Các kiến thức căn bản
  • 4. Distributed Transaction Problem • Là vấn đề đòi hỏi đảm bảo tính nhất quán của dữ liệu trên môi trường phân tán • Có sự tham gia nhiều hơn một data source vào một quá trình xử lý
  • 5. Data Sources Database Service Write Caching Message Queue External Service Các data source đa dạng Phải đảm bảo dữ liệu giữa các nguồn nhất quán
  • 6. Transaction Transaction phải đảm bảo tính ACID: • Atomic: phải đảm bảo thực thi tất cả hoặc không gì • Consistency: đảm bảo nhất quán dữ liệu • Isolation: đảm bảo vấn đề tranh chấp • Duration: dữ liệu phải được lưu trữ ổn định
  • 7. Disitributed Transaction in Microservice • Hệ thống chia nhỏ thành các Microservice rất nhỏ • Phải đảm bảo dữ liệu tất cả các service phải nhất quán • Các service hầu hết là các restful service • Microservice là một hệ thống phân tán mức độ cao • Về cơ bản: không có Transaction trong kiến trúc Microservice!
  • 8. CAP Theorem • Consistency • Avalaibility • Partition Tolerant Một hệ thống phân tán chỉ có thể đạt được 2 trên ba tính chất trên
  • 9. CAP Theorem • Consistency: Đảm bảo dữ liệu giữa các node là nhất quán • Availabiilty: đảm bảo tính available của hệ thống khi một số node không available • Partition Tolerance: đảm bảo khả năng hoạt động khi mạng giữa các node không ổn định
  • 10. CAP Theorem in Microservice Nói chung Microservice chỉ có thể đảm bảo hai tính chất: • Avaialability • Partition Tolerance Microservice không đảm bảo consistency giữa các node trên toàn bộ hệ thống!
  • 11. Consistency vs Eventually Consistency • Consistency: đảm bảo tính nhất quán của dữ liệu. Tại mọi thời điểm trên hệ thống dữ liệu phải nhìn nhất quán giữa tất cả các node. • Eventually Consistency: đảm bảo dữ liệu giữa các hệ thống sẽ nhất quán sau một khoảng thời gian nhất định. • Microservice chỉ có thể đảm bảo dữ liệu là Eventually Consistency
  • 12. Microservice • Đánh đổi Consistency bằng tính chất Avalaibility và Partition Tolerance • Không consistency nhưng phải đảm bảo là eventually consistency giữa các service
  • 14. Replicate Model • Primary Data Backup • State Machine Model (Active Active Model)
  • 15. Replicate Model • VD: để thay đổi dữ liệu tồn kho khi mua bán và xuất nhập. Ban đầu có 10. Bán đi 2, nhập vào 5, bán đi 7. Cần replicate dữ liệu đi các nguồn: • Primary Backup: 8, 13, 6 • State Machine: -2, + 5, -7
  • 16. Replicate Model • Luôn đảm bảo ghi log các quá trình thay đổi • Gửi các thay đổi đúng thứ tự và ổn định
  • 17. Problems in Microservice Database Service Write Caching Message Queue External Service Không có bất cứ cách nào đảm bảo việc ghi dữ liệu đồng thời nhiều nguồn dữ liệu thoả mãn tính chất của một transaction
  • 18. Problems in Microservice • Các kịch bản lỗi: • Ghi dữ liệu nhưng không gọi được service khác • Gọi được serivce khác nhưng không ghi được dữ liệu
  • 19. Solutions • Đảm bảo chỉ thay đổi dữ liệu bắt đầu ở một nguồn. Không đồng thời thay đổi dữ liệu của tất cả các nguồn. • Tiến hành replicate các thay đổi một cách ổn định tới các nguồn đích • Triển khai hệ thống log để đảm bảo quá trình replicate là ổn định. • Mục tiêu: đảm bảo dữ liệu giữa các hệ thống là Eventually Consistency
  • 21. 1. Log • Log là phương thức chính và quan trọng nhất để giải quyết vấn đề replicate dữ liệu trong hệ thống phân tán • Xây dựng cấu trúc log, lưu trữ các thay đổi muốn gửi đi và gửi bất đồng bộ tới nguồn đích • Đảm bảo transation giữa business data và log data • Xoá bỏ log sau khi gửi đi
  • 23. 2. Event Sourcing Pattern Lưu trữ các thay đổi dưới dạng log event Gửi các event tới các nguồn đích
  • 24. 3. Saga Pattern Xây dựng cơ chế log để theo dõi các bước thực thi Thực hiện roll back khi các bước bị lỗi
  • 25. 4. CDC Capture Data Change • Bắt trực tiếp các thay đổi Database để replicate thay đổi tới các data source khác nhau. VD: • MySQL: decode file binlog • Mongo: sử dụng cơ chế oplog
  • 27. 5. Message Queue • Sử dụng message queue là nền tảng tích hợp bất đồng bộ chính cho toàn bộ các service • Loại bỏ việc gọi api chéo giữa các service • Tăng khả năng availability của hệ thống • Giảm thiểu chi phí maitain khi chỉ cần đảm bảo message queue available. Các Service không cần available tại cùng một thời điểm
  • 29. 6. Integration Model Log: • Đảm bảo các dữ liệu cần gửi đi được lưu trữ ổn định. Đảm bảo business data và log data luôn được lưu trữ ổn định. Background Worker: • Đảm bảo quá trình gửi dữ liệu từ log tới message queue ổn định: chắc chắn gửi được và gửi đúng thứ tự. Message Queue: • Đảm bảo gửi message tới các nguồn dữ liệu đích • Đảm bảo các message được delivery đúng thứ tự gửi vào • Đảm bảo các message được persistent không bị mất • Kafka và Windows Service Bus là các giải pháp tốt nhất Các Data Source khác: • Trực tiếp nhận message từ queue • Chú ý việc chống trùng lặp message (Idempotemcy filtering)
  • 30. 7. Consistency Requirements • Trong ba yếu tố CAP, liệu AP có thể thoả mãn mọi trường hợp? • Trong trường hợp bắt buộc đòi hỏi Consistency cần phải đánh giá lại mô hình: 1. Liệu việc chia service đã hợp lý hay chưa? Thông thường sẽ không chia nếu dữ liệu bắt buộc phải strong consistency. 2. Có thể điều chỉnh nghiệp vụ được không? Có trade off được giữa đòi hỏi tính nhất quán và khả năng mở rộng không? 3. Có thể triển khai SOAP để handle distributed transaction không? 4. Có thể cài đặt two phase commit để handle distributed transaction không?
  • 31. Phần 4 Một số case study
  • 32. 1. Đặt hàng • Kịch bản: có hai serivce, catalog service quản lý dữ liệu sản phẩm, order service quản lý đơn hàng. Khi đặt hàng thì trừ đi một lượng sản phẩm nhất định rồi tạo đơn hàng. • Risk: có thể trừ số lượng sản phẩm mà không tạo được đơn hàng
  • 33. Solution Order Service Catalog Service 1. Gửi request giữ tồn (Sync) Database 2. Place Order Message Queue 3. Gửi một lệnh trừ tồn 4. Nếu không nhận được lệnh trừ tồn thì sau một khoảng thời gian nhất định thì rollback lại số lượng tồn.
  • 34. 2. Bài toán trừ tiền • Kịch bản: có hai service là order service và payment service. Payment service chứa thông tin tiền ảo của người dùng. Tiền ảo trừ được thì đơn hàng được đặt. • Risk: tiền trừ mà đơn hàng không đặt được
  • 35. Solutions Order Service Catalog Service 1. Gửi request giữ tiền (Sync) Database 2. Place Order Request Queue 3. Gửi một lệnh trừ tiền 5. Nếu không nhận được lệnh trừ tiền thì sau một khoảng thời gian nhất định thì rollback lại tiền cho người dùng Response Queue 4. Gửi response
  • 36. 3. Bài toán tính tiền gói hàng • Kịch bản: giả sử một khách hàng mua 2 sản phẩm trị giá 200k, mỗi món 100k. Đã trả trước 150k, hàng được chia làm hai gói, giao hai lần. Cần thu khách hàng thêm 50k. • Lần 1 đi giao món thứ nhất, không phải thu gì. Đã trừ 100k vào số tiền đã trả. Số tiền khách hàng còn là 50k. • Lần 2 đi giao nốt món còn lại và thu 50k. • Điều gì sẽ xảy ra nếu ngay món hàng 2 xuất giao, thì món hàng thứ nhất bị giao lỗi và phải cập nhật lại số tiền của khách hàng? Kịch bản hợp lý nhất: khách hàng không phải trả thêm tiền. • Nếu hệ thống được chia làm hai service: service để quản lý hàng tại trạm và service quản lý hàng đi giao. Trong trường hợp này handle consistency kiểu gì?
  • 37. Analysis Khó khăn: • Muốn consistency phải gộp hai service làm một —> Ảnh hưởng tới thiết kế tổng thể. • Hệ thống không thể đảm bảo khi quy trình đã không consistency. VD: nhân viên giao nhận thứ nhất vừa về thì nhân viên thứ hai đã đi, cả hai còn chưa kịp cập nhật qua máy tính.
  • 38. Solution • Dùng nghiệp vụ giải quyết: ghi nhận lỗi và hoàn tiền cho khách hàng qua tài khoản ngân hàng —-> và thống thiết gọi xin lỗi khách hàng :(((
  • 39. Conclusions • Khi phân chia hệ thống phải đảm bảo dữ liệu là eventually consistency • Cơ bản không có transaction giữa các data source khác nhau • Không đồng thời ghi dữ liệu vào nhiều nguồn khác nhau. • Lưu trữ log để đẩy các thay đổi một cách ổn định sang các data source khác • Nên sử dụng message queue là nền tảng chính cho việc tích hợp bất đồng bộ giữa các service. Hạn chế sử dụng gọi chéo api. • Đánh giá việc phân chia service phù hợp với đòi hỏi về consistency dữ liệu.