乐优商场项目day02——服务调用方式 之 Http
学习 服务调用方式 Http 之前,请先点击了解一下 系统架构的演变 。
其中的微服务和SOA,都需要用到 服务间的远程调用。
常有的原创调用方式有 RPC 和 Http.
-
RPC:Remote Produce Call远程过程调用,类似的还有RMI。自定义数据格式,基于原生TCP通信,速度快,效率高。早期的webservice,现在热门的dubbo,都是RPC的典型代表
-
Http:http其实是一种网络传输协议,基于TCP,规定了数据传输的格式。现在客户端浏览器与服务端通信基本都是采用Http协议,也可以用来进行远程服务调用。缺点是消息封装臃肿,优势是对服务的提供和调用方没有任何技术限定,自由灵活,更符合微服务理念。
比如 Rest风格,就可以通过http协议来实现。
如果项目人员全部都是采用Java技术栈,使用Dubbo作为微服务架构是一个不错的选择。
而如果公司的技术栈多样化,而且你更喜欢Spring,那么你就可以选择SpringCloud搭建微服务。
我们将要写的乐优商场项目中,会选择SpringCloud套件,因此我们会使用Http方式来实现服务间调用。
接下来我们就来试一下Http远程调用技术.
把工程模块放到工作空间里
然后去idea里打开:
然后选择刚刚放入的过程模块
后面 一直 Next下 一步,finish 就可以。(就不一一截图了)
我们就把demo工程成功导入了。启动器,和依赖 都配好了。 可以直接使用。
设置一下jdk
然后我们去test里面看看:(测试方式已经写好了)
点击第一个测试方法,以get的方式调用远程接口,它会访问百度的首页,并将百度首页的源码给打印出来。
然后我们再点击第二个测试方法,以post的方式调用远程接口,它会访问开源中国的首页,并将开源中国首页的源码给打印出来。
第一个测试和第二个测试的区别是,第一个是get请求,第二个是post请求。
下面我们再试试第三个测试方法,远程调用自己的接口。
在这之前,我们先将之前的实战项目启动起来,并测试是否能正常访问。
到引导类里去启动:
启动成功后,访问http://localhost:8888/user/1
运行访问成功。
然后我们试试第三个测试:
可以看到访问成功了!远程调用自己的接口成功了!
这里我们再顺便学一下 序列化 与 反序列化:
先定义一个MAPPER工具
然后编写代码,运行测试:
这就是 序列化 与 反序列化。
不过,这是我们手动序列化与反序列化。
Spring其实提供了一个RestTemplate模板工具类,对基于Http的客户端进行进行了封装,实现了 对象 与 json 之间的自动 序列化 与 反序列化。
我们来试一下
这样就使用成功了!
这里,我们了解一下总结使用 Http的服务调用方式。
其实已经有很多的http客户端工具,不用我们自己去写那么多代码,它们能够帮助我们做来实现对请求和响应的处理 ,例如:
-
HttpClient
-
OKHttp
-
URLConnection
后面用到相关工具的时候会学。
(并且 Spring 的 RestTemplate没有限定Http的客户端类型,而是进行了抽象,以上三种都可以支持)