关于HttpClient 远程调用的方式

323 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第14天,点击查看活动详情

前言

http协议目前应该是互联网中,首要的远程调用协议,连接着服务端于客户端,本身http请求是无状态的,但是HttpClient不仅能支持最基本的http协议,还是对状态结果进行返回,包括参数的传递,HttpClient更像是一个http客户端的传输类库,与webService不同的是,webService是服务端,而HttpClient做为客户端去调用服务端。

HttpClient几种实现方式

HttpURLConnection

最原始的基于Java的标准类,没有任何封装,使用起来也不是很方便。

java.net.http.HttpClient

基于JDK11的HttpClient,代替了HttpURLConnection。

Apache HttpClient

Apache的HttpClient模块,属于一个增强版的HttpURLConnection,只关注于发送http请求,接收响应,建立http连接。

okHttp

现在用的比较多的HttpClient工具,包括现在的okHttp3,优势也是比较多,比如链路的复用、请求失败自动重连、返回的缓存机制、DNS扩展等,Feign也集成了okHttp,作为远程调用的一个媒介。

RestTemplate

基于Spring提供的Rest服务的客户端,封装了很多种请求的方法,之前一篇文章有介绍到Spring RestTemplate 模版解析 - 掘金

OpenFeign

现在比较火的调用方式,基于ribbon的负载均衡,包括了以上的全部客户端(URLConnection、apache httpclient、okhttp,ribbon),支持hystrix 熔断、降级机制,支持日志,重点!可以不依赖注册中心独立运行,是Spring Cloud在Feign的基础上支持Spring MVC的注解,通过动态代理的方式产生类,实现负载均衡远程到其他服务。

Retrofit

Retrofit 是 Square 公司出品的默认基于 OkHttp 封装的一套 RESTful 网络请求框架,一般我开过的项目的架构基本都是Spring Cloud,基本都是搭配OpenFeign+okHttp使用,如果没有使用Cloud,可以选择Retrofit,但是需要花时间去了解、学习,后面也会学习Retrofit配合RxJava使用的方式。

总结

以上就是一些HttpClient的一些实现框架,都是一步步演变而来,从最开始基础版,慢慢升级、集成了一些组件,使远程调用更加多样化,可以支持我们的业务端多种玩法,但是万变不离其宗,底层永远是最基本的,学好底层架构才能更好的进行扩展。