我正在做一个研究项目,正在研究处理事件驱动的微服务体系结构中的更改的选项。
因此,假设我们有一个应用程序,其中有四个不同的服务。这些服务中的每一个都有自己的数据库来存储本地数据。
在此设置中,这四个服务使用事件总线相互通信。因此,当服务中发生某些事情时,它会发布一个事件。所有对该事件感兴趣的其他服务都将以自己的方式对其进行处理。
在那种情况下,架构中的不同服务需要就这些事件(属性等)的内容订立“合同”。因此,服务对这些事件具有“松散耦合的依赖性”
我的问题是: 我们如何应对这些事件的变化?
因此,假设服务A在应用程序中注册了新用户。因此,它发送一个“ UserRegistered”事件,服务B拾取该事件并对其进行处理,但是服务C小组的一些开发人员决定他们也需要注册用户的性别,因此该事件被更改,属性性别被添加到“ UserRegistered”事件。
我们如何确保服务B仍可以在不重新部署的情况下使用该额外属性来拾取同一事件?
还有其他方法可以解决此问题,然后对这些事件进行版本控制吗?