Feign 是一個(gè)聲明web服務(wù)客戶端,這使得編寫web服務(wù)客戶端更容易將我們需要調(diào)用的服務(wù)方法定義成抽象方法保存在本地就可以了,不需要自己構(gòu)建Http請求了,直接調(diào)用接口就行了,不過要注意,調(diào)用方法要和本地抽象方法的簽名完全一致。
Feign
RestTemplate
Ribbon
調(diào)用方式同:Ribbon需要我們自己構(gòu)建Http請求,模擬Http請求然后通過RestTemplate發(fā)給其他服務(wù),步驟相當(dāng)繁瑣而Feign則是在Ribbon的基礎(chǔ)上進(jìn)行了一次改進(jìn),采用接口的形式,將我們需要調(diào)用的服務(wù)方法定義成抽象方法保存在本地就可以了,不需要自己構(gòu)建Http請求了,直接調(diào)用接口就行了,不過要注意,調(diào)用方法要和本地抽象方法的簽名完全一致。
簡單來說: 先將集群,集群就是把一個(gè)的事情交給多個(gè)人去做,假如要做1000個(gè)產(chǎn)品給一個(gè)人做要10天,我叫10個(gè)人做就是一天,這就是集群,負(fù)載均衡的話就是用來控制集群,他把做的最多的人讓他慢慢做休息會,把做的最少的人讓他加量讓他做多點(diǎn)。在計(jì)算中,負(fù)載平衡可以改善跨計(jì)算機(jī),計(jì)算機(jī)集群,網(wǎng)絡(luò)鏈接,中央處理單元或磁盤驅(qū)動(dòng)器等多種計(jì)算資源的工作負(fù)載分布。負(fù)載平衡旨在優(yōu)化資源使用,最大化吞吐量,最小化響應(yīng)時(shí)間并避免任何單一資源的過載。使用多個(gè)組件進(jìn)行負(fù)載平衡而不是單個(gè)組件可能會通過冗余來提高可靠性和可用性。負(fù)載平衡通常涉及專用軟件或硬件,例如多層交換機(jī)或域名系統(tǒng)服務(wù)器進(jìn)程。
Ribbon是Netflix發(fā)布的開源項(xiàng)目,主要功能是提供客戶端的軟件負(fù)載均衡算法;Ribbon客戶端組件提供一系列完善的配置項(xiàng),如連接超時(shí),重試等。簡單的說,就是在配置文件中列出后面所有的機(jī)器,Ribbon會自動(dòng)的幫助你基于某種規(guī)則(如簡單輪詢,隨即連接等)去連接這些機(jī)器。我們也很容易使用Ribbon實(shí)現(xiàn)自定義的負(fù)載均衡算法。(有點(diǎn)類似Nginx)
Nginx是反向代理同時(shí)可以實(shí)現(xiàn)負(fù)載均衡,nginx攔截客戶端請求采用負(fù)載均衡策略根據(jù)upstream配置進(jìn)行轉(zhuǎn)發(fā),相當(dāng)于請求通過nginx服務(wù)器進(jìn)行轉(zhuǎn)發(fā)。Ribbon是客戶端負(fù)載均衡,從注冊中心讀取目標(biāo)服務(wù)器信息,然后客戶端采用輪詢策略對服務(wù)直接訪問,全程在客戶端操作。
Ribbon使用discoveryClient從注冊中心讀取目標(biāo)服務(wù)信息,對同一接口請求進(jìn)行計(jì)數(shù),使用%取余算法獲取目標(biāo)服務(wù)集群索引,返回獲取到的目標(biāo)服務(wù)信息。@LoadBalanced注解的作用開啟客戶端負(fù)載均衡。