SpringCloud集成Ribbon(SpringCloud學習四)

SpringCloud集成Ribbon

​ Ribbon 是一個基於 HTTP 和 TCP 的 客服端負載均衡工具,它是基於 Netflix Ribbon 實現的。

​ 說的明白點就是一個或者多個消費者去調用生產者的方法,但是哪個消費者去調用哪個生產者這個是根據算法來確定的,Ribbon就類似於這個算法。

​ Ribbon有很多的負載均衡算法,輪詢策略(默認)、權重輪詢策略、隨機策略、最少併發數策略、重試策略、可用性敏感策略、區域敏感性策略。很多算法看名字就知道意思,這裏算法不是本次討論的重點,也不再累述,後面有機會了解一下。

​ Ribbon是集成於客戶端的,業內也有兩種主流的負載均衡的方案。1.集中式負載均衡(服務器負載均衡),通過一個單獨的模塊來實現負載均衡。2.進程內負載均衡(客戶端負載均衡),客戶端通過算法去查詢合適的生產者,然後調用。可以顯而易見的看到Ribbon是屬於後者的。

​ 還是老樣子,實際操作一下,後面再說原理的事。成功了纔會有興趣去深入。

​ 因爲OpenFeign已經集成了Ribbon,所以之前的代碼不需要大的改動。

​ 要實現負載均衡,需要有兩個生產者。這裏直接將一個生產者的文件夾複製,在修改文件夾名字,然後IDE導入模塊就可以了。項目結構如下:

image-20200702181859656

​ 第二個生產者模塊需要修改一個端口號,以免兩個生產者啓動衝突。然後啓動兩個生產者模塊即可。可以看到註冊中心頁面如下:

image-20200702181934513

​ 然後使用swagger-ui直接調用消費者的方法,消費者通過OpenFeign調用生產者的方法。會發現兩個生產者的控制檯在循環打印信息,這是因爲Ribbon默認使用的輪詢算法。效果如圖:

生產者1:

image-20200702182439596

生產者2:

image-20200702182525176

​ 總共是調用了五次,所以生產者累計打印了五次。

​ 在編寫的過程中才發現,Ribbon更多的是提供了一個思路或者解決辦法,解決的問題就是生產者和消費者之間調度的問題。因爲SpringCloud對於這些組件集成的比較好(還是之前說的,這些工具的產生是爲了加快開發的速度),所以本次更多的還是理解負載均衡的意義和原理。後面也會對這些源碼進行閱讀,瞭解深層次的一些東西。

​ 就這樣吧,結束。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章