目录
1、微服务间如何通讯?
问题描述:
在什么情况下服务与服务之间需要通讯,肯定是调用它的什么接口或者是依赖于它的什么样数据、什么样功能,在单体架构中,这种情况是比较少见的,因为一个系统在一个应用里已经完成了相关的功能,当然也不排除有些功能和接口是来源于其他系统的,在单体架构中我们常用的方案有几种,一个是直接把其他系统的链接拿过来,把内容嵌入到页面里,还有可能是使用TCP Client来调用对方的TCP接口从而拿到返回的数据,这是在单体架构中两个比较常见的方案。但是微服务就要系统的考虑一下,因为微服务特别的多,并且他们之间的调用非常频繁的,所以我们必须事先设计好,微服务之间怎么样才能高效、快捷方便地通讯。
1.1、从通讯模式角度考虑
一对一还是一对多?同步还是异步?
1.2、从通讯协议角度考虑
▶ REST API
▶ RPC(微服务通讯使用的最多的一种)
①如何选择一个RPC框架
● I/O — 是同步的I/O还是异步非阻塞的NIO,是长连接(只要连接上了就会尽量保持连接状态,而不会去主动断掉)还是短链接(一次请求响应完成之后就关闭连接,如HTTP);
● 线程调度模型的 — 是单线程还是多线程,线程的调度算法的性能怎样;
● 序列化方式 — 可读的(XML、JSON)还是二进制(人工不可见的,比如JDK自带的序列化);注意:序列化的效率直接影响了RPC通讯的效率,序列化