Bài 1: Tìm hiểu về Saga Design Pattern

Saga design pattern: Là một mô hình thiết kế phần mềm để quản lý các transaction phức tạp và có nhiều bước trong hệ thống microservice. Pattern này giúp đảm bảo tính nhất quán và độ tin cậy của hệ thống trong trường hợp xảy ra lỗi và các trường hợp cần rollback data giữa các microservice với nhau.

Có 2 cách để triển khai saga design pattern:

1: Choreography (Choreographed Saga): 

Như hình trên chúng ta thấy rằng Choreography sẽ không có đối tượng trung tâm đứng ra điều phối mà các service tự tham gia trực tiếp tương tác với nhau để quyết định khi nào thực hiện và khi nào hoàn tác các bước => các Service tự xử lý event của riêng mình.

Ưu điểm:

    • Các service độc lập với nhau và tự quyết định được việc thực hiện hoặc hoàn tác giao dịch
    • Tăng hiệu suất và khả năng mở rộng của hệ thống.
    • Thêm các service mới một cách dễ dàng mà không cần phải thay đổi các thành phần hiện có 

Nhược điểm:

    • Chỉ nên áp dụng cho các hệ thống nhỏ với các hệ thống lớn phức tạp thì việc quản lý rất khó khăn
    • Khi có lỗi xảy ra việc thực hiện rollback phức tạp hơn

2: Orchestration

Trái ngươc với Choreography ở mô hình Orchestration tập trung vào việc sử dụng một đối tượng điều phối trung tâm (Saga Orchestrator) có nhiệm vụ phân phối các event cần xử lý về các service con.

Ưu điểm: 

    • Đảm bảo tính nhất quán tốt hơn 
    • Có sự kiểm soát tốt hơn việc hander lỗi vì nó tập trung ở  Orchestrator 

Nhược điểm:

    • Khó truyển khai hơn
    • Khó khăn trong việc mở rộng

Tổng kết: Việc lựa chọn giữa Choreography hoặc Orchestration phụ thuộc vào yêu cầu cụ thể của hệ thống với nhưng hệ thống có business không quá phức tạp thì nên chọn Choreography ngược lại thì nên chọn Orchestration.

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x