itlc - hanoi - cqrs - es - 22-10 - 2015

68
CQRS – COMMAND AND QUERY RESPONSIBILITY SEGREGATION ITLC HANOI MONTHLY PUBLIC MEETUP

Upload: it-expert-club

Post on 14-Apr-2017

1.918 views

Category:

Software


6 download

TRANSCRIPT

Page 1: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

CQRS – COMMAND AND QUERY RESPONSIBILITY SEGREGATION

ITLC HANOI MONTHLY PUBLIC MEETUP

Page 2: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

“If you can’t split it, you can’t scale it”(Randy Shoup, Distinguished Architect, eBay)

Page 3: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

CÁC NỘI DUNG CHÍNH1. Các yêu cầu về việc xây dựng hệ thống lớn2. Mô hình CQRS và các khái niệm căn bản3. Một số phương pháp cơ bản để phân tích

thiết kế phần mềm4. Cách thức hoạt động của mô hình CQRS5. Sử dụng pattern Event Sourcing với CQRS6. Các vấn đề khó khăn khi áp dụng mô hình

CQRS-ES và hướng giải pháp giải quyết7. Các đòi hỏi về hiệu năng và các hướng giải

pháp giải quyết

Page 4: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

THÁCH THỨC KHI XÂY DỰNG Khả năng mở rộng của hệ thống. Tính ổn định Tính nhất quán của dữ liệu Tranh chấp tài nguyên Đòi hỏi hiệu năng cao

Page 5: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

KHẢ NĂNG MỞ RỘNG

Page 6: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

KHẢ NĂNG MỞ RỘNG Chiều X horizontal duplication: mở rộng bằng

cách nhân bản. Ví dụ thực hiện cân bằng tải nhiều web application

Mở rộng theo chiều Y Functional Decomposition: mở rộng bằng cách chia nhỏ thành nhiều chức năng. Ví dụ quản lý sản phẩm, quản lý đơn hàng… Trong quản lý đơn hàng chia tiếp thành thanh toán, ghi đơn hàng, tìm kiếm đơn hàng…

Mở rộng theo chiều Z chia nhỏ dữ liệu: sharding data, partion data…

Page 7: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

CÁC KHÓ KHĂN Sử dụng cùng một model cho tất cả các nghiệp

vụ Logic phức tạp Các nghiệp vụ ghi dữ liệu quan trọng và chặt chẽ Các nghiệp vụ đọc dữ liệu thì linh hoạt

Page 8: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

MÔ HÌNH CRUD

Page 9: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

MÔ HÌNH CRUD Có ba tầng chính: Data Layer, Business

Layer, Presentation DAL query giả lại DTO để Presentation hiển

thị Presentation thay đổi DTO qua DAL lưu vào

vào database Model dùng chung cả việc đọc và ghi dữ liệu

Page 10: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

MÔ HÌNH CRUD Ưu điểm: nhanh, không cầu kì thiết kế Nhược điểm: - Model phức tạp do dùng chung cho cả đọc và

ghi dữ liệu- Tăng tranh chấp dữ liệu giữa đọc và ghi dữ

liệu- Không scale được độc lập yêu cầu hiệu năng

cho cả phần đọc và ghi

Page 11: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

MÔ HÌNH CQRS Người đưa ra: Greg Young – 2006 CQRS – Command and Query Responsibility

Segregation Mục tiêu phân chia các luồng ghi và đọc dữ

liệu ra riêng biệt Scale độc lập các thành phần đọc và ghi dữ

liệu

Page 12: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

MÔ HÌNH

Page 13: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

CÁC THÀNH PHẦN CHÍNH Command: lệnh phát sinh xử lý một nghiệp

vụ Event: báo một quá trình xử lý kết thúc Command Bus: đường vận chuyển lệnh

command Event Bus: đường vận chuyển các event Domain Model: mô hình xử lý nghiệp vụ DTO: Data Transfer Object Query Façade: mô hình query dữ liệu

Page 14: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

CQRS

Page 15: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

MÔ HÌNH HOẠT ĐỘNG Phát sinh command. Vd: đặt hàng –

