亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

分布式下的遠(yuǎn)程通信技術(shù)(RPC)的一些理解

EastWoodYang / 1314人閱讀

摘要:都是分開部署,多帶帶上線的。序列化畢竟是遠(yuǎn)程通信,需要將對象轉(zhuǎn)化成二進(jìn)制流進(jìn)行傳輸。服務(wù)化架構(gòu)的演進(jìn)架構(gòu)當(dāng)業(yè)務(wù)規(guī)模很小時,將所有功能都不熟在同一個進(jìn)程中,通過雙機(jī)或者負(fù)載均衡器實現(xiàn)負(fù)債分流此時,分離前后臺邏輯的架構(gòu)是關(guān)鍵。

前言
為什么需要RPC,而不是簡單的HTTP接口?

剛開始還是菜鳥的時候,時常把RPC和HTTP搞混淆,本身概念還沒理解清楚,心里就浮躁的不行,導(dǎo)致鬧出了不少笑話。

什么是RPC?

RPC(Remote Promote Call) 一種進(jìn)程間通信方式。允許像調(diào)用本地服務(wù)一樣調(diào)用遠(yuǎn)程服務(wù)。

RPC框架的主要目標(biāo)就是讓遠(yuǎn)程服務(wù)調(diào)用更簡單、透明。RPC框架負(fù)責(zé)屏蔽底層的傳輸方式(TCP或者UDP)、序列化方式(XML/JSON/二進(jìn)制)和通信細(xì)節(jié)。開發(fā)人員在使用的時候只需要了解誰在什么位置提供了什么樣的遠(yuǎn)程服務(wù)接口即可,并不需要關(guān)心底層通信細(xì)節(jié)和調(diào)用過程。

什么是HTTP?

HTTP協(xié)議是應(yīng)用層的超文本傳送協(xié)議,它是Web的基礎(chǔ)。HTTP協(xié)議位于TCP/IP協(xié)議棧的應(yīng)用層?;贖TTP協(xié)議的客戶/服務(wù)器模式的信息交換過程,分四個過程:建立連接、發(fā)送請求信息、發(fā)送響應(yīng)信息、關(guān)閉連接。
?

OSI網(wǎng)絡(luò)結(jié)構(gòu)的七層模型
第七層:應(yīng)用層:?????定義了用于在網(wǎng)絡(luò)中進(jìn)行通信和數(shù)據(jù)傳輸?shù)慕涌?- 用戶程式;提供標(biāo)準(zhǔn)服務(wù),比如虛擬終端、文件以及任務(wù)的傳輸 和處理;?
第六層:表示層:?????掩蓋不同系統(tǒng)間的數(shù)據(jù)格式的不同性; 指定獨立結(jié)構(gòu)的數(shù)據(jù)傳輸格式; 數(shù)據(jù)的編碼和解碼;加密和解密;壓縮和 解壓縮?
第五層:會話層:?????管理用戶會話和對話; 控制用戶間邏輯連接的建立和掛斷;報告上一層發(fā)生的錯誤?
第四層:傳輸層:?????管理網(wǎng)絡(luò)中端到端的信息傳送; 通過錯誤糾正和流控制機(jī)制提供可靠且有序的數(shù)據(jù)包傳送; 提供面向無連接的數(shù) 據(jù)包的傳送;?
第三層:網(wǎng)絡(luò)層:?????定義網(wǎng)絡(luò)設(shè)備間如何傳輸數(shù)據(jù); 根據(jù)唯一的網(wǎng)絡(luò)設(shè)備地址路由數(shù)據(jù)包;提供流和擁塞控制以防止網(wǎng)絡(luò)資源的損耗?
第二層:數(shù)據(jù)鏈路層:?????定義操作通信連接的程序; 封裝數(shù)據(jù)包為數(shù)據(jù)幀; 監(jiān)測和糾正數(shù)據(jù)包傳輸錯誤?
第一層:物理層:??????定義通過網(wǎng)絡(luò)設(shè)備發(fā)送數(shù)據(jù)的物理方式; 作為網(wǎng)絡(luò)媒介和設(shè)備間的接口;定義光學(xué)、電氣以及機(jī)械特性。

RPC是一種概念,http也是rpc實現(xiàn)的一種方式。論復(fù)雜度,dubbo/hessian用起來是超級簡單的。最近用dubbo和hessian比較多,http的幾乎都被廢棄了。

至于為什么用,其實很簡單,業(yè)務(wù)場景不一樣。我最早的單位所有的代碼都在一個工程里,一次要發(fā)布幾百m的代碼。這種架構(gòu)是非常有利于小程序的。但是我們?yōu)槭裁匆獞?yīng)用rpc層呢,一個功能,一套代碼下來不就解決了么?我覺得有幾個好處:

靈活部署

解耦

