Event sourcing là gì

Domain Events có điểm bình thường gì với Event Sourcing ? Chắc chắn từ bỏ "event" trong thương hiệu của chúng. Nhưng Nhiều hơn, khi nói tới phong cách thiết kế và bên nhà cải tiến và phát triển trong số dự án, trên các hội nghị hoặc đào tạo, tôi thường xuyên nghe rằng tên miền sự kiện rất cân xứng với event sourcing cùng rằng event sourcing là một ý tưởng nguồn của tên miền events. Trong nội dung bài viết này tôi mong ước bắt lược tại sao cá nhân tôi không đồng tình với quan tiền đặc điểm này.

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

Thứ nhất tôi vẫn tranh luận tại sao tôi ko chia sẻ quan điểm này, tôi ý muốn đảm bảo một biện pháp hiểu không thiếu thốn về domain name events với sự kiện sourcing.

Domain Events

Trong kiến thiết domain-driven, tên miền events được biểu lộ như một số trong những việc xẩy ra vào tên miền và là quan trọng cùng với tên miền experts. Thông thường events xảy ra bất kỳ domain name được triển khai vào khối hệ thống ứng dụng sinh hoạt cấp độ làm sao. Chúng cũng hòa bình với các công nghệ. Theo kia, tên miền event về khía cạnh ngữ nghĩa quý hiếm cao, bọn chúng được bộc lộ vào ngôn từ nói vì domain name experts. Ví dụ như:

Một người tiêu dùng đã làm được đăng kí.Một hóa 1-1 đã nhận được.Hạn thanh hao tân oán đã mất hạn.

Domain events bao gồm liên quan cả bên phía trong một bounded context với chạy qua các bounded contenxt mang lại bài toán thực thi các processes bên phía trong domain name.

Event Sourcing

Martin Fowler diễn đạt điểm lưu ý chính của event sourcing trong bài viết của ông nlỗi sau:

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

Ttuyệt bởi lưu trạng thái ngày nay phía bên trong ứng dụng một phương pháp trực tiếp, bởi các ngôi trường trong bảng đại lý tài liệu thì sẽ triển khai lưu giữ một list những events, sau khoản thời gian triển khai chạy theo lần lượt các sự kiện này chúng ta sẽ sở hữu được được tâm trạng hiện giờ của đối tượng người tiêu dùng. Nó sẽ ảnh hưởng ghi đtrằn bởi vì các chuyển đổi sau đó.

Event sourcing là một quan niệm tầm thường, mà lại thường được trao đổi trong toàn cảnh của xây cất domain-driven trong vấn đề kết nối cùng với aggregates. Vì ráng tôi sử dụng sự bền chắc của aggregates nhỏng một ví dụ cho việc sử dụng sự kiện sourcing.

Sự tiếp nối bên dưới đã cho thấy quá trình liên quan Khi áp dụng sự kiện sourcing mang lại tàng trữ lâu dài hơn tâm trạng của một aggregate:

*

Một hành vi liên quan mang đến business sẽ được Gọi trên một aggregate hiện nay có. Hai events trước đã được duy trì mang lại aggregate này

*

Trước Lúc thử khám phá được cách xử trí, một instance rỗng của aggregate được tạo ra cùng các events được lưu trữ trước đó chạy lại trên aggregate. Aggregate chỉ gọi tinh thần những sự kiện khớp ứng với không tồn tại business làm sao được triển khai. Khi ngừng, aggregate cất tinh thần hiện thời của nó vào bộ lưu trữ.

*

Yêu cầu được đồng ý bởi vì aggregate, xác nhận tâm trạng hiện thời với xử trí,..Domain xúc tích tương ứng được thực hiện. Tại thời điểm này, chưa xuất hiện tâm lý nội cỗ như thế nào của aggregate bị biến hóa, điều đó chỉ được triển khai sau khoản thời gian câu hỏi xử trí sự kiện tạo ra vào quy trình triệu Gọi.

*

Nlỗi một tác dụng của quy trình cách xử lý đòi hỏi, aggregate sản sinh một event (hoặc một vài ba event), bao gồm trạng thái được đề xuất cho Việc tái kiến tạo trạng thái vào aggregate. Event được duy trì những điều đó, nó có thể được áp dụng cho bài toán điện thoại tư vấn sau này.

Xem thêm: Có Nên Bỏ Hơn 8 Triệu Để Mua Nintendo Switch Đánh Giá, Nintendo Switch Review

Những ưu điểm chính được liệt kê dưới Khi áp dụng sự kiện sourcing:

Event được lưu trữ không chỉ bộc lộ tâm lý hiện tại của đối tượng người sử dụng ngoại giả cho thấy thêm lịch sử của quá trình tạo nên nó.Nó hoàn toàn có thể tái chế tạo lại vào bất kỳ thời gian như thế nào cho bất kì tâm trạng làm sao trong thừa khđọng do Việc chạy lại các event với 1 mốc thời hạn khăng khăng.Có thể phát âm được câu hỏi sử dụng event sourcing nhằm xử lý processing lỗi của các event trước đó hoặc những event bị trì hoãn.

