Tôi đang thực hiện một dự án nghiên cứu trong đó tôi đang nghiên cứu các tùy chọn để xử lý các thay đổi trong kiến trúc microservice hướng sự kiện.
Vì vậy, giả sử chúng tôi có một ứng dụng nơi chúng tôi có bốn dịch vụ khác nhau. Mỗi dịch vụ này có một cơ sở dữ liệu riêng để lưu trữ dữ liệu cục bộ.
Trong thiết lập này, bốn dịch vụ liên lạc với nhau bằng Bus sự kiện. Vì vậy, khi một cái gì đó xảy ra trong một dịch vụ, nó xuất bản một sự kiện. Tất cả các dịch vụ khác quan tâm đến sự kiện đó sẽ xử lý nó theo cách riêng của họ.
Trong trường hợp đó, các dịch vụ khác nhau trong kiến trúc cần phải có "hợp đồng" về nội dung của các sự kiện này (thuộc tính, v.v.). Vì vậy, các dịch vụ có "sự phụ thuộc liên kết lỏng lẻo" với các sự kiện này
Câu hỏi của tôi là: Làm thế nào chúng ta có thể xử lý những thay đổi trong những sự kiện này?
Vì vậy, giả sử dịch vụ A đăng ký người dùng mới trong ứng dụng. Vì vậy, nó sẽ gửi một sự kiện "" UserRegistered ". Dịch vụ B chọn sự kiện đó và xử lý nó. Nhưng một số nhà phát triển trong nhóm dịch vụ C đã quyết định rằng họ cũng cần giới tính của người dùng đã đăng ký. Vì vậy, sự kiện được thay đổi và giới tính thuộc tính được thêm vào sự kiện "UserRegistered".
Làm cách nào chúng tôi có thể đảm bảo rằng Dịch vụ B vẫn có thể chọn cùng một sự kiện với thuộc tính bổ sung đó mà không cần triển khai lại?
Và có những cách khác để tiếp cận vấn đề này sau đó phiên bản những sự kiện này?