? ? ? ? 【微服務(wù)>>>負(fù)載均衡】
? ? ? ? 一截珍、簡介
? ? ? ? Ribbon是一個負(fù)載均衡組件凛捏,具有豐富的負(fù)載均衡策略、重試機(jī)制烦磁、支持多協(xié)議的異步與響應(yīng)式模型养匈、容錯、緩存與批處理功能都伪。
? ? ? ? 二呕乎、Ribbon與負(fù)載均衡
? ? ? ? 負(fù)載均衡,即利用特定方式將流量分?jǐn)偟蕉鄠€操作單元上陨晶,它對系統(tǒng)吞吐量與系統(tǒng)處理能力有著質(zhì)的提升猬仁。
? ? ? ? 負(fù)載均衡分類:
? ? ? ? 1??集中式負(fù)載均衡:也叫做服務(wù)端負(fù)載均衡,位于英特網(wǎng)與服務(wù)提供者之間先誉,負(fù)責(zé)把網(wǎng)絡(luò)請求轉(zhuǎn)發(fā)給各個提供單位逐虚,典型產(chǎn)品是Ngixn;
? ? ? ? 2??進(jìn)程負(fù)載均衡:也叫作客戶端負(fù)載均衡谆膳,位于服務(wù)提供者內(nèi)部叭爱,從注冊中心的已注冊實(shí)例庫選取實(shí)例進(jìn)行流量導(dǎo)入,整個過程都是在進(jìn)程間通信漱病。
? ? ? ? Ribbon就是典型的客戶端負(fù)載均衡买雾,它賦予了應(yīng)用一些支配HTTP與TCP行為的能力,如果沒有Ribbon杨帽,Spring Cloud構(gòu)建的服務(wù)則無法橫向擴(kuò)展漓穿,所以Spring Cloud的Feign和Zuul默認(rèn)集成了Ribbon。
? ? ? ? 三注盈、負(fù)載均衡策略
? ? ? ? Ribbon有7中可選的負(fù)載均衡策略晃危,如下:
? ? ? ? RomdomRule:隨機(jī)策略,隨機(jī)選擇 Server老客;
? ? ? ? RoundRobbinRule:輪詢策略僚饭,按順序循環(huán)選擇 Server,該策略是Ribbon默認(rèn)策略胧砰;
? ? ? ? RetryRule:重試策略鳍鸵,在一個配置時間段內(nèi)當(dāng)選擇 server 不成功,則一直嘗試選擇一個可用的 server尉间;
? ? ? ? BestAvailableRule:最低并發(fā)策略偿乖,逐個考察 server击罪,如果 server 斷路器打開,則忽略贪薪,再選擇其中并發(fā)連接最低的 server媳禁;
? ? ? ? AvailabilityFilteringRule:可用過濾策略,過濾掉一直連接失敗并被標(biāo)記為 circuit tripped 的 server画切,過濾掉那些高并發(fā)連接的 server(active connections 超過配置的閥值)竣稽;
? ? ? ? ResponseTimeWeightedRule:響應(yīng)時間加權(quán)策略,根據(jù) server 的響應(yīng)時間分配權(quán)重槽唾。響應(yīng)時間越長丧枪,權(quán)重越低,被選擇到的概率就越低庞萍;響應(yīng)時間越短拧烦,權(quán)重越高,被選擇到的概率就越高钝计。這個策略很貼切恋博,綜合了各種因素,如:網(wǎng)絡(luò)私恬、硬盤债沮、IO等,這些因素直接影響著響應(yīng)時間本鸣;
? ? ? ? ZoneAvoidanceRule:區(qū)域權(quán)衡策略疫衩,綜合判斷 server 所在區(qū)域的性能和 server 的可用性輪詢選擇 server,并且判定一個 AWS Zone 的運(yùn)行性能是否可用荣德,剔除不可用的 Zone 中的所有 server闷煤。
? ? ? ? 四、策略設(shè)置方式
? ? ? ? 1? 全局策略設(shè)置
? ? ? ? 2? 基于注解的策略設(shè)置
? ? ? ? 3? 基于配置文件的策略設(shè)置
? ? ? ? 五涮瞻、調(diào)整Ribbon的加載模式
? ? ? ? Ribbon在進(jìn)行客戶端負(fù)載均衡的時候并不是跟隨服務(wù)的啟動進(jìn)行上下文加載鲤拿,而是在發(fā)生第一次請求的時候才會去創(chuàng)建,即懶加載署咽,所以有時候會導(dǎo)致服務(wù)第一次調(diào)用的超時近顷,介于此問題,可以調(diào)整Ribbon的加載模式為饑餓加載宁否,即在啟動的時候便加載所有配置項(xiàng)的應(yīng)用程序上下文窒升。
? ? ? ? 六、簡單總結(jié)
? ? ? ? Ribbon是一個客戶端負(fù)載均衡組件家淤,能夠?yàn)槲⒎?wù)體系提供合理的流量導(dǎo)入异剥,微服務(wù)體系能夠具備橫向擴(kuò)展的能力,就仰仗于Ribbon絮重。
? ??????