placeorder Command Bus gửi command Command Handler nhận command, thực thi

xử lý nghiệp vụ tại domain model Phát sinh các Event báo kết thúc quá trình xử

lý. Event Bus publish các event đi

Page 16: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

XÉT VÍ DỤ CỤ THỂ Xây dựng ứng dụng thương mại điện tử đơn

giản: cho phép người dùng xem và mua hàng Sau đặt hàng xong người dùng có thể thanh

toán online Sau khi thanh toán online xong, đơn hàng

được xác nhận thì gửi tin nhắn và email xác nhận cho người dùng

Page 17: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

PHÂN TÍCH VÀ THIẾT KẾ Xác định các phạm vi bài toán nghiệp vụ:+ Quản lý sản phẩm+ Đơn hàng+ Thanh toán+ Thông báo

Page 18: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

CONTEXT BOUNDARY

Product

Order

Payment Notification

Page 19: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

XÂY DỰNG UBIQUITOUS LANGUAGE Nhằm xác định rõ các tính chất của yêu cầu

đầu vào Xác định các đối tượng và các hành vi Cơ sở để thiết kế các model, command và

event Đảm bảo một mô hình thống nhất giữa người

lập trình và người phát triển nghiệp vụ

Page 20: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

XÂY DỰNG UBIQUITOUS LANGUAGE Người dùng liệt kê sản phẩm Chọn lựa sản phẩm và số lượng mua Đặt hàng Thanh toán để xác nhận đơn hàng Gửi tin nhắn và email báo đã đặt hàng thành

công

Page 21: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

XÁC ĐỊNH CÁC NOUN VÀ VERB Phân tích ubiquitous language để xác định

các object và behaviour Xác định mối quan hệ giữa các object Xây dựng model dựa trên các noun và verb

Page 22: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

XÁC ĐỊNH CÁC VERB VÀ NOUNNoun Verb

Product Listing ProductOrder Place Order, Confirm Order,

Reject OrderPayment Accept, RejectEmail SendSMS Send

Page 23: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

MÔ HÌNH THIẾT KẾ CHO TỪNG BOUNDED CONTEXT Không dùng chung một mô hình thiết kế cho

tất cả Mỗi context có mô hình xử lý và schema

riêng Các bounded context kết nối thông qua

message

Page 24: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

PRODUCT, ORDER, PAYMENT, NOTIFICATION

Product Order Payment Notification

Application Service

Writ

e Si

deRe

ad

Side

DDDCore Domain

CQRS-ESCore Domain

CQRSCore Domain

CRUDNone Core Domain

Page 25: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

PHÂN TÍCH PROCESS ORDER VÀ PAYMENTUbiquitous Language: Người dùng gửi lệnh đặt hàng – Place Order Hệ thống tạo đơn hàng – Create Order Chờ thanh toán để xác nhận – Wait Payment

Accepted Nhận được xác thức thanh toán – Payment

Accepted Xác nhận đơn hàng thành công – Confirm

Order Gửi email cho người dùng – Send Email Gửi SMS cho người dùng – Send SMS

Page 26: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

AGGREGATE Có định danh duy nhất trong hệ thống Được lưu trữ trong hệ thống Chứa các business logic Có dữ liệu và hành vi

Page 27: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

ORDER AGGREGATE

Page 28: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

PHÂN TÍCH COMMAND VÀ EVENTCommand Event

PlaceOrderCreateOrder OrderCreatedSubmitOrder OrderSubmitedSendSMSSendEmail

PaymentAccepted

Page 29: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

KẾT HỢP CÁC BOUNDED CONTEXTOrder

Payment

Notification

Process Manage

r

PlaceOrderOrderCreatedConfirmOrderOrderConfirm

PaymentAccpetd

SendSMSSendEmail

Page 30: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

PROCESS MANAGER PATTERN Giới thiệu lần đầu 2004 trong cuốn:Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions(Gregor Hohpe - Bobby Woolf )

Page 31: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

ORDER PROCESS MANAGEROrder

OrderProcesManager

