一 服务间的调用
1.1 调用的方式
无论是微服务还是
SOA
,都面临着服务间的远程调用。常见的远程调用方式有以下2
种:
1.RPC
:
Remote Produce Call
远程过程调用,
RPC基于Socket,工作在会话层。自定义数据格式
,速度快,效 率高。早期的webservice
,现在热门的
dubbo
,都是
RPC
的典型代表
2.Http
:
http
其实是
一种网络传输协议,基于TCP,工作在应用层,规定了数据传输的格式
。现在客户端浏览器与服务端通信基本都是采用Http
协议,也可以用来进行远程服务调用。缺点是消息封装臃肿,优势是对服务的 提供和调用方没有任何技术限定,自由灵活,更符合微服务理念。
现在热门的
Rest
风格,就可以通过
http协议来实现。
选择
Spring Cloud
套件,使用
Http
方式来实现服务间调用。
1.2 http调用工具
例如:
HttpClient
OKHttp
URLConnection
pring
也有对
http
的客户端进行封装,提供了工具类叫
RestTemplate
1.3 RestTemplate
Spring
提供了一个
RestTemplate
模板工具类,对
基于Http的客户端进行了封装,并且实现了对象与json的序列化和 反序列化,非常方便
。RestTemplate
并没有限定
Http
的客户端类型,而是进行了抽象,目前常用的
3
种都有支持:
HttpClient
OkHttp
JDK
原生的
URLConnection
(默认的)
二 RestTemplate
通过
RestTemplate
的
getForObject()
方法,传递
url
地址及实体类的字节码
,RestTemplate会自动发起请求,接 收响应,并且帮我们对响应结果进行反序列化。
1.启动类注册RestTemplate
2.启动springboot项目,在项目中的测试类中直接 @Autowired 注入
其实就是:将调用远程服务返回的json串,反序列化成对象