关于微服务调用的一些问题,在调用和同步之间的抉择?
当项目A需要项目B的数据时,有两种方式可以获取,一种时通过openfeign
等工具调用B,另一种则是在项目A中存储这个实例,当这个实例在项目B发生改变时,发出消息通知,A订阅消息,做出改变。这两种方法各有好坏。
- 调用接口的方式能够很轻易的保证数据的一致性,但不能保证项目的可用性。当项目B下线或者出现异常的时候。可能导致A不能正常工作,而且就A单独也无法独自完成业务和部署,这和微服务的本质是否有冲突?
- 消息通知的方式看起来很美好,它能让项目工作,可用性增强了很多。但系统复杂度上升,维护成本增加。从总体上来看收益并不可观。
在之前的概念中,一直倾向于第一种方式,因为简单,方便。但在看《微服务架构设计模式》的时候,发现作者使用的是第二种方式,就产生了一种疑问,是否仅仅是第二种方式更加的符合理论,但在实际生产中,并不常用?
回答:
真正实际生产过程中两种都使用,如果要一定保证数据的一致性就用第一种,否则可以使用第二种不仅增强系统可用性还可以减少访问延迟,在大项目里用第二种是非常常见的
回答:
在实际中更多的还是看业务目标再选择相应的中间件。
服务间的调用有两种常见方式:RPC与HTTP,RPC(Remote Produce Call ,远程过程调用),速度快,效率高。热门的Dubbo,、gRPC 等,都是RPC的典型代表。HTTP协议( HyperText Transfer Protocol,超文本传输协议 ),是应用最广泛的一种网络传输协议。目前热门的RESTful形式的开发方式,就是通过HTTP协议来实现的,RestTemplate、Feign等都是HTTP的典型代表。
以上是 关于微服务调用的一些问题,在调用和同步之间的抉择? 的全部内容, 来源链接: utcz.com/p/944798.html