1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tìm hiểu về event sourcing

90 12 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM BÁO CÁO ĐỒ ÁN Đề tài: Tìm hiểu Event Sourcing GVHD: ThS Nguyễn Công Hoan Sinh viên thực hiện: Nguyễn Thái Tuấn – MSSV: 20522122 ĐỒ ÁN Nguyễn Thái Tuấn – 20522122  Tp Hồ Chí Minh, 2023  NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN ……., ngày…… tháng……năm 20… Người nhận xét (Ký tên ghi rõ họ tên) ĐỒ ÁN Nguyễn Thái Tuấn – 20522122 LỜI CẢM ƠN Trước hết, em xin gửi lời cảm ơn đến Trường Đại học Công nghệ thông tin – ĐHQGTPHCM thầy cô giảng viên khoa Công nghệ phần mềm tạo điều kiện để em hồn thành đồ án – Chủ đề Tìm hiểu Event Sourcing Em xin gửi lời cảm ơn chân thành sâu sắc đến thầy Nguyễn Công Hoan giảng viên hướng dẫn trực tiếp trang bị cho em có kiến thức vững để thực đồ án Trong khoảng thời gian thực đồ án, em học hỏi thêm nhiều kiến thức, kinh nghiệm, biết thêm nhiều công nghệ Em vận dụng kiến thức tảng tích lũy đồng thời kết hợp với việc học hỏi nghiên cứu kiến thức Từ đó, em vận dụng tối đa học hỏi để hoàn thành báo cáo đồ án Tuy nhiên, q trình thực hiện, em khơng tránh khỏi thiếu sót Chính vậy, em mong nhận góp ý từ phía thầy, nhằm hồn thiện kiến thức, kĩ hành trang để em thực tiếp đề tài khác tương lai Em xin chân thành cảm ơn thầy! ĐỒ ÁN Nguyễn Thái Tuấn – 20522122 DANH MỤC CÁC BẢNG Danh mục Bảng 1 Thông tin người thực Y Bảng Dữ liệu lưu trữ Entity 12 Bảng Chức cart service 52 Bảng Chức inventory service .52 Bảng 3 Đặc tả xem trạng thái giỏ hàng 54 Bảng Đặc tả tạo phiên giỏ hàng 55 Bảng Đặc tả Thêm/ điều chỉnh số lượng sản phẩm vào giỏ 55 Bảng Đặc tả Xóa/ điều chỉnh số lượng sản phẩm khỏi giỏ 56 Bảng Đặc tả Xác nhận giỏ hàng 57 Bảng Đặc tả Xem tất sản phẩm có kho 57 Bảng Đặc tả Thêm sản phẩm vào kho 57 Bảng 10 Đặc tả Thêm sản phẩm vào kho .58 Bảng 11 Đặc tả Cập nhật số lượng sản phẩm kho 58 Bảng 12 Đặc tả Cập nhật thông tin sản phẩm kho 59 Bảng 13 Thiết kế CSDL cho bảng Inventory inventory serivice .66 Bảng 14 Thiết kế CSDL cho bảng Checkpoint inventory serivice 66 Bảng 15 Thiết kế CSDL cho document ShoppingCartDetails cart service 66 Bảng 16 Thiết kế CSDL cho bảng Checkpoint cart serivice 67 Bảng 17 Thiết kế API 71 Bảng 18 Các stack ứng dụng 73 Danh mục hình ản Hình Lưu trữ truyền thống với MongoDB Hình 2 Lưu trữ kết hợp với Event sourcing .7 Hình Thơng tin bên Event Hình Minh họa chiến thắng điện biên phủ .8 Hình Minh họa event Hình Stream Event store 10 Hình Ví dụ thơng tin Event .11 Hình Lưu trữ thơng tin "shopping-cart-opened" Event .13 Hình Lưu trữ thông tin "product-item-added" Event 13 Hình 10 Lưu trữ thơng tin "product-item-added" Event 14 Hình 11 Lưu trữ thông tin "product-item-removed" Event 14 Hình 12 Lưu trữ thơng tin "shopping-cart-confirmed" Event 15 Hình 13 Đoạn code minh họa lưu trữ Ram .16 ĐỒ ÁN Nguyễn Thái Tuấn – 20522122 Hình 14 Tính complete rebuild .17 Hình 15 Tính Temporal query .17 Hình 16 Minh họa Event replay 18 Hình 17 Tối ưu với snapshot (trước) 19 Hình 18 Tối ưu với snapshot (sau) 20 Hình 19 Ví dụ Git minh họa tính Audit 21 Hình 20 Sau gõ "Git log" Git 21 Hình 21 Tính Parallel processing 22 Hình 22 Ví dụ tính Parallel processing 22 Hình 23 Về Eventual consistency 23 Hình 24 Về Eventual consistency sau khơng ghi thời gian 24 Hình 25 Tổng quan projection 25 Hình 26 Projection read model 25 Hình 27 Projection write model 26 Hình 28 Minh họa two phase commit 28 Hình 29 Workflow subscription 29 Hình 30 Dữ liệu lưu trữ (trường revision) .30 Hình 31 Etag 31 Hình 32 Kiến trúc Monolithic .32 Hình 33 Trong transaction Monolithic 33 Hình 34 MSA 34 Hình 35 Transaction MS 35 Hình 36 Hai cách cài đặt saga MSA 35 Hình 37 Cách cài đặt "Orchestration" 36 Hình 38 Ccách cài đặt "Choreography" 36 Hình 39 Các thành phần EDA .37 Hình 40 Sự phụ thuộc service khơng có EDA 38 Hình 41 Sự phụ thuộc service có EDA 38 Hình 42 Tính mở rộng EDA 39 Hình 43 Event persistence EDA 40 Hình 44 "Single point of failure" 40 Hình 45 Minh họa hiệu suất .41 Hình 46 Minh họa Eventual Consistency 42 Hình 47 Minh họa complexity 42 Hình 48 Diagram pub/sub pattern 44 Hình 49 Minh họa giao tiếp MS 44 Hình 50 Minh họa thành phần API gateway 45 Hình 51 Về tính cần có API Gateway 46 Hình 52 Minh họa giải vấn đề Service discovery 47 Hình 53 Cách cài đặt client-side discovery 48 Hình 54 Cách cài đặt server-side discovery 48 Hình 55 Cách cài đặt seft-registration 49 Hình 56 Cách cài đặt third-party-registration 49 Y ĐỒ ÁN Nguyễn Thái Tuấn – 20522122 Hình Sơ đồ use-case cart-service 53 Hình Sơ đồ use-case inventory-service 54 Hình 3 Tổng quan kiến trúc 59 Hình Kiến trúc bên service 60 Hình Một góc nhìn khác kiến trúc 62 Hình Mơ tả liệu "shopping-cart-opened" Event .67 Hình Mơ tả liệu "product-item-added" Event 67 Hình Mơ tả liệu "product-item-removed" Event 68 Hình Mơ tả liệu "shopping-cart-confirmed" Event 68 Hình 10 Mơ tả liệu "product-created" Event .69 Hình 11 Mô tả liệu "product-deleted" Event .69 Hình 12 Mơ tả liệu "product-quantity-added" Event 70 Hình 13 Mô tả liệu "product-quantity-deducted" Event 70 Hình 14 Mơ tả liệu "product-info-updated" Event 70 Hình 15 Trực quan docker container sau ghi đóng gói với Docker 74 Hình 16 Giao diện trực quan EventStoreDB 74 Hình 17 Console RabbitMQ 75 Hình 18 Cơng cụ tương tác, trực quan MongoExpress 75 Hình 19 Cơng cụ tương tác, trực quan pgAdmin4 76 ĐỒ ÁN Nguyễn Thái Tuấn – 20522122 MỤC LỤC LỜI CẢM ƠN DANH MỤC CÁC BẢNG .4 DANH MỤC TỪ VIẾT TẮT TÓM TẮT ĐỒ ÁN Chương 1: GIỚI THIỆU TỔNG QUAN 1.1 Thông tin người thực 1.2 Tổng quan đề tài .3 1.3 1.2.1 Giới thiệu đề tài 1.2.2 Lý chọn đề tài 1.2.3 Phạm vi nghiên cứu 1.2.4 Đối tượng nghiên cứu .4 1.2.5 Kết hướng tới .5 Công cụ sử dụng Chương 2: KIẾN THỨC NỀN TẢNG 2.1 2.2 2.3 2.4 Event sourcing 2.1.1 Event sourcing gì? 2.1.2 Event 2.1.3 Stream .9 2.1.4 Thông tin đại diện Event (Event representation) 11 2.1.5 Lấy trạng thái tổng hợp từ Event .12 2.1.6 Nơi lưu trữ Event (Event store) .16 Tính .17 2.2.1 Chịu lỗi phục hồi hệ thống (Complete rebuild) 17 2.2.2 Quay lại khứ xem xảy (Temporal query) 17 2.2.3 Lặp lại phân tích (Event replay) 18 2.2.4 Tối ưu với snapshot 19 Lợi ích bất lợi 21 2.3.1 Kiểm kê (Audit) 21 2.3.2 Xử lí đồng thời (Parallel processing) 21 2.3.3 Nhất quán thời điểm định (Eventual consistency) 23 Các thành phần quan trọng cài đặt Event Sourcing 24 ĐỒ ÁN 2.5 Nguyễn Thái Tuấn – 20522122 2.4.1 Projections 24 2.4.2 Subscription 26 2.4.3 Revision 30 2.4.4 Etag 31 Các thành phần quan trọng cài đặt microservice .32 2.5.1 Mẫu thiết kế Saga (Saga pattern) 32 2.5.2 Kiến trúc hướng kiện (Event Driven Architecture) 37 2.5.3 Mẫu thiết kế Pub/sub (Pub/sub pattern) 43 2.5.4 Message broker (message queue) 44 2.5.5 API gateway 45 2.5.6 Service discovery 47 Chương 3: XÂY DỰNG HỆ THỐNG .50 3.1 3.2 3.3 Giới thiệu chung toán 50 3.1.1 Phát biểu toán 50 3.1.2 Hướng giải 51 3.1.3 Công cụ, công nghệ sử dụng 51 3.1.4 Mã nguồn 51 Phân tích 52 3.2.1 Danh sách yêu cầu 52 3.2.2 Sơ đồ use case 53 3.2.3 Đặc tả 54 Thiết kế 59 3.3.1 Thiết kế kiến trúc 59 3.3.2 Thiết kế liệu .63 3.3.3 Thiết kế API 71 3.3.4 Triển khai 72 Chương 4: KẾT LUẬN 77 4.1 Những khó khăn .77 4.2 Kết đạt 77 4.3 Hướng phát triển 78 4.3.1 Chủ đề Event sourcing 78 4.3.2 Mở rộng đề tài microservice 78 TÀI LIỆU THAM KHẢO 79 ĐỒ ÁN Nguyễn Thái Tuấn – 20522122 DANH MỤC TỪ VIẾT TẮT # Từ viết tắt API CSDL MSA MS EDA Từ đầy đủ Application Programing Interface Cơ sở liệu Microservice Architecture Microservice Event Driven Architecture Ý nghĩa Một nơi để ứng dụng giao tiếp với CSDL cho ứng dụng Kiến trúc microservice Một service MSA cách nói gọn MSA Kiểu kiến trúc hướng kiện ĐỒ ÁN Nguyễn Thái Tuấn – 20522122 TÓM TẮT ĐỒ ÁN Đồ án "Tìm hiểu Event Sourcing" tập trung nghiên cứu kỹ thuật Event Sourcing có hệ thống lớn Hiểu thực trạng vấn đề mà hệ thống lớn gặp phải Event Sourcing giải nào? Kỹ thuật đời có nhiều mặt ý nghĩa có kỹ thuật lẫn vấn đề kinh doanh doanh nghiệp Để thực đề tài này, em xây dựng hệ thống microservice đơn giản chủ đề EShopping Cart với cơng nghệ phía Backend NodeJS công cụ Postman Frontend đơn giản nhằm tập trung vào xây dựng đề tài Event Sourcing phía Backend Đề tài việc tìm hiểu thực trạng, đưa vấn đề cần giải Xác định phạm vi toán, mục tiêu đề tài Từ xác định thành phần chính, thành phần liên quan, độ khó kể đến như: mẫu thiết kế, kỹ thuật xây dựng ràng buộc ứng dụng hướng kiện (Http Etag, Revision, Location header, Checkpoint, ), vấn đề xảy kết nối với microservice khác, Đề tài Event Sourcing tập trung xây dựng hệ thống bên phía Backend, cá nhân em có độ khó cao về kỹ thuật lẫn triển khai (chưa có đủ hạ tầng) Chính việc tối ưu chi phí phía phía Front end giảm tối thiểu, cơng cụ Postman giải pháp thay em dùng Front end tình Bài tốn EShopping cart em lựa chọn để áp dụng có đủ tình để giải gần gũi với kỷ nguyên thương mại điện tử ngày Bài toán chia thành hai service bao gồm Cart service Inventory service, thiết kế với service database khác Ở em sử dụng MongoDB Postgre Giải pháp triển khai tất tầng ứng dụng như: RabbitMQ (Message broker), Postgres, Pgadmin4, MongoDB, MongoDB-Express, EventStore (CSDL chuyên dùng cho việc lưu trữ Event), service (Cart Inventory) em triển khai docker compose với công cụ Docker Phần cuối đồ án trình bày kết thực lên báo cáo, đưa kết luận hướng phát triển cho ứng dụng tương lai Trang

