javascript
SpringCloud微服务全栈实战讲解 - 公开课笔记
webservice使用xml,服務(wù)之間的依賴比較強(qiáng),數(shù)據(jù)包比較大,編譯和解析因?yàn)閤ml的遞歸解析形式,性能不好
dubbo、hsf是基于RPC,dubbo強(qiáng)語言依賴,發(fā)送方是什么語言寫的,服務(wù)方就要用什么語言解析。dubbo就是在兩端開websocket,用于建立兩點(diǎn)之間的通信,傳的是序列化好的對象。
Dubbo 底層原理
分布式系統(tǒng)調(diào)用:
把服務(wù)放在另一個(gè)節(jié)點(diǎn)上計(jì)算,減輕當(dāng)前節(jié)點(diǎn)上的運(yùn)算壓力。
相當(dāng)于提供方將接口文檔打一個(gè)jar包,提供給調(diào)用方
網(wǎng)絡(luò)發(fā)包只能發(fā)byte數(shù)組,所以要序列化成二進(jìn)制
SpringCloud
SpringCloud和Dubbo的區(qū)別
Dubbo是遠(yuǎn)程服務(wù)中的RPC,長連接,是自定義的協(xié)議
SpringCloud是Http協(xié)議,
rpc和http相比,rpc的效率更高。但rpc要求請求雙方實(shí)現(xiàn)語言相同。而http的序列化和反序列化是基于字符串的,使用json傳遞。好處是跨語言。
http要發(fā)心跳包,所以要耗費(fèi)一些資源,但是相比語言的解耦,這些資源消耗是可以接受的。
示例
Consumer
Provider
UserAPI接口被Consumer項(xiàng)目實(shí)現(xiàn)。可以提供給Consumer
OpenFeign用來讀懂API的SpringMVC的注解
Feign可以通過聲明式(自己定義)遠(yuǎn)程服務(wù)調(diào)用的方式,在調(diào)用方的代碼
測試效果
SpringCloud提供了一套服務(wù)降級的服務(wù)框架Hystrix,包括:服務(wù)降級、服務(wù)熔斷、資源隔離
服務(wù)降級
所有服務(wù)都調(diào)不通,就降低服務(wù)標(biāo)準(zhǔn),但仍然能提供服務(wù),而不是直接調(diào)用失敗,拋出異常。
服務(wù)熔斷
如果每一次都調(diào)用失敗,這段時(shí)間內(nèi)就不再進(jìn)行這個(gè)服務(wù)的調(diào)用了,直接去調(diào)用別的服務(wù)。
服務(wù)的上下線(對于注冊中心來說)
如果能提供服務(wù),會(huì)在注冊中心列表中標(biāo)記,標(biāo)記的是網(wǎng)絡(luò)狀態(tài)。注冊中心進(jìn)行定時(shí)的心跳包檢測。
如果服務(wù)雖然在,但無法提供服務(wù),可以主動(dòng)上報(bào)
如果調(diào)用失敗,不應(yīng)該從注冊中心列表中剔除。可能只是網(wǎng)絡(luò)抖動(dòng)、網(wǎng)絡(luò)分區(qū)造成的調(diào)用失敗。
(CAP中的P:分區(qū)容錯(cuò)性)
重試策略:默認(rèn)6秒,記錄在調(diào)用方,而不是記錄在注冊中心。
示例
再加入一個(gè)91的服務(wù)
隔離
限制調(diào)用次數(shù)。可以使用線程池。
Hytrix怎么實(shí)現(xiàn)的?
ribbon
來幫我們選擇服務(wù)器,內(nèi)置了選取策略
其它
微服務(wù)目前很火,可能慢慢會(huì)被servicemesh取代,因?yàn)橹恍枰P(guān)注業(yè)務(wù)邏輯,不用關(guān)注服務(wù)治理
總結(jié)
以上是生活随笔為你收集整理的SpringCloud微服务全栈实战讲解 - 公开课笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL索引机制:索引分类、索引的实现
- 下一篇: 程序员是青春饭吗 - CSDN分享会笔记