Payments Notifications

Command

Event

1. PlaceOrder

2. CreateOrder 3. OrderCreated

4. PaymentAccepted

5. ConfirmOrder

7. SendEmail

6. SendSMS

Page 32: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

PLACEORDER COMMAND

Command Bus

Web Application

1. PlaceOrder Command

Process Manager

CommandHandler

Receive Command

Page 33: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

CHANGE STATE, SAVE AND SEND COMMAND Order Process Manager nhận PlaceOrder

Command Change to CreateOrder State Save state and Send CreateOrder Command

Page 34: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

ORDERPROCESS MANAGER

OrderProcessManager

Database

Command Bus

Save To DB Send CreateOrder to Command Bus

Page 35: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

HANDLE CREATEORDER COMMAND

Command Bus

ProcessManager

2. CreateOrder Command

Order Aggregate

CommandHandler

Receive Command

Page 36: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

ORDERCOMMAND HANDLERHANDLE CREATEORDER COMMAND Receive CreateOrder Command Get Order Aggregate Process Create Order Logic Save Order and Publish OrderCreated Event

Page 37: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

ORDERCOMMAND HANDLERHANDLE CREATEORDER COMMAND

Order

Database

Event Bus

Save To DB Send OrderCreated Event to Event Bus

Page 38: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

HANDLE ORDERCREATED EVENT

Event Bus

ProcessManager Order Aggregate

OrderCreated

Page 39: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

HANDLE ORDERCREATED EVENT Change to WaitPaymentAccepted State Save and Wait PaymentAccepted Event

Page 40: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

HANDLE PAYMENTACCEPTED EVENT Change to Confirmed State Save state and send commands:- Send ConfirmCommand to Order- Send SendEmail to Notification Domain- Send SendSMS to Notification Domain

Page 41: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

HANDLE PAYMENTACCEPTED EVENT

OrderProcessManager

Event Bus Command Bus

Payment Order

PaymentAccepted

ConfirmOrderSendEmailSendSMS

Email

ConfirmOrder

SendEmail SendSMS

SMS

Page 42: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

ORDER AGGREGATEHANDLE CONFIRMORDER COMMAND Update to Confirmed State Save and Publish OrderConfirmed Event

Page 43: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

READ SIDEHANDLE ORDERCONFIRMED EVENT Receive OrderConfirmed Event Update Read Database

Page 44: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

READ SIDEHANDLE ORDERCONFIRMED EVENT

Order

Read DBEvent Bus

Publish OrderCreated

OrderReadDBHandler

Update DB

Query Data

Thin Data Layer

Read SideWrite Side

Receive Event

Page 45: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

CÁC ƯU ĐIỂM CỦA CQRS Các logic thực thi rõ ràng Phân tách thành các quá trình xử lý độc lập Dễ dàng scale độc lập từng thành phần Sử dụng tài nguyên tính toán hiệu quả hơn

Page 46: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

NHẬN XÉT Tất cả các thay đổi của object đều có event

tương ứng Quá trình cập nhật read side tương ứng với

các sự kiện phát ra Có thể sử dụng event để tái tạo lịch sử

object.

Page 47: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

EVENT SOURCING PATTERN

Page 48: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

EVENT SOURCING PATTERN Lưu trữ trạng thái của object là danh sách sự

kiện thay đổi trạng thái của object Lưu stream event của object Load event stream để tái tạo tất cả trạng thái

của object Replay lại các event để xác định lịch sử thay

đổi

Page 49: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

ÁP DỤNG EVENT SOURCING CHO CQRS Tất cả các tác động làm thay đổi trạng thái

đơn hàng được coi là chuỗi các sự kiện Thay đổi cấu trúc class nhưng không thay thế

cấu trúc model Thay đổi data context để lưu trữ event Giữ nguyên toàn bộ cấu trúc của phần mềm

Page 50: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

THAY ĐỔI CẤU TRÚC CLASS Mỗi hành vi của object sẽ phát sinh một

event tương ứng Mỗi event sẽ được handle bởi một hàm

