




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
雜,運(yùn)維、測(cè)試部署,不符合DevOps思想。微服務(wù)架構(gòu)面向服務(wù):面向服務(wù)是說(shuō)每個(gè)服務(wù)都要對(duì)外服務(wù)接口API。并不關(guān)心要提供Rest的接口即可。用再為PC、移動(dòng)端開發(fā)不同接口用,可替換,降低耦合,易Docker部署服務(wù)、RPCRemoteProcedureCall層網(wǎng)絡(luò)技術(shù)的協(xié)議。RPC協(xié)議假定某些傳輸協(xié)議的存在,如TCP或UDP,為通信程序之間RPC采用客戶機(jī)/服務(wù)器模式。請(qǐng)求程序就是一個(gè)客戶機(jī),而服務(wù)提供程序就是一個(gè)服、RPC允許進(jìn)程之間進(jìn)行通訊,比如在一臺(tái)計(jì)算機(jī)中的A進(jìn)程寫了一個(gè)吃飯的方法,那在以前如BBRPCB要調(diào)用A進(jìn)程的程序即可完成,再到后來(lái)網(wǎng)絡(luò)時(shí)代的出現(xiàn),大家電腦都連起來(lái),這時(shí)可不的生態(tài)系統(tǒng)中RPC可以在同一臺(tái)電腦上不同進(jìn)程進(jìn)行,也可以在不腦上進(jìn)行;而在windowsLPC(本地)。綜上:RPCLPC是上層建筑,IPC是底層基礎(chǔ)。直接把信息封裝成多個(gè)報(bào)文,直接發(fā)送。所以u(píng)dp的速度更快寫,但是不保證數(shù)據(jù)的完整Socket:是在應(yīng)用程序?qū)用嫔蠈?duì)TCP/IP協(xié)議的封裝和應(yīng)用。其實(shí)是一個(gè)調(diào)用接口,方TCP/IPsockettcp/ipsocket是一定要使用tcp/ip協(xié)議,Socket編程接口在設(shè)計(jì)的時(shí)候,就希望也能適應(yīng)其他的網(wǎng)絡(luò)協(xié)RPC是一種通過(guò)網(wǎng)絡(luò)從計(jì)算機(jī)程序上請(qǐng)求服務(wù),而不需要了解底層網(wǎng)絡(luò)技術(shù)的協(xié)議。所以RPC的實(shí)現(xiàn)可以通過(guò)不同的協(xié)議去實(shí)現(xiàn)比如可以使http、RMI等。首先,要解決通訊的問(wèn)題,主要是通過(guò)在客戶端和服務(wù)器之間建立TCP連接,過(guò)也可以是長(zhǎng)連接,多個(gè)過(guò)程調(diào)用共享同接。第二,要解決尋址的問(wèn)題,也就是說(shuō),A服務(wù)器上的應(yīng)用怎么告訴底層的RPC框架,如何連接到B服務(wù)器(如主機(jī)或IP地址)以及特定的端口,方法的名稱名稱是什么,這樣才能完成調(diào)用。比如基于Web服務(wù)協(xié)議棧的RPC,就要提供一個(gè)endpointURI,或者是從 還需要一個(gè)RMIRegistry來(lái)服務(wù)的地址。第三,當(dāng)A服務(wù)器上的應(yīng)用發(fā)起過(guò)程調(diào)用時(shí),方法的參數(shù)需要通過(guò)底層的網(wǎng)絡(luò)協(xié)議如TCP傳遞到B服務(wù)器,由于網(wǎng)絡(luò)協(xié)議是基于二進(jìn)制的,內(nèi)存中的參數(shù)的值要序列化成(marshal進(jìn)制發(fā)送給B服務(wù)器。第四,B服務(wù)器收到請(qǐng)求后,需要對(duì)參數(shù)進(jìn)行反序列化(序列化的逆操作,恢復(fù)為內(nèi)到后,再反序列化,恢復(fù)為內(nèi)存中的表達(dá)方式,交給A服務(wù)器上的應(yīng)用E的b地對(duì)象,這種本地對(duì)象稱為存根,存根負(fù)責(zé)接收本地方法調(diào)用,并將它們委派給各自的具、為什么需要論復(fù)雜度,RPC框架肯定是高于簡(jiǎn)單的HTTP接口的。但毋庸置疑,HTTP接口由于受限于HTTP協(xié)議,需要帶HTTP請(qǐng)求頭,導(dǎo)致傳輸起來(lái)效率或者說(shuō)安全性不如RPC。并發(fā)量,簡(jiǎn)單的HTTP肯定達(dá)不到預(yù)期量是比較少的,甚至說(shuō)1/1000的量可能都沒(méi)有,那我們還需要使用RPC嗎?是怎樣呢?簡(jiǎn)單的HTTP又哪里不足,哪些場(chǎng)景明顯不太適合呢?型的,內(nèi)部子系統(tǒng)較多、接口非常多的情況下,RPC框架的好處就顯示出來(lái)了,首先就是長(zhǎng),不必每次通信都要像http一樣去3次握手什么的,減少了網(wǎng)絡(luò)開銷(這個(gè)問(wèn)題在http2.0已經(jīng)被解決不再算是問(wèn)題了);其次就是RPC框架一般都有中心,有豐富的就是安全性。最后就是流行的服務(wù)化架構(gòu)、服務(wù)化治理,RPC框架是一個(gè)強(qiáng)力的支撐。系統(tǒng)做大了,肯定是需要做微服務(wù)的。現(xiàn)在我們做就是這樣,單獨(dú)有一個(gè)訂單系RPC能解耦服務(wù),這才是使用RPC的真正目的。RPC的原理主要用到了動(dòng)態(tài)模式,http中的最基本的就是RMIjava原生的應(yīng)用層分布式技術(shù)。我們可以肯定的是在傳輸性能方面,RMI的性能是優(yōu)于HTTP的。那為啥很少用到這個(gè)技術(shù)?那是因?yàn)橛眠@個(gè)有很多局限性,首先它要保證傳輸?shù)膬啥硕家胘ava實(shí)現(xiàn),且兩邊需要有相同的對(duì)象類型和EJBrmi技術(shù)的。這就與目前的bs架構(gòu)的軟件大相徑庭。用http必須要服務(wù)端位于http容器里面,這樣減少了網(wǎng)絡(luò)傳輸方面的開發(fā),只需要關(guān)注業(yè)務(wù)開發(fā)Dubbo是由阿里巴巴開源的一個(gè)高性能、基于Java開源的調(diào)用框架。正如在許多RPC系統(tǒng)中一樣,Dubbo是基于定義服務(wù)的概念,指定可以通過(guò)參數(shù)和返回類型調(diào)用Dubbo提供三個(gè)功能:基于接口的調(diào)用、容錯(cuò)和負(fù)載均衡,以及服務(wù)的自動(dòng)注冊(cè)與發(fā)現(xiàn)。Dubbo框架廣泛的在阿里巴巴 Consumer:調(diào) 服務(wù)的服務(wù)消費(fèi)方Registry:服 統(tǒng)計(jì)服務(wù)的調(diào)用次調(diào)和調(diào)用時(shí)間 中心Container:次統(tǒng)計(jì)數(shù)據(jù)到中心。4、Dubbo快速文檔:/docs/user/quick-jdk1.6maven3.0mavenapi,providerconsumer 、創(chuàng)建ego-pom.xml<?<?xmlversion="1.0"encoding="UTF-<project ""、創(chuàng)建dubbo-鼠標(biāo)右鍵ego-dubbonew<?<?xmlversion="1.0"encoding="UTF-<project "<!--FIXMEchangeittotheproject'swebsite-- 、創(chuàng)建dubbo-鼠標(biāo)右鍵ego-dubbonew<?<?xmlversion="1.0"encoding="UTF-<project "<!--FIXMEchangeittotheproject'swebsite-- 、創(chuàng)建dubbo-鼠標(biāo)右鍵ego-dubbonew<?<?xmlversion="1.0"encoding="UTF-<project "<!--FIXMEchangeittotheproject'swebsite-- packageimportpackageimport*publicinterfaceUserServiceIUserselectUserById(Integer}packageimportpackageimportpublicclassUserimplementsSerializableprivatestaticfinallongserialVersionUIDprivateIntegerid;privateStringname;privateStringpublicIntegergetId()return}publicvoidsetId(Integerid)this.id=}publicStringgetName()return}publicvoidsetName(Stringname)=}publicStringgetPwd()return}publicvoidsetPwd(Stringpwd)this.pwd=}publicStringtoString()return"User{""id="+id",name='"+name+'\''",pwd='"+pwd+'\''}}、在providerpackageimportpackageimport*服務(wù)實(shí)publicclassUserServiceImplimplementsUserServiceIpublicUserselectUserById(Integer{Useruser=newUser();System.out.println("userId:"+userId);returnuser;}}<?xmlversion="1.0"<?xmlversion="1.0"encoding="UTF-<beans" 提供方應(yīng)用信息,用于計(jì)算依賴關(guān)系multicast廣中服務(wù)地址<dubbo:registry<!--dubbo協(xié)議20880露服務(wù)<dubbo:protocolname="dubbo"<!-需的服務(wù)接口bean一樣實(shí)現(xiàn)服務(wù)<beanid="userService""packageimportpackageimportimport*啟動(dòng)服publicclassPublishpublicstaticvoidmain(String[]args)throws{ClassPathXmlApplicationContextcontext= }}<?xmlversion<?xmlversion="1.0"encoding="UTF-<beans "" 消費(fèi)方應(yīng)用名,用于計(jì)算依賴關(guān)系,不是匹配條件,不要與提供方一樣multicast廣中發(fā)現(xiàn)服務(wù)地址<dubbo:registry服<dubbo:referenceid="userService"這里我們使用main方法進(jìn)packageimportpackageimportimportimportpublicclassConsumerTestpublicpublicstaticvoidmain(String[]{ClassPathXmlApplicationContextcontext=//獲取服UserServiceIuserService=(UserServiceI)//執(zhí)行方Useruser=System.out.println("user:"+}}packagepackageimportimportimportpublicclassUserControllerprivateUserServiceIpublicUserselectUserById(IntegeruserId)return}} 其他及屬性用到了去api查詢即可6、DubboRPCDubbo框架采用RPC協(xié)議來(lái)對(duì) DubboMulticast中消費(fèi)方收到提供方地址時(shí),連接該地址進(jìn)行RPC調(diào)用。-配<dubbo:registry<dubbo:registryprotocol="multicast"address=":1234"<dubbo:registryaddress="multicast://:1234"為了減少?gòu)V播量,Dubbo缺省使用單播發(fā)送提供者地址信息給消費(fèi)者,如果一個(gè)機(jī)器<dubbo:registry<dubbo:registryprotocol="multicast"<dubbo:registryaddress="multicast://:1234?unicast=false"<<dubbo:parameterkey="unicast"value="false"zookeeper中Zookeeper是ApacaheHadoop的子項(xiàng)目,是一個(gè)樹型的 適合作為Dubbo服務(wù)的中心,工業(yè)強(qiáng)度較高,可用于生產(chǎn)環(huán)境,并推薦使用。服務(wù)提供者啟動(dòng)時(shí): 下寫入自己URL地址服務(wù)消費(fèi)者啟動(dòng)時(shí):訂 下的提供URL地址。并 下寫入自己的URL地址中心啟動(dòng)時(shí):訂 下的所有提供者和消費(fèi)URL地址。當(dāng)設(shè)置<dubbo:registrycheck="false"/>時(shí),記錄失敗和訂閱請(qǐng)求,定可通過(guò)<dubbo:registryusername="adminpassword="1234"/>設(shè)置可通過(guò)<dubbo:registrygroup="dubbo"/>設(shè)置zookeeper支持*號(hào)通配符<dubbo:referencegroup="*"version="*使providerconsumerzookeeperjar或直接Dubbo支持 和curator兩種Zookeeper客戶端實(shí)現(xiàn)使用zk客戶端<dubbo:registry<dubbo:registry"需依賴或直 使用curator客戶端2.3.0curator實(shí)現(xiàn)。CuratorNetflixZookeepercurator<dubbo:regis
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 模特兒培訓(xùn)合作協(xié)議書
- 電梯管理協(xié)議書
- 維修基金協(xié)議書
- 耕地界樁協(xié)議書
- 哥哥宅基地安置協(xié)議書
- 田畝轉(zhuǎn)戶協(xié)議書
- 聯(lián)合開店協(xié)議書
- 簽署續(xù)展協(xié)議書
- 谷歌付款協(xié)議書
- 機(jī)械廠學(xué)徒合同協(xié)議書
- 2024年社區(qū)工作者考試必背1000題題庫(kù)必背(典型題)
- (正式版)SHT 3551-2024 石油化工儀表工程施工及驗(yàn)收規(guī)范
- (2024年)版ISO9001質(zhì)量管理體系培訓(xùn)教材
- 2022年10月自考00445中外教育管理史試題及答案含解析
- 2022-2023部編人教版小學(xué)一年級(jí)英語(yǔ)下冊(cè)教案(全冊(cè))
- T-GLYH 007-2023 公路瀝青路面廠拌熱再生技術(shù)規(guī)范
- 滅火器材的選用和配置要求
- 19層寫字樓給排水畢業(yè)設(shè)計(jì)(圖和設(shè)計(jì)說(shuō)明全套)
- 鋼結(jié)構(gòu)焊接技術(shù)中的安全操作注意事項(xiàng)
- 公共服務(wù)滿意度指數(shù)調(diào)查
- 《多形紅斑》課件
評(píng)論
0/150
提交評(píng)論