当项目A需要项目B的数据时,有两种方式可以获取,一种时通过openfeign
等工具调用B,另一种则是在项目A中存储这个实例,当这个实例在项目B发生改变时,发出消息通知,A订阅消息,做出改变。这两种方法各有好坏。
- 调用接口的方式能够很轻易的保证数据的一致性,但不能保证项目的可用性。当项目B下线或者出现异常的时候。可能导致A不能正常工作,而且就A单独也无法独自完成业务和部署,这和微服务的本质是否有冲突?
- 消息通知的方式看起来很美好,它能让项目工作,可用性增强了很多。但系统复杂度上升,维护成本增加。从总体上来看收益并不可观。
在之前的概念中,一直倾向于第一种方式,因为简单,方便。但在看《微服务架构设计模式》的时候,发现作者使用的是第二种方式,就产生了一种疑问,是否仅仅是第二种方式更加的符合理论,但在实际生产中,并不常用?
真正实际生产过程中两种都使用,如果要一定保证数据的一致性就用第一种,否则可以使用第二种不仅增强系统可用性还可以减少访问延迟,在大项目里用第二种是非常常见的