提供者的controller
@controller
("user"
)public
class
usercontrollerprovider")
private string port;
("testribbon"
)@responsebody
public string testribbon()
}
再看消費者的controller
@controller
("user"
)@slf4j
public
class
usercontrollercomsumer
}
使用resttemplate時用服務名稱代替ip+埠呼叫需要在注入resttemplate的時候加上@loadbalanced註解消費者端向容器中新增resttemplate
@enableautoconfiguration
@configuration
@componentscan
(basepackages =
"com"
)@enablediscoveryclient
@enableeurekaclient
public
class
springcloudconsumer
@bean
@loadbalanced
//ribbon負載均衡
public resttemplate resttemplate()
}
新增@loadbalanced使用ribbon負載均衡預設採用輪詢方式
啟動幾個服務,瀏覽器測試消費者
此時採用的時預設的輪詢方式
ribbon的負載均衡策略類都實現了irule介面,
1、在配置檔案中定義
#服務名稱
eureka-provider
:ribbon
:#採取策略
nfloadbalancerruleclassname
: com.netflix.loadbalancer.randomrule
2、自定義類實現在主啟動無法掃瞄到的包下建立乙個配置類
向容器中新增策略類
@configuration
public
class
iruleconfiguration
}
在啟動類上新增@ribbonclientvalue是要進行負載均衡的服務名稱,即服務提供者;configuration是自定義的配置類
@ribbonclient
(name =
"eureka-provider"
,configuration = com.myirule.iruleconfiguration.
class
)public
class
springcloudconsumer
@bean
@loadbalanced
public resttemplate resttemplate()
}
總結使用ribbon負載均衡:
服務提供者集群,即往註冊中心註冊多個相同服務名不同埠號的服務
在消費者端使用resttemplate進行遠端呼叫消費者是,使用服務名稱替代具體的ip+埠號
在消費者注入resttemplate時加上@loadblance註解
@bean
@loadbalanced
public resttemplate resttemplate()
微服務之springcloud
分布式架構的概念 多個子模組相互協作才能完成業務流程,系統之間需要進行通訊。優點 1 把模組拆分,使用介面通訊,降低模組之間的耦合度。2 把專案拆分成若干個子專案,不同團隊負責不同子專案。3 增加功能時只需要再增加子專案,呼叫其他系統的介面 4 可以靈活進行分布式部署 缺點 1 系統之間互動需要使用...
SpringCloud微服務之 Ribbon
ribbon簡介 需要解決的問題 如何在配置eureka client註冊中心時不去硬編碼eureka server的位址?在微服務不同模組間進行通訊時,如何不去硬編碼服務提供者的位址?當部署多個相同微服務時,如何實現請求時的負載均衡?實現負載均衡方式1 通過伺服器端實現負載均衡 nginx rib...
SpringCloud微服務之OpenFeign
在之前進行微服務的呼叫用的是ribbon resttemplate,就像這樣 這樣呼叫微服務是更偏向面向restfull風格,但偏離了面向介面程式設計 使用openfeign,openfeign底層還是用的ribbon。新增openfeign依賴 org.springframework.cloudg...