SpringCloud微服務之負載均衡Ribbon

2021-10-14 04:12:21 字數 2482 閱讀 2967

提供者的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...