系統(tǒng)做大了,肯定是需要做微服務(wù)的。 現(xiàn)在我們做電商就是這樣,多帶帶有一個訂單系統(tǒng),支付系統(tǒng),商品系統(tǒng),用戶系統(tǒng)。都是分開部署,多帶帶上線的。 但我們交互是用HTTP接口來交互的,我想轉(zhuǎn)用RPC,但問題是我現(xiàn)在還沒發(fā)現(xiàn)為什么需要用RPC,我還沒能理解它的作用和意義。
用http交互其實就已經(jīng)屬于rpc了

不知道大家看到這里有沒有解決掉文章開頭的那個問題呢?看似普普通通的一個問題,實際上暗藏了很多玄機(jī),只有從頭到尾都完完整整的了解過一遍之后才能真正地得到想要的答案。大部分程序員應(yīng)該都有在工作過程中碰到各式各樣的問題,那是否都深入去追究過問題的本質(zhì)呢?如果有機(jī)會不妨去試一試,你會發(fā)現(xiàn)海面下隱藏的“冰山”是表面上的許多倍。

為什么面試官問的都是同樣的問題,有的人覺得沒什么太多能回答的點,有的人卻能滔滔不絕?我想每個人思維的深度面試官一眼就能看出來,正好就印證了那句話:架構(gòu)是一種思想,技術(shù)只是外殼。技術(shù)可能淘汰,思想才能長存。

人因為有了思想,才沒有成為野獸。
在這里推薦一個架構(gòu)群895244712,除了分布式、微服務(wù)、性能優(yōu)化等技術(shù)點的技術(shù)分享,更重要的是架構(gòu)思想的形成。

這邊不再糾結(jié),詳細(xì)理解一下RPC的相關(guān)問題。

廣義和狹義的RPC

廣義的遠(yuǎn)程通訊技術(shù)包括:RPC , WebService , RMI , JMS , EJB , JNDI .

CORBA:面向?qū)ο蟮木幊腆w系規(guī)范,分布式系統(tǒng),跨語言,對標(biāo)RMI(競爭關(guān)系)。

SOAP:簡單對象訪問協(xié)議,微軟聯(lián)合廠商對xml-rpc標(biāo)準(zhǔn)化,soap協(xié)議就是聯(lián)合標(biāo)準(zhǔn)化的結(jié)果,而且微軟搶先完善了soap協(xié)議,推出了webservice。對象訪問協(xié)議指的是使用XML描述web service的信息(URI/類/參數(shù)/返回值),理論上SOAP就是一段xml

WebService:屬于廣義rpc的一種(常見的廣義rpc實現(xiàn)還有xml-rpc和json-rpc),支持異構(gòu)系統(tǒng)間的交互, 支持不同語言的通信,使用http通信,通過serlvet提供XML格式的數(shù)據(jù),是SOAP協(xié)議的封裝,WSDL是它的描述方式。

WSDL:webservice描述語言,描述SOAP協(xié)議的,也是段XML

RMI:遠(yuǎn)程調(diào)用對象,其實是java實現(xiàn)了RPC的一組接口

JMS:MQ

EJB:大型分布式,rmi-iiop協(xié)議

廣義RPC發(fā)展歷程

狹義RPC技術(shù)框架

由于目前跨內(nèi)存調(diào)用的普遍性,RPC往往代稱更加具體的基于底層協(xié)議二進(jìn)制流的RPC框架,與WebService最大的不同就是: 狹義的RPC基于二進(jìn)制流的序列化和反序列化,故不能夠提供跨語言的服務(wù),但是比基于文本解析的WebService更加高效。

狹義RPC框架一般需要高性能的網(wǎng)絡(luò)框架,如Netty,Mina,高性能的序列化反序列化框架,尋址方式,如果是帶會話的RPC,還要有會話和狀態(tài)保持功能。

當(dāng)下XML-RPC,SOAP,WebService技術(shù)的缺陷

冗余數(shù)據(jù)太多,處理速度太慢。?

RPC 風(fēng)格的 Web Service 跨語言性不佳,而 Document 風(fēng)格的 Web Service 又太過難用。?

Web Service 沒有解決用戶的真正問題,只是把一個問題變成了另一個問題。?

Web Service 的規(guī)范太過復(fù)雜,以至于在 .NET 和 Java 平臺以外沒有真正好用的實現(xiàn),甚至沒有可用的實現(xiàn)。?

跨語言跨平臺只是 Web Service 的一個口號,雖然很多人迷信這一點,但事實上它并沒有真正實現(xiàn)。?

RPC框架實現(xiàn)的幾個核心技術(shù)點:

遠(yuǎn)程提供者需要以某種形式提供服務(wù)調(diào)用相關(guān)的信息,包括但不限于服務(wù)接口定義、數(shù)據(jù)結(jié)構(gòu)、或者中間態(tài)的服務(wù)定義文件。例如Facebook的 Thrift的IDL文件,Web service的WSDL文件;服務(wù)的調(diào)用者需要通過一定的圖景獲取遠(yuǎn)程服務(wù)調(diào)用相關(guān)的信息。

遠(yuǎn)程代理對象:服務(wù)調(diào)用者用的服務(wù)實際是遠(yuǎn)程服務(wù)的本地代理。說白了就是通過動態(tài)代理來實現(xiàn)。

