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

Đồ án tìm hiểu về event sourcing

88 4 0

Đ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  Tp Hồ Chí Minh, 2023  ĐỒ ÁN Nguyễn Thái Tuấn – 20522122 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: Bảng 1 Thông tin người thực .3 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 ảnh: Hình Lưu trữ truyền thống với MongoDB .7 Hình 2 Lưu trữ kết hợp với Event sourcing Hình Thơng tin bên Event Hình Minh họa chiến thắng điện biên phủ Hình Minh họa event .9 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 Hình 14 Tính complete rebuild 17 ĐỒ ÁN Nguyễn Thái Tuấn – 20522122 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 Hình Sơ đồ use-case cart-service 53 ĐỒ ÁN Nguyễn Thái Tuấn – 20522122 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 DANH MỤC TỪ VIẾT TẮT TÓM TẮT ĐỒ ÁN Chương 1: GIỚI THIỆU TỔNG QUAN 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 1.2.5 Kết hướng tới Chương 2: KIẾN THỨC NỀN TẢNG 2.1.1 Event sourcing gì? 2.1.2 Event 2.1.3 Stream 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 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 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 2.4.1 Projections 24 ĐỒ ÁN Nguyễn Thái Tuấn – 20522122 2.4.2 Subscription 26 2.4.3 Revision 30 2.4.4 Etag 31 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.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 3.2.1 Danh sách yêu cầu 52 3.2.2 Sơ đồ use case 53 3.2.3 Đặc tả 54 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.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 toá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 ĐỒ ÁN Nguyễn Thái Tuấn – 20522122 Tân từ: Event ShoppingCartConfirmed lưu trữ thông tin Event bao gồm trường liệu type data Trường liệu type tên Event, trường data object gồm thuộc tính: shoppingCartId, confirmedAt Trong Event xác nhận giỏ hàng cần có id giỏ, thời điểm xác nhận Trong stream inventory gồm Event sau: ProductCreated(type, data(productId, quantity, name, price, desc, createdAt)) Tân từ: Event ProductCreated lưu trữ thông tin Event bao gồm trường liệu type data Trường liệu type tên Event, trường data object gồm thuộc tính: productId, quantity, name, price, desc, createdAt Các trường bao gồm định danh sản phẩm, số lượng, tên, giá, mô tả, thời gian tạo ProductDeleted(type, data(productId)) Tân từ: Event ProductDeleted lưu trữ thông tin Event bao gồm trường liệu type data Trường liệu type tên Event, trường data object gồm thuộc tính: productId Trong Event xóa sản phẩm cần có id sản phẩm ProductQuantityAdded(type, data(productId, quantity)) Tân từ: Event ProductQuantityAdded lưu trữ thông tin Event bao gồm trường liệu type data Trường liệu type tên Event, trường data object gồm thuộc tính: productId, quantity Trong Event thêm số lượng cần có id sản phẩm, số lượng muốn thêm ProductQuantityDeducted(type, data(productId, quantity)) Tân từ: Event ProductQuantityDeducted lưu trữ thông tin Event bao gồm trường liệu type data Trường liệu type tên Event, trường data object gồm thuộc tính: productId, quantity Trong Event khấu trừ số lượng cần có id giỏ, số lượng muốn khấu trừ ProductInfoUpdated(type, data(productId, name, price, desc)) Tân từ: Event ProductInfoUpdated lưu trữ thông tin Event bao gồm trường liệu type data Trường liệu type tên Event, trường data object gồm Trang 65 ĐỒ ÁN Nguyễn Thái Tuấn – 20522122 thuộc tính: productId, name, price, desc Trong Event cập nhật sản phẩm cần có id sản phâm, thông tin sản phẩm 3.3.2.2 Thiết kế liệu CSDL cho inventory service: Tên trường Kiểu liệu id product_id quantity name price desc status revision created_at last_updated integer uuid integer character varying(255) integer text integer integer timestamp with timezone timestamp with timezone Không cho phép null True True True True True False True True True True Khóa True False False False False False False False False False Bảng 13 Thiết kế CSDL cho bảng Inventory inventory serivice Tên trường Kiểu liệu id position character varying(255) text Không cho phép null True True Khóa True False Bảng 14 Thiết kế CSDL cho bảng Checkpoint inventory serivice CSDL cho cart service: Tên trường Kiểu liệu _id shoppingCartId clientId status productItems string string string number array< productId: string, quantity: number > number date date revision openedAt confirmAt Không cho phép null True True True True True Khóa True True False False False False Bảng 15 Thiết kế CSDL cho document ShoppingCartDetails cart service Trang 66 True False False False False ĐỒ ÁN Nguyễn Thái Tuấn – 20522122 Tên trường Kiểu liệu id position string string Không cho phép null True True Bảng 16 Thiết kế CSDL cho bảng Checkpoint cart serivice CSDL lưu trữ Event: Hình Mơ tả liệu "shopping-cart-opened" Event Hình Mơ tả liệu "product-item-added" Event Trang 67 Khóa True False ĐỒ ÁN Nguyễn Thái Tuấn – 20522122 Hình Mơ tả liệu "product-item-removed" Event Hình Mô tả liệu "shopping-cart-confirmed" Event Trang 68 ĐỒ ÁN Nguyễn Thái Tuấn – 20522122 Hình 10 Mơ tả liệu "product-created" Event Hình 11 Mô tả liệu "product-deleted" Event Trang 69 ĐỒ ÁN Nguyễn Thái Tuấn – 20522122 Hình 12 Mơ tả liệu "product-quantity-added" Event Hình 13 Mơ tả liệu "product-quantity-deducted" Event Hình 14 Mô tả liệu "product-info-updated" Event Trang 70 ĐỒ ÁN Nguyễn Thái Tuấn – 20522122 3.3.3 Thiết kế API Service Port Service Route Tên cartservice 4999 /api/clients/:clientId/sh opping-carts cartservice 4999 cartservice 4999 cartservice 4999 cartservice 4999 inventory -service 5000 /api/clients/:clientId/sh oppingcarts/:shoppingCartId /api/clients/:clientId/sh oppingcarts/:shoppingCartId/p roduct-items /api/clients/:clientId/sh oppingcarts/:shoppingCartId/p roduct-items /api/clients/:clientId/sh oppingcarts/:shoppingCartId /api/show inventory -service 5000 /api/add inventory -service 5000 /api/remove/:productId inventory -service 5000 /api/update/:productId inventory -service 5000 /api/deduct-quantity /:productId inventory -service 5000 /api/add-quantity /:productId Open Shopping Cart (POST) Get Shopping Cart (GET) Add Product Item (POST) Delete Product Item (DELETE) Confirm Shopping Cart (PUT) Get all product (GET) Add new product (POST) Delete product (DELETE) Update info product (PUT) Deduct quantity (PUT) Add quantity (PUT) Bảng 17 Thiết kế API Trang 71 Api Gateway Route (8080) /api/cart/clients/:clientId /shopping-carts /api/cart/clients/:clientId /shoppingcarts/:shoppingCartId /api/cart/clients/:clientId /shoppingcarts/:shoppingCartId/pr oduct-items /api/cart/clients/:clientId /shoppingcarts/:shoppingCartId/pr oduct-items /api/cart/clients/:clientId /shoppingcarts/:shoppingCartId /api/inventory/show /api/inventory/add /api/inventory/remove/: productId /api/inventory/update/:p roductId /api/inventory/deductquantity /:productId /api/inventory/addquantity /:productId ĐỒ ÁN Nguyễn Thái Tuấn – 20522122 3.3.4 Triển khai 3.3.4.1 Mơi trường triển khai ứng dụng • Hệ điều hành: Microsoft Windows 10 • IDE: Visual studio code • Ram: 8GB • Processer: Intel(R) Core(TM) i5-1035G1 CPU @ 1.00GHz 1.19 GHz 3.3.4.2 Ngôn ngữ công cụ 3.3.4.2.1 Ngơn ngữ viết ứng dụng • Ứng dụng viết ngơn ngữ server NodeJS (Typescript) • Framework: ExpressJS 3.3.4.2.2 Cơng cụ quản lí mã nguồn • Cơng cụ quản lí mã nguồn: Github 3.3.4.2.2 Cơng cụ kiểm thử API • Cơng cụ kiểm thử API: Postman 3.3.4.3 Đóng gói ứng dụng Để triển khai hệ thống trên, em sử dụng Docker để đóng gói tất stack ứng dụng, tất ứng dụng nằm Docker Host, chia chung network Dưới danh sách ứng dụng: Tên service Port ứng dụng Port tương tác Ý nghĩa Inventory-service 5000 5000 Cart-service 4999 4999 EventStoreDB 2113 (HTTP 2113 (HTTP CSDL thiết kế đặc port) port) biệt dùng để lưu trữ Event 1113 (TCP 1113 (TCP port) port) MongoDB 27017 27017 CSDL dùng để lưu trữ liệu cho cart service lưu trữ service đăng ký service discovery Trang 72 ĐỒ ÁN Mongo-express Nguyễn Thái Tuấn – 20522122 8081 8081 Là công cụ quản lý trực quan hóa CSDL MongoDB, cung cấp giao diện đồ họa dễ sử dụng để khám phá, truy vấn tương tác với CSDL MongoDB PostgresDB 5432 5432 CSDL dùng để lưu trữ liệu cho inventory service Pgadmin4 80 3030 Cung cấp giao diện đồ họa dễ sử dụng để quản lý CSDL PostgreSQL RabbitMQ 5672 (AMQP) 5672 (AMQP) Hệ thống phần mềm mã 15672 (Manage 15672 (Manage nguồn mở dựa mơ console) hình hàng đợi tin nhắn console) (message queue hay gọi message broker) để quản lý chuyển giao thông tin ứng dụng service khác (Giao tiếp cart inventory service) Ngồi rabitmq cịn cấp giao diện đồ họa để quản lí API Gateway 8000 8000 Nhận request từ phía client redirect đến service phù hợp Bảng 18 Các stack ứng dụng Trang 73 ĐỒ ÁN Nguyễn Thái Tuấn – 20522122 Hình 15 Trực quan docker container sau ghi đóng gói với Docker Hình 16 Giao diện trực quan EventStoreDB Trang 74 ĐỒ ÁN Nguyễn Thái Tuấn – 20522122 Hình 17 Console RabbitMQ Hình 18 Công cụ tương tác, trực quan MongoExpress Trang 75 ĐỒ ÁN Nguyễn Thái Tuấn – 20522122 Hình 19 Công cụ tương tác, trực quan pgAdmin4 Trang 76 ĐỒ ÁN Nguyễn Thái Tuấn – 20522122 Chương 4: KẾT LUẬN Những khó khăn Đề tài Event sourcing đề tài có nhiều ý nghĩa mặt kỹ thuật khó tiếp cận mơn học nhà trường Một vài khó khăn kể đến như: • Tài nguyên hệ thống: Để dựng lên hệ thống Event sourcing kết hợp với kiến trúc MSA cần nhiều stack kỹ thuật • Hướng tiếp cận khó: Event sourcing kỹ hệ thống lớn thường áp dụng kiến trúc MS Trong môn học nhà trường khoa Cơng nghệ phần mềm, chưa có mơn học cụ thể rõ ràng vấn đề • Ít tài liệu tham khảo: Kỹ thuật Event sourcing thường áp dụng công ty vừa lớn, tài liệu tiếng việt tài liệu chuyên vấn đề khơng có tài liệu tiếng việt Kết đạt Trong trình thực đề tài, giúp em có hội hiểu rõ kỹ thuật Event sourcing ứng dụng thực tế; đồng thời vận dụng kiến thức học suốt năm đầu giảng đường Trả lời kiến thức mang tính lý thuyết học trước Qua q trình làm việc, em lên kế hoạch, phân tích; áp dụng cơng cụ, cơng nghệ đại q trình làm việc ngày MongoDB, PostgresDB, Nodejs, Notion, Typescript, Postman,… Hiểu rõ ý nghĩa kỹ thuật Ngoài ra, nắm rõ nghiệp vụ kỹ thuật, nghiệp vụ bán hàng liên quan Về kỹ thuật em xây dựng hệ thống nhỏ thấy 50% sức mạnh Event sourcing ,kiến trúc MSA số khác như: • Lưu trữ Event • Xem lại xảy khứ • Giải two phase commit với pattern Event sourcing • Giao tiếp MS với thơng qua Message broker • Đóng gói ứng dụng với Docker • Tạo API kiểm thử với Postman Trang 77 ĐỒ ÁN Nguyễn Thái Tuấn – 20522122 Hướng phát triển 4.3.1 Chủ đề Event sourcing • Phát triển tính để thể tất sức mạnh Event sourcing xây dựng snapshot, phục hồi hệ thống, event replay phân tích đánh giá liệu, xử lí đồng thời, … xử lí eventual consistency • Áp dụng CQRS pattern vào hệ thống để trở nên hồn thiện • Cài đặt thành phần gateway để tương tác với service, hệ thống khác 4.3.2 Mở rộng đề tài microservice Hệ thống cài đặt đơn giản với service để thể kỹ thuật Event sourcing, logic cịn Trong tương lai, em thêm service khác delivery, recommendation, order, payment, voucher, … để hoàn thiện hệ thống eShoppingCart Ngoài với mong muốn biết học hỏi thêm thành phần công nghệ microservice Caching, API gateway, Service discovery, Scale up, Load balancer … Trang 78 ĐỒ ÁN Nguyễn Thái Tuấn – 20522122 TÀI LIỆU THAM KHẢO A Beginner’s Guide to Event Sourcing Eventuous documentation A Dev’ Story, “Event Driven Architecture” Địa chỉ: https://www.youtube.com/watch?v=DQ5Cbt8DQbM&t=346s&pp=ugMICgJ2aRA BGAHKBQ5ldmVudCBzb3VyY2luZw%3D%3D A Dev’ Story, “Saga pattern in microservice” Địa chỉ: https://www.youtube.com/watch?v=C0rGwyJkDTU A Dev’ Story, “What is Event Sourcing and CQRS?” Địa https://www.youtube.com/watch?v=i2eVTk2Fb40 Lập trình fullstack, “25 phút hiểu rõ Microservice Architecture” Địa chỉ: https://www.youtube.com/watch?v=O0LUVgIyC8&t=158s&pp=ygUOZXZlbnQgc291cmNpbmc%3D An Introduction to Microservices, Part 3: The Service Registry Địa chỉ: https://auth0.com/blog/an-introduction-to-microservices-part-3-the-serviceregistry/ Micro-node-api-gatewate repository Địa chỉ: https://github.com/alchimya/micronode-api-gateway Introduction to Event Sourcing in TypeScript and NodeJS with EventStoreDB Địa chỉ: https://www.youtube.com/watch?v=5pc7abhle_Q&t=884s 10 Sample Event sourcing with NodeJS, Typescript Địa chỉ: https://github.com/oskardudycz/EventSourcing.NodeJS 11 NodeJS Microservice demo Địa chỉ: https://github.dev/codergogoi/nodejs_microservice Trang 79

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

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

TÀI LIỆU LIÊN QUAN

w