Event sourcing là gì

Domain Events gồm điểm thông thường gì cùng với Event Sourcing ? chắc hẳn rằng từ "event" trong tên của chúng. Nhưng xung quanh ra, khi nói đến kiến trúc và nhà nhà cải cách và phát triển trong các dự án, tại những hội nghị hoặc đào tạo, tôi thường nghe rằng domain event rất tương xứng với event sourcing với rằng sự kiện sourcing là 1 ý tưởng nguồn của domain name events. Trong nội dung bài viết này tôi mong ước tóm lược trên sao cá thể tôi không tán thành với cách nhìn này.Bạn đã xem: sự kiện sourcing là gì

Trước tiên tôi đang tranh luận vì sao tôi không share cách nhìn này, tôi muốn bảo vệ một phương pháp hiểu không hề thiếu về domain events và event sourcing.

Bạn đang xem: Event sourcing là gì

Domain Events

Trong xây dựng domain-driven, domain name events được biểu lộ như một số việc xảy ra trong domain với là quan trọng đặc biệt với domain name experts. Thông thường events xảy ra bất kỳ domain được thực hiện trong khối hệ thống phần mượt ở lever nào. Bọn chúng cũng hòa bình với những công nghệ. Theo đó, domain sự kiện về phương diện ngữ nghĩa quý giá cao, chúng được trình bày trong ngôn ngữ nói vị domain experts. Lấy ví dụ như:

Một người tiêu dùng đã được đăng kí.Một hóa solo đã nhận.Hạn thanh toán đã hết hạn.

Domain events có liên quan cả bên phía trong một bounded context với chạy qua những bounded contenxt cho vấn đề triển khai các processes bên trong domain.

Event Sourcing

Martin Fowler biểu đạt đặc điểm chủ yếu của sự kiện sourcing trong nội dung bài viết của ông như sau:

Event Sourcing ensures that all changes lớn application state are stored as a sequence of events.

Thay vì chưng lưu trạng thái hiện tại bên phía trong ứng dụng một cách trực tiếp, bằng những trường trong bảng cơ sở dữ liệu thì sẽ tiến hành lưu một danh sách các events, sau khoản thời gian thực hiện chạy theo thứ tự các event này bọn họ sẽ đạt được trạng thái hiện tại của đối tượng. Nó sẽ bị ghi đè bởi các biến hóa sau đó.

Event sourcing là 1 trong những khái niệm chung, nhưng lại thường được bàn bạc trong bối cảnh của kiến thiết domain-driven vào việc liên kết với aggregates. Vì vậy tôi thực hiện sự chắc chắn của aggregates như một ví dụ như cho việc sử dụng event sourcing.

Sự tiếp nối bên dưới chỉ ra các bước liên quan khi sử dụng sự kiện sourcing mang lại lưu trữ lâu dài trạng thái của một aggregate:


*

Một hành động liên quan cho business sẽ được gọi bên trên một aggregate hiện có. Hai events trước đã được bảo trì cho aggregate này


*

Trước lúc yêu ước được xử lý, một instance rỗng của aggregate được tạo nên và những events được lưu trữ trước kia chạy lại bên trên aggregate. Aggregate chỉ gọi trạng thái các event tương ứng và không tồn tại business như thế nào được thực thi. Khi hoàn thành, aggregate đựng trạng thái lúc này của nó trong cỗ nhớ.


*

Yêu cầu được gật đầu đồng ý bởi aggregate, chứng thực trạng thái hiện tại và xử lý,..Domain xúc tích và ngắn gọn tương ứng được thực thi. Tại thời điểm đó, chưa tồn tại trạng thái nội cỗ nào của aggregate bị nắm đổi, điều đó chỉ được thực hiện sau khoản thời gian việc xử lý event tạo ra trong quy trình triệu gọi.


*

Những điểm mạnh chính được liệt kê bên dưới khi sử dụng event sourcing:

Event được giữ trữ không chỉ mô tả trạng thái hiện tại của đối tượng người tiêu dùng mà còn cho biết lịch sử của quá trình tạo ra nó.Nó có thể tái gây ra lại trong bất kì thời điểm như thế nào cho bất cứ trạng thái nào trong quá khứ bởi vấn đề chạy lại các sự kiện với một mốc thời gian nhất định.Có thể đọc được việc sử dụng sự kiện sourcing để xử lý processing lỗi của các event trước đó hoặc các event bị trì hoãn.

Xem thêm: Cách Chơi Angry Birds - 6 'Bí Kíp' Cần Biết Khi Chơi Angry Birds 2

