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