一臭增、網(wǎng)絡(luò)模型介紹
1.1)OSI的七層模型
1.2)每一層都工作著不同設(shè)備
1.3)隨之出現(xiàn)的問題
SpringCloud更傾向于Http進(jìn)行通信冠句,實(shí)現(xiàn)了語(yǔ)言的解耦懦底,只需要匹配請(qǐng)求接口路徑即可聚唐。
但是在微服務(wù)中很多情況下的請(qǐng)求不是前端觸發(fā)的杆查,比如下訂單崖蜜,請(qǐng)求從前端打到訂單服務(wù)纳猪,到了訂單服務(wù)內(nèi)部邏輯需要請(qǐng)求庫(kù)存服務(wù)。這就發(fā)展出一個(gè)隔離層搏明,將Web三層架構(gòu)中表現(xiàn)層分解為(Controller層用于和用戶進(jìn)行Http通信)以及(微服務(wù)內(nèi)部進(jìn)行RPC通信)——大部分公司外網(wǎng)使用Http星著,內(nèi)網(wǎng)使用RPC(較少用OpenFeign)
二虚循、RestTemplate
2.1)什么是RestTemplate
2.2)使用RestTemplate
ribbon-producer
ribbon-consumer
這種通過(guò)Ip+Port硬編碼的方式?jīng)]法在線上服務(wù)進(jìn)行靈活的修改茎刚,所以引入了服務(wù)發(fā)現(xiàn)膛锭。consumer通過(guò)應(yīng)用名獲取服務(wù)中心該應(yīng)用名下的所有provider列表初狰,這樣有出現(xiàn)了如何選擇列表中的哪一個(gè)provider發(fā)送請(qǐng)求跷究,由此引入了負(fù)載均衡俊马。負(fù)載均衡有兩種柴我,一種是由客戶端自己實(shí)現(xiàn)(缺點(diǎn)是不同的語(yǔ)言都需要寫一套負(fù)載均衡算法)艘儒;一種是通過(guò)引入ribbon界睁,客戶端將請(qǐng)求發(fā)送給ribbon由ribbon負(fù)責(zé)具體的負(fù)載均衡策略
三逾礁、Ribbon
3.1)什么是Ribbon
3.2)微服務(wù)中的Ribbon
DiscoveryClient + 自實(shí)現(xiàn)負(fù)載均衡 + RestTemplate
LoadBalancerClient + RestTemplate
@LoadBalanced + RestTemplate
3.3)Ribbon實(shí)現(xiàn)負(fù)載均衡原理
3.4)Ribbon的負(fù)載均衡策略
自定義負(fù)載均衡策略
Ribbon+RestTemplate雖然可以比較少代碼量實(shí)現(xiàn)A服務(wù)調(diào)用B服務(wù)墙杯,還是要一個(gè)請(qǐng)求路徑然后標(biāo)注返回值霍转,不像RPC一樣從A服務(wù)調(diào)用B服務(wù)感覺像調(diào)用本地接口避消。由此引入了非常像RPC的OpenFeign
四、OpenFeign
4.1)什么是OpenFeign
4.2)OpenFeign的具體實(shí)操
使用OpenFeign實(shí)現(xiàn)服務(wù)間的請(qǐng)求
openfeign-producer
openfeign-consumer
傳遞基本類型參數(shù)
傳遞基本類型參數(shù)——路徑
傳遞對(duì)象類型參數(shù)
傳遞數(shù)組類型參數(shù)
傳遞集合類型參數(shù)
OpenFeign返回值處理
測(cè)試OpenFeign默認(rèn)請(qǐng)求超時(shí)時(shí)間
修改默認(rèn)請(qǐng)求超時(shí)時(shí)間