Việc thực hiện event sourcing cũng yên cầu một quan niệm với technology phức tạp nhất định. Các sự kiện không được phép biến đổi một lúc vẫn mãi mãi, trong những khi domain súc tích thường xuyên trở nên tân tiến theo thời hạn. Vì vậy code cần có chức năng xử trí các event thậm chí còn là cực kỳ cũ.Snapshots quan trọng nhằm có thể tạo lại tâm trạng dựa trên lượng to lịch sử vẻ vang của các sự kiện theo phương pháp như thế nào kia.

Events làm việc Event Sourcing không giống Domain Events

Vậy tại vì sao tôi nghĩ rằng 2 có mang này không thực sự khớp nhau như vậy ?

Hãy chu đáo ví dụ bên dưới: Trong một domain name cho Việc share xe đạp điện, một người tiêu dùng mong muốn đăng kí để thuê một cái xe đạp điện. Tất nhiên một chiếc thì cũng bắt buộc thanh hao toán cho nó, dòng mà lại được gia công thông qua cách tiếp cận tiền tkhô giòn toán là sử dụng ví năng lượng điện tử.

Các phần tương quan của bản thứ bối cảnh mang lại tên miền này trông nhỏng bên 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ố điện thoại cảm ứng thông minh của chính bản thân mình trải qua áp dụng điện thoại.Người cần sử dụng thừa nhận một mã trường đoản cú SMS để xác nhận số điện thoại cảm ứng thông minh.Người sử dụng nhập mã xác nhận.Người cần sử dụng nhập thêm các thông báo cụ thể như tên, địa chỉ,.. cùng ngừng vấn đề đăng kí.

Xử lý này được tiến hành vào aggregate UserRegistration trong bounded context Registration. Người sử dụng tác động với instance của aggregate UserRegistration một vài ba lần trong quy trình đăng kí. Trạng thái của UserRegistration được xây dừng từng bước cho tới lúc bài toán đăng kí dứt. Sau khi dứt, người tiêu dùng có thể trả phí tổn ví năng lượng điện tử và thuê xe đạp điện.

Bây giờ, giả dụ event sourcing được sử dụng để quản lý tinh thần của aggregate UserRegistration, phần lớn sự kiện theo sau (cất trạng thái tương quan tương ứng) được chế tạo và bảo trì theo thời gian:

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

Những sự kiện này là không thiếu thốn nhằm tái kiến thiết tâm lý hiện giờ của aggregate UserRegistration trên bất kể thời điểm như thế nào. Việc thêm sự kiện là không cần thiết, quan trọng đặc biệt không có event như thế nào diễn đạt việc đăng kí đã xong xuôi. Thực tế này được biết cùng với aggregate UserRegistration domain ngắn gọn xúc tích nội cỗ của chính nó ngay trong lúc sự kiện UserDetailsProvided được xử lý. Theo kia, một instance của một UserRegistration rất có thể trả lời tại bất kể thời gian làm sao liệu vấn đề đăng kí đã xong xuôi tốt không.

Bên cạnh đó, mỗi event chỉ đựng tinh thần dòng cơ mà quan trọng để hoàn toàn có thể tái thi công tâm lý của aggregate trong những lúc chạy lại. Đôi khi trên đây chỉ nên các tâm lý bị tác động vì chưng việc triệu Hotline event. Từ giải pháp tiếp cận của event sourcing, đang không tồn tại chân thành và ý nghĩa để lưu giữ thêm trạng thái bên trên event cơ mà không xẩy ra tác động của vấn đề triệu Call. vì vậy, nếu như event UserRegistration đã được duy trì, nó sẽ không còn đựng thêm bất cứ tâm trạng làm sao.

Aggregate UserRegistration cũng rất có thể publish tới những phần khác bên trong hoặc bên ngoài bounded context và cho nên vì vậy hoàn toàn có thể kích hoạt thêm tên miền súc tích hoặc cập nhật một số tâm lý không giống. Trong ví dụ của họ, chính là 2 bounded context Accounting (mang lại vấn đề khởi tạo nên ví điện tử) với Rental (dành cho câu hỏi sản xuất người dùng vẫn đăng kí).

Xem thêm: Ghost Windows 7 Sp1 X86 - Nobabcall — Download Ghost Win 7 Office 2003

Thảo luận

Trong nội dung bài viết, người sáng tác vẫn giải thích sự không giống nhau giữ lại Domain events cùng Event sourcing, hầu như yêu thương điểm của sự kiện sourcing. Đồng thời làm rõ lúc nào áp dụng chúng.Hy vọng sẽ mang lại mang đến chúng ta một số điểm có ích.


Chuyên mục: Công Nghệ