掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
和傳統(tǒng)的單體架構(gòu)相比,分布式多了一個遠程服務(wù)之間的通信,不管是 soa 還是微服務(wù),他們本 質(zhì)上都是對于業(yè)務(wù)服務(wù)的提煉和復(fù)用。那么遠程服務(wù)之間的調(diào)用才是實現(xiàn)分布式的關(guān)鍵因素。

1、HTTP 應(yīng)用協(xié)議的通信框架
1. HttpURLConnection java 原生 HttpURLConnection是基于http協(xié)議的,支持get,post,put,delete等各種請求方 式,最常用的就是get和post
2. Apache Common HttpClient HttpClient 是Apache Common 下的子項目,可以用來提供高效的、最新的、功能豐富的支持 HTTP 協(xié)議的客戶端編程工具包,并且它支持 HTTP 協(xié)議最新的版本。
3. OKhttp3 OKHttp是一個當前主流的網(wǎng)絡(luò)請求的開源框架, 用于替代HttpUrlConnection和Apache HttpClient
4. RestTemplate Spring RestTemplate 是 Spring 提供的用于訪問 Rest 服務(wù)的客戶端,RestTemplate 提供了多 種便捷訪問遠程Http服務(wù)的方法,能夠大大提高客戶端的編寫效率,所以很多客戶端比如 Android 或者第三方服務(wù)商都是使用 RestTemplate 請求 restful 服務(wù)。
RPC全稱為remote procedure call,即遠程過程調(diào)用。借助RPC可以做到像本地調(diào)用一樣調(diào)用遠 程服務(wù),是一種進程間的通信方式. 。常見的RPC框架有以下幾種。
1. Java RMI Java RMI(Romote Method Invocation)是一種基于Java的遠程方法調(diào)用技術(shù),是Java特有的一 種RPC實現(xiàn)。
2. Hessian
Hessian是一個輕量級的remoting onhttp工具,使用簡單的方法提供了RMI的功能. 相比 WebService,Hessian更簡單、快捷。采用的是二進制RPC協(xié)議,因為采用的是二進制協(xié)議,所以 它很適合于發(fā)送二進制數(shù)據(jù)。
3. Dubbo
Dubbo是阿里巴巴公司開源的一個高性能優(yōu)秀的服務(wù)框架,使得應(yīng)用可通過高性能的 RPC 實現(xiàn)服 務(wù)的輸出和輸入功能,可以和Spring框架無縫集成。Dubbo是一款高性能、輕量級的開源Java RPC 框架,它提供了三大核心能力:面向接口的遠程方法調(diào)用,智能容錯和負載均衡,以及服務(wù)自動注 冊和發(fā)現(xiàn)。
4. gRPC
gRPC是由Google公司開源的一款高性能的遠程過程調(diào)用(RPC)框架,可以在任何環(huán)境下運行。該 框架提供了負載均衡,跟蹤,智能監(jiān)控,身份驗證等功能,可以實現(xiàn)系統(tǒng)間的高效連接。
1、跨域
在分布式系統(tǒng)中, 會有調(diào)用其他業(yè)務(wù)系統(tǒng),導致出現(xiàn)跨域問題,跨域?qū)嵸|(zhì)上是瀏覽器的一種保護處 理。如果產(chǎn)生了跨域,服務(wù)器在返回結(jié)果時就會被瀏覽器攔截(注意:此時請求是可以正常發(fā)起的,只是 瀏覽器對其進行了攔截),導致響應(yīng)的內(nèi)容不可用. 產(chǎn)生跨域的幾種情況有一下:
2、常見解決方案
1. 使用jsonp解決網(wǎng)站跨域 缺點:不支持post請求,代碼書寫比較復(fù)雜
2. 使用HttpClient內(nèi)部轉(zhuǎn)發(fā)
3. 使用設(shè)置響應(yīng)頭允許跨域 response.setHeader(“
Access-Control-Allow-Origin”, “*”); 設(shè)置響應(yīng)頭允許跨域.
4. 基于Nginx搭建企業(yè)級API接口網(wǎng)關(guān)
5. 使用Zuul搭建微服務(wù)API接口網(wǎng)關(guān)
Zuul是spring cloud中的微服務(wù)網(wǎng)關(guān)。網(wǎng)關(guān): 是一個網(wǎng)絡(luò)整體系統(tǒng)中的前置門戶入口。請求首先通 過網(wǎng)關(guān),進行路徑的路由,定位到具體的服務(wù)節(jié)點上??梢允褂脄uul的過濾器的請求轉(zhuǎn)發(fā)去解決跨域問題

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流