SpringCloud-服务调用方式

1. 服务调用方式

1.1 RPC和HTTP

       无论是微服务还是 SOA ,都面临着服务间的远程调用。那么服务间的远程调用方式有哪些呢?
常见的远程调用方式有以下 2 种:
RPC Remote Produce Call 远程过程调用, RPC 基于 Socket ,工作在会话层。自定义数据格式 ,速度快,效
率高。早期的 webservice ,现在热门的 dubbo ,都是 RPC 的典型代表
Http http 其实是 一种网络传输协议,基于 TCP ,工作在应用层,规定了数据传输的格式 。现在客户端浏览器
与服务端通信基本都是采用 Http 协议,也可以用来进行远程服务调用。缺点是消息封装臃肿,优势是对服务的
提供和调用方没有任何技术限定,自由灵活,更符合微服务理念。
现在热门的 Rest 风格,就可以通过 http 协议来实现。
区别 RPC 的机制是根据语言的 API language API )来定义的,而不是根据基于网络的应用来定义的。
如果你们公司全部采用 Java 技术栈,那么使用 Dubbo 作为微服务架构是一个不错的选择。
相反,如果公司的技术栈多样化,而且你更青睐 Spring 家族,那么 Spring Cloud 搭建微服务是不二之选。在我们的项
目中,会选择 Spring Cloud 套件,因此会使用 Http 方式来实现服务间调用。
 

 

 

1.2Http客户端工具

既然微服务选择了 Http ,那么我们就需要考虑自己来实现对请求和响应的处理。不过开源世界已经有很多的 http 客户
端工具,能够帮助我们做这些事情,例如:
  1. HttpClient
  2. OKHttp
  3. URLConnection
不过这些不同的客户端, API 各不相同。而 Spring 也有对 http 的客户端进行封装,提供了工具类叫 RestTemplate
 

2.3. SpringRestTemplate(细节很多,需要大量学习,掌握其中方法)

Spring 提供了一个 RestTemplate 模板工具类,对基于 Http 的客户端进行了封装,并且实现了对象与 json 的序列化和
反序列化,非常方便。 RestTemplate 并没有限定 Http 的客户端类型,而是进行了抽象,目前常用的 3 种都有支持:
HttpClient
OkHttp
JDK 原生的 URLConnection (默认的)
 
 

猜你喜欢

转载自blog.csdn.net/SSbandianH/article/details/109337811