Việc triển khai sự kiện sourcing cũng đòi hỏi một quan niệm và technology phức tạp nhất định. Các event không được phép biến đổi một khi vẫn tồn tại, trong lúc domain xúc tích thường cách tân và phát triển theo thời gian. Vày vậy code phải có tác dụng xử lý các event thậm chí là khôn cùng cũ.Snapshots quan trọng để có thể xây dựng lại trạng thái dựa trên lượng lớn lịch sử vẻ vang của các sự kiện theo cách thức nào đó.

Events ở sự kiện Sourcing khác tên miền Events

Vậy nguyên nhân tôi cho là 2 khái niệm này sẽ không thực sự khớp nhau vì thế ?

Hãy chăm chú ví dụ bên dưới: trong một domain đến việc chia sẻ xe đạp, một người tiêu dùng muốn đăng kí để thuê một mẫu xe đạp. Tất yếu một mẫu thì cũng phải thanh toán giao dịch cho nó, loại mà được làm thông qua bí quyết tiếp cận tiền thanh toán giao dịch là áp dụng ví điện tử.

Các phần tương quan của bản đồ bối cảnh cho domain này trông như mặt dưới:


*

Xử lý đăng kí thao tác làm việc như bên dưới:

Người sử dụng nhập số năng lượng điện thoại của bản thân thông qua áp dụng mobile.Người cần sử dụng nhận một mã tự SMS để xác thực số điện thoại.Người dùng nhập mã xác nhận.Người dùng nhập thêm những thông tin cụ thể như tên, địa chỉ,.. Và dứt việc đăng kí.

Xử lý này được thực thi trong aggregate UserRegistration trong bounded context Registration. Người dùng tương tác với instance của aggregate UserRegistration một vài lần trong quy trình đăng kí. Tâm lý của UserRegistration được xây cất từng bước cho tới khi việc đăng kí trả thành. Sau thời điểm hoàn thành, fan dùng có thể trả tầm giá ví điện tử với thuê xe đạp.

Bây giờ, nếu sự kiện sourcing được thực hiện để quản lý trạng thái của aggregate UserRegistration, những sự kiện theo sau (chứa trạng thái liên quan tương ứng) được chế tạo và duy trì theo thời gian:

MobileNumberProvided(MobileNumber)VerificationCodeGenerated (VerificationCode)MobileNumberValidated (không thêm trạng thái)UserDetailsProvided (FullName, Addresss,...)

Những sự kiện này là không hề thiếu để tái kiến tạo trạng thái bây giờ của aggregate UserRegistration tại bất kể thời điểm nào. Vấn đề thêm sự kiện là không đề xuất thiết, đặc trưng không có event nào thể hiện việc đăng kí đã hoàn thành. Thực tiễn này được biết thêm với aggregate UserRegistration domain ngắn gọn xúc tích nội cỗ của nó ngay lập tức khi sự kiện UserDetailsProvided được xử lý. Theo đó, một instance của một UserRegistration có thể trả lời tại bất kỳ thời điểm như thế nào liệu vấn đề đăng kí đã dứt hay chưa.

Ngoài ra, mỗi event chỉ đựng trạng thái mẫu mà quan trọng để có thể tái kiến thiết trạng thái của aggregate trong những khi chạy lại. Thường thì đây chỉ là những trạng thái bị ảnh hưởng bởi vấn đề triệu hotline event. Từ phương pháp tiếp cận của sự kiện sourcing, sẽ không có chân thành và ý nghĩa để lưu giữ thêm tinh thần trên sự kiện mà không bị tác động của bài toán triệu gọi. Như vậy, nếu sự kiện UserRegistration đã được duy trì, nó sẽ không chứa thêm bất kỳ trạng thái nào.

Aggregate UserRegistration cũng hoàn toàn có thể publish tới những phần khác bên phía trong hoặc bên ngoài bounded context và vày đó có thể kích hoạt thêm domain xúc tích và ngắn gọn hoặc update một số trạng thái khác. Trong lấy ví dụ như của bọn chúng ta, chính là 2 bounded context Accounting (cho câu hỏi khởi tạo thành ví năng lượng điện tử) với Rental (dành cho việc tạo người dùng đã đăng kí).

Thảo luận

Trong bài xích viết, tác giả đã giải thích sự khác nhau giữ domain events và event sourcing, hầu như yêu điểm của sự kiện sourcing. Đồng thời làm rõ bao giờ sử dụng chúng.Hy vọng sẽ mang về cho chúng ta một số điểm hữu ích.

Leave a Reply

Your email address will not be published. Required fields are marked *

CÙNG CHUYÊN MỤC MỚI

  • Connect broadband connection là gì

  • Hgu và sfu là gì

  • Enter network credentials là gì

  • Rela có nghĩa là gì

  • x

    Welcome Back!

    Login to your account below

    Retrieve your password

    Please enter your username or email address to reset your password.