Springboot 框架 gateway 前後端分離 實現 zuul Ribbon 負載均衡 脫離Eureka實現

項目後臺框架是使用的springboot ,前端使用的是angularJS,中間使用gateway做一層轉發。其實也是微服務的思想。那麼在gateway這層怎麼實現負載均衡。就使用到了zuul,那麼可以使用zuul 的Ribbon來實現負載均衡。

這個是我們項目原先做了一個配置。主要是zuul實現轉發(未使用Ribbon,未使用Eureka),其中routes下面的 platform-service和image-detect-service是後臺的兩個獨立的項目,他們的RestApi路徑使用了不同的標識(這是我們自己定義的規範)。反正實現的效果就是,如果路徑是api開頭就轉發到8010端口,如果是路徑是/ids開頭那麼就轉發到8011端口另外一個項目。重寫了zuul中的pro前置過濾器能夠實現。

接下來實現負載均衡 (接下來我們只對platform-service這個項目進行負載均衡)

首先我們將platform-service這個項目啓用兩個不同的端口發佈起來

先在idea中dev.yml將server:port 修改爲8012通過mvn clean compile install -DskipTests將項目編譯,然後再target文件夾,將war包拷貝出來,在war包這個文件夾打開cmd命令行,執行 java -jar xxx.war發佈 ,然後再在idea中獎port修改爲8010,通過idea發佈。這樣platform-service就在8010和8012發佈起來了。

修改配置:

添加的配置 platform-service 是和zuul:rotes:platform-service中同名的。 listOfServices是platfor-service項目的服務列表地址和端口,多個的話使用,將其分割。

ribbon:eureka:enabled:false這個設置的是禁用eureka。

現在就ok了,啓動項目訪問測試,會發現調用不同的端口訪問platform-service,也可以將8010的端口關閉,它會直接去訪問8012端口的項目,這就是ribbon實現負載均衡和nginx實現的負載均衡不一樣,如果是nginx實現的,如果你upstream的服務宕機了,那麼不會自動的去尋找下一個服務。這時候ribbon默認的啓動的策略是RoundRobinRule 也就是輪詢策略。

我也是最近在研究ribbon負載均衡和集羣.現在能夠實現負載均衡了。那麼在接下來我們在研究怎麼去更換策略,如何使用自定義策略實現 "同一個ip下的同一個用戶的所有請求被代理到同一個實例",在接下來的研究中,我會在後面慢慢分享

 

 

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