Ngày đăng: 04/09/2023, 20:41

HÌNH ẢNH LIÊN QUAN

Hình 2. 4 Minh họa về chiến thắng điện biên phủ - Tìm hiểu về event sourcing
Hình 2. 4 Minh họa về chiến thắng điện biên phủ (Trang 17)
Hình 2. 8 Lưu trữ thông tin "shopping-cart-opened" Event - Tìm hiểu về event sourcing
Hình 2. 8 Lưu trữ thông tin "shopping-cart-opened" Event (Trang 22)
Hình 2. 13 Đoạn code minh họa lưu trữ trên Ram - Tìm hiểu về event sourcing
Hình 2. 13 Đoạn code minh họa lưu trữ trên Ram (Trang 25)
Hình 2. 18 Tối ưu với snapshot (sau) - Tìm hiểu về event sourcing
Hình 2. 18 Tối ưu với snapshot (sau) (Trang 29)
Hình 2. 21 Tính năng Parallel processing - Tìm hiểu về event sourcing
Hình 2. 21 Tính năng Parallel processing (Trang 31)
Hình 2. 22  Ví dụ tính năng Parallel processing - Tìm hiểu về event sourcing
Hình 2. 22 Ví dụ tính năng Parallel processing (Trang 31)
Hình 2. 24  Về Eventual consistency sau khi không ghi một thời gian - Tìm hiểu về event sourcing
Hình 2. 24 Về Eventual consistency sau khi không ghi một thời gian (Trang 33)
Hình 2. 25  Tổng quan về projection - Tìm hiểu về event sourcing
Hình 2. 25 Tổng quan về projection (Trang 34)
Hình 2. 27  Projection trong write model - Tìm hiểu về event sourcing
Hình 2. 27 Projection trong write model (Trang 35)
Hình 2. 29  Workflow trong subscription - Tìm hiểu về event sourcing
Hình 2. 29 Workflow trong subscription (Trang 38)
Hình 2. 34 MSA - Tìm hiểu về event sourcing
Hình 2. 34 MSA (Trang 43)
Hình 2. 37  Cách cài đặt "Orchestration" - Tìm hiểu về event sourcing
Hình 2. 37 Cách cài đặt "Orchestration" (Trang 45)
Hình 2. 40  Sự phụ thuộc giữa các service khi không có EDA - Tìm hiểu về event sourcing
Hình 2. 40 Sự phụ thuộc giữa các service khi không có EDA (Trang 47)
Hình 2. 41   Sự phụ thuộc giữa các service khi có EDA - Tìm hiểu về event sourcing
Hình 2. 41 Sự phụ thuộc giữa các service khi có EDA (Trang 47)
Hình 2. 42  Tính mở rộng trong EDA - Tìm hiểu về event sourcing
Hình 2. 42 Tính mở rộng trong EDA (Trang 48)
Hình 2. 43 Event persistence trong EDA - Tìm hiểu về event sourcing
Hình 2. 43 Event persistence trong EDA (Trang 49)
Hình 2. 46  Minh họa về Eventual Consistency - Tìm hiểu về event sourcing
Hình 2. 46 Minh họa về Eventual Consistency (Trang 51)
Hình 3. 2  Sơ đồ use-case inventory-service - Tìm hiểu về event sourcing
Hình 3. 2 Sơ đồ use-case inventory-service (Trang 63)
Hình 3. 4  Kiến trúc bên trong một service - Tìm hiểu về event sourcing
Hình 3. 4 Kiến trúc bên trong một service (Trang 69)
Hình 3. 5  Một góc nhìn khác về kiến trúc - Tìm hiểu về event sourcing
Hình 3. 5 Một góc nhìn khác về kiến trúc (Trang 71)
Hình 3. 7  Mô tả dữ liệu về "product-item-added" Event - Tìm hiểu về event sourcing
Hình 3. 7 Mô tả dữ liệu về "product-item-added" Event (Trang 77)
Hình 3. 8  Mô tả dữ liệu về "product-item-removed" Event - Tìm hiểu về event sourcing
Hình 3. 8 Mô tả dữ liệu về "product-item-removed" Event (Trang 77)
Hình 3. 9   Mô tả dữ liệu về "shopping-cart-confirmed" Event - Tìm hiểu về event sourcing
Hình 3. 9 Mô tả dữ liệu về "shopping-cart-confirmed" Event (Trang 78)
Hình 3. 10  Mô tả dữ liệu về "product-created" Event - Tìm hiểu về event sourcing
Hình 3. 10 Mô tả dữ liệu về "product-created" Event (Trang 78)
Hình 3. 11  Mô tả dữ liệu về "product-deleted" Event - Tìm hiểu về event sourcing
Hình 3. 11 Mô tả dữ liệu về "product-deleted" Event (Trang 79)
Hình 3. 17  Console của RabbitMQ - Tìm hiểu về event sourcing
Hình 3. 17 Console của RabbitMQ (Trang 86)
Hình 3. 19  Công cụ tương tác, trực quan pgAdmin4 - Tìm hiểu về event sourcing
Hình 3. 19 Công cụ tương tác, trực quan pgAdmin4 (Trang 87)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w