微服务或者SOA都会面临服务间的远程调用,
服务间的远程调用有2种方式:
- 1. RPC
Remote Produce Call 远程过程调用,自定义数据格式,基于原生TCP通信,速度快、效率高。
WebService, Dubbo都是RPC的代表。
- 2. HTTP
HTTP是一种网络传输协议,基于TCP,规定数据传输的格式。
- 优点:对服务的提供和调用方没有技术限定,更符合微服务理念
- 缺点:消息封装臃肿
应用场景
- Dubbo: 公司全部采用Java技术栈
- Spring Cloud:技术栈多样化(多种语言开发),更青睐Spring。(证券公司的服务器用C编写)
HTTP客户端工具
- HttpClient
- OKHttp
- HttpUrlConnection
客户端工具不同,API也不同。 Spring ResetTemplate
Spring提供ResetTemplate模板工具类,对基于http的客户端进行封装。实现对象与json的序列化和反序列化,非常方便。
ResetTemplate没有限定http客户端类型,支持三种客户端。
- HttpClient
- OKHttp
- JDK原生的HttpUrlConnection(默认)