update trạng thái của object Khi khởi tạo object load lại toàn bộ event và

thực thi

Page 51: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

THAY ĐỔI CẤU TRÚC CLASS

Page 52: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

THAY ĐỔI CẤU TRÚC CLASSbase.Handles<OrderPlaced>(this.OnOrderConfirmed);

…Public void ConfirmOrder(ConfirmOrder cmd){ this.Update(new OrderConfirmed());}

….private void OnOrderPlaced(OrderConfirmed e){ //….}

Page 53: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

THAY ĐỔI DATA LAYER/DATA CONTEXT

Page 54: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

CHUYỂN ĐỔI CQRS-ES

Application Application

Order For CQRS Order For ES

OrderRepositoryFor CQRS

OrderRepositoryFor ES

DDD/CQRS:Business Logic không thay đổiApplication Logic không thay đổiChỉ thay đổi cấu trúc lưu trữ

CRUD: Rất khó khăn để làm tương tự

Page 55: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

ƯU ĐIỂM CỦA EVENT SOURCING PATTERN Lưu trữ được lịch sử thay đổi của một đối

tượng Cho phép dễ dàng playback lại các sự kiện

để xác định các vấn đề trong hệ thống

Page 56: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

DEMO Các tính năng cũ vẫn giữ nguyên Có thể theo dõi được lịch sử đơn hàng Không cần thêm phần log history nữa

Page 57: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

CÁC VẤN ĐỀ KHÓ KHĂN Hệ thống monitor Việc gửi và nhận message ổn định Chống trùng lặp việc xử lý message Eventually consistency giữa read side và

write side

Page 58: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

GỬI MESSAGE ỔN ĐỊNH Không có transaction giữa database và

message queueGiải pháp: Lưu state và các message chưa gửi đi trong

một transation Gửi message và xóa các message Thiết lập chế độ chống trùng message trong

message queue

Page 59: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

GỬI MESSAGE ỔN ĐỊNH

Undispatched Message

States Message Queue

Transaction

Save Send

Delete Undispatched Messages

Lưu ý: cần phải chống trùng lặp message

Page 60: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

IDEMPOTEMCY FILTERING Lưu giữ message id nhận được Kiểm tra trạng thái xử lý message khi nhận

được message Thiết lập chế độ chống gửi trùng message

nếu message queue hỗ trợ. Thiết kế logic để việc xử lý không bị ảnh

hưởng bởi trung lặp message

Page 61: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

EVENTUALLY CONSISTENCY GIỮA WRITE SIDE VÀ READ SIDE Dữ liệu giữa read side và write side bị lệchGiải pháp: Đánh version tăng dần cho dữ liệu Kiểm tra version hiện tại khi submit: submited version = current version Đánh version bằng timespan Phải có giải pháp trong trường hợp bắt buộc

dữ liệu giữa write side và read side phải strong consistency

Page 62: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

VẤN ĐỀ CONCURRECY Hai tác nhân cùng thay đổi trạng thái của hệ

thống Sử dụng cơ chế optimistic lock bằng

timestamp

Page 63: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

CÁC ĐIỂM THẮT CỔ CHAI Giới hạn throughput của đường bus Giới hạn của database

Page 64: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

CÁC GIẢI PHÁP Tăng số làn bus – partition bus Sharding database – horizontal scaling Non Blocking IO Programming Using Priority Queue pattern

Page 65: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

GIẢI QUYẾT VẤN ĐỀ THẮT CỔ TRAI

Message BusMessage BusMessage BusMessage Bus

Worker

Worker

Worker

….

Shardlet

Shardlet

Shardlet

Sharding dataMultiple Worker

Partition Message Queue

Page 66: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

UBER ARCHITECTURE

Page 67: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

THANK YOU Lê Minh Nghĩa Facebook: https://

www.facebook.com/NghiaLeMinh Email: [email protected] Phone: 0936 073 986

Shared to be Share!

Page 68: ITLC - Hanoi - CQRS - ES - 22-10 - 2015

ITLC Hanoi (https://facebook.com/itlchanoi) - Le Minh Nghia

Q&A