通信:RPC框架與具體的協(xié)議無關(guān)。

序列化:畢竟是遠(yuǎn)程通信,需要將對象轉(zhuǎn)化成二進(jìn)制流進(jìn)行傳輸。不同的RPC框架應(yīng)用的場景不同,在序列化上也會采取不同的技術(shù)

RPC面臨的挑戰(zhàn)

在大規(guī)模服務(wù)化之前,應(yīng)用可能只是通過RPC框架,簡單的暴露和引用遠(yuǎn)程服務(wù),通過配置URL地址進(jìn)行遠(yuǎn)程服務(wù)調(diào)用,路由則通過F5負(fù)載均衡器等進(jìn)行簡單的負(fù)載均衡。

當(dāng)服務(wù)越來越多的時候,服務(wù)的URL配置管理變得更加困難。單純的使用RPC就有點吃不消。所以在大規(guī)模分布式集群中,RPC只是作為集群的一個方法調(diào)用手段。例如在Hadoop的進(jìn)程間交互都是通過RPC來進(jìn)行的,比如Namenode與Datanode直接,Jobtracker與Tasktracker之間等。

服務(wù)化架構(gòu)的演進(jìn)

MVC架構(gòu):當(dāng)業(yè)務(wù)規(guī)模很小時,將所有功能都不熟在同一個進(jìn)程中,通過雙機(jī)或者負(fù)載均衡器實現(xiàn)負(fù)債分流;此時,分離前后臺邏輯的MVC架構(gòu)是關(guān)鍵。

PRC架構(gòu):當(dāng)垂直應(yīng)用越來越多,應(yīng)用之間交互不可避免,將核心和公共業(yè)務(wù)抽取出來,作為獨立的服務(wù),實現(xiàn)前后臺邏輯分離。此時,用于提高業(yè)務(wù)復(fù)用及拆分的RPC框架是關(guān)鍵。

SOA架構(gòu):隨著業(yè)務(wù)發(fā)展,服務(wù)數(shù)量越來越多,服務(wù)生命周期管控和運行態(tài)的治理成為瓶頸,此時用于提升服務(wù)質(zhì)量的SOA服務(wù)治理是關(guān)鍵。

微服務(wù)架構(gòu):通過服務(wù)的原子化拆分,以及微服務(wù)的獨立打包、部署和升級,小團(tuán)隊的交付周期將縮短,運維成本也將大幅度下降。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/71890.html

相關(guān)文章

  • 手把手教你基于Netty實現(xiàn)一個基礎(chǔ)RPC框架(通俗易懂)

    摘要:是一個分布式服務(wù)框架,以及治理方案。手寫注意要點手寫注意要點基于上文中對于協(xié)議的理解,如果我們自己去實現(xiàn),需要考慮哪些技術(shù)呢其實基于圖的整個流程應(yīng)該有一個大概的理解?;谑謱憣崿F(xiàn)基于手寫實現(xiàn)理解了協(xié)議后,我們基于來實現(xiàn)一個通信框架。閱讀這篇文章之前,建議先閱讀和這篇文章關(guān)聯(lián)的內(nèi)容。[1]詳細(xì)剖析分布式微服務(wù)架構(gòu)下網(wǎng)絡(luò)通信的底層實現(xiàn)原理(圖解)[2][年薪60W的技巧]工作了5年,你真的理解N...

    番茄西紅柿 評論0 收藏2637
  • 基于Dubbo+ZooKeeper布式服務(wù)實現(xiàn)

    摘要:調(diào)用流程服務(wù)容器負(fù)責(zé)啟動,加載,運行服務(wù)提供者。服務(wù)提供者在啟動時,向注冊中心注冊自己提供的服務(wù)。注冊中心返回服務(wù)提供者地址列表給消費者,如果有變更,注冊中心將基于長連接推送變更數(shù)據(jù)給消費者。這就是分布式服務(wù)注冊中心的由來。 Dubbo是什么 一款分布式服務(wù)框架 高性能和透明化的RPC遠(yuǎn)程服務(wù)調(diào)用方案。這里簡單介紹一下RPC,所謂RPC就是遠(yuǎn)程過程調(diào)用,全稱為Romate Proce...

    warkiz 評論0 收藏0
  • 基于Dubbo+ZooKeeper布式服務(wù)實現(xiàn)

    摘要:調(diào)用流程服務(wù)容器負(fù)責(zé)啟動,加載,運行服務(wù)提供者。服務(wù)提供者在啟動時,向注冊中心注冊自己提供的服務(wù)。注冊中心返回服務(wù)提供者地址列表給消費者,如果有變更,注冊中心將基于長連接推送變更數(shù)據(jù)給消費者。這就是分布式服務(wù)注冊中心的由來。 Dubbo是什么 一款分布式服務(wù)框架 高性能和透明化的RPC遠(yuǎn)程服務(wù)調(diào)用方案。這里簡單介紹一下RPC,所謂RPC就是遠(yuǎn)程過程調(diào)用,全稱為Romate Proce...

    enda 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<