如果一个系统被拆分成多个微服务,那么每个微服务间需要互相通信协作才能作为一个整体对外服务。而系统间的通信协作通常有两种,Http/RPC通信与消息通信。
Http/RPC通信的优点是通信实时,不过服务之间的耦合性高,类似使用Fegin组件实现远程过程调用时,由于耦合性较高,为了避免出现服务雪崩的情况,还得引入容错组件,如Sentinel,Hystrix等。
消息通信的话,主要就是降低了服务之间的耦合性,提高了系统的处理能力和响应速度,不过通信却不是实时的了。
Http/RPC通信与消息通信并不是说二者选其一,完全可以配合使用,对于那些实时性不高的业务链路,可以把链路上依赖性不强一些业务操作剥离出来,使用消息通信方式来做通信,加快请求响应速度。而对于那些强耦合的业务,就不能采用消息通信的方式,得使用Http/RPC通信来保证业务流程的准确性,从而保证数据的一致性。