常用的RPC架構系列---http client和RestTemplate

常用的RPC架構系列---http client和RestTemplate

HTTP Client

超文本傳輸協議(http)應該可以說是現在互聯網上使用最多最重要的協議了,http協議不僅僅能使我們瀏覽器上網,還廣泛應用在各個系統之間的通信,WebService就是基於http協議進行傳輸的一種協議。

JDK自帶的java.net包下提供了基於HTTP協議的api,但是這個功能並沒有完善,因此在實際項目中,還是使用第三方組件apache下的httpclient。新的HttpComponents分別HttpClient和HttpCore兩個模塊。其中HttpClient提供了面向用戶的API,而HttpCore提供了比較底層的API。我們使用HttpClient就能滿足我們的需求,而且HttpClient使用起來簡單,方便。

http client使用步驟

在使用之前,先創建服務提供方的代碼:

使用httpClient大致分為五個步驟:

要使用Http Client,先引入依賴:

1,構建httpclient對象

2,構建uri對象

3,構建請求對象

HttpClient支持http/1.1規範中定義的get,head,post,put,delete,trace,options。httpClient為其提供了對應的對象HttpGet,HttpHead,HttpPost,HttpPut,HttpDelete,HttpTrace,HttpOptions。我們使用最多的也就是HttpGet和HttpPost。

4,發送請求

5,獲取請求結果

常用的RPC架構系列---http client和RestTemplate

以上步驟是不是很繁瑣?當然,HttpClient還提供了流式API更加方便,簡單創建http請求

HttpClient流式API

引入支持流式api依賴:

使用方式如下:

效果:

常用的RPC架構系列---http client和RestTemplate

RestTemplate

RestTemplate相對於在使用springcloud的開發人員來說就很簡單明瞭了。RestTemplate是Spring提供的用於訪問Rest服務的客戶端,RestTemplate提供了多種便捷訪問遠程Http服務的方法,能夠大大提高客戶端的編寫效率。

RestTemplate提供的API很豐富

常用的RPC架構系列---http client和RestTemplate

在springcloud架構的微服務中,直接引用即可:

引申:RPC與分佈式服務框架的區別

rpc實現了服務消費者調用方client與服務提供方server之間的點對點調用方式,調用方與服務方一般採用直連的調用方式。

而分佈式服務框架,除了包括RPC的特性之外,還包括多臺server提供服務的負載均衡策略以及實現方式,服務註冊,發佈與引入,服務治理,網關等特性。

總得來說,分佈式服務框架包含了RPC的特性。

本人水平有限,難免有錯誤或遺漏之處,望大家指正和諒解,提出寶貴意見,願與之交流。


分享到:


相關文章: