解決問題: 負載均衡及遠端呼叫以及重試等
spring cloud ribbon是乙個基於http和tcp的客戶端負載均衡工具,它基於netflix ribbon實現。通過spring cloud的封裝,可以讓我們輕鬆地將面向服務的rest模版請求自動轉換成客戶端負載均衡的服務呼叫。spring cloud ribbon雖然只是乙個工具類框架,它不像服務註冊中心、配置中心、api閘道器那樣需要獨立部署,但是它幾乎存在於每乙個spring cloud構建的微服務和基礎設施中。因為微服務間的呼叫,api閘道器的請求**等內容,實際上都是通過ribbon來實現的,包括後續我們將要介紹的feign,它也是基於ribbon實現的工具。所以,對spring cloud ribbon的理解和使用,對於我們使用spring cloud來構建微服務非常重要。
ribbon 提供了負載均衡和重試功能, 它底層是使用resttemplate
進行 rest api 呼叫
resttemplate 是stringboot提供的乙個rest遠端呼叫工具
它的常用方法:
為了方便呼叫, 我們一般會注入ioc容器進行使用
//建立 resttemplate 例項,並存入 spring 容器
@bean
public resttemplate getresttemplate()
在建立springboot專案的時候, 我們需要的主要依賴有
eureka discovery client
,spring web
,ribbon [maintenance]
其中第三個ribbon [maintenance]
依賴可選, 因為eureka discovery client
已經包含了此依賴
org.springframework.boot
spring-boot-starter-web
org.springframework.cloud
spring-cloud-starter-netflix-eureka-client
org.springframework.cloud
spring-cloud-starter-netflix-ribbon
建立專案後springboot會自動生成dependencymanagement標籤
org.springframework.cloud
spring-cloud-dependencies
$pom
import
除了配置埠即名稱外, 和提供者一樣, 都要配置這個:
spring:
name: ribbon
server:
port: 3001 # 埠
// get請求
public jsonresult> getitems(@pathvariable string orderid) ",
jsonresult.class,
orderid);
return r;
}// post請求
public jsonresult decreasenumber(@requestbody listitems)
我們訪問http://localhost:3001/item-service/12345
http://localhost:3001//item-service/decreasenumber
測試結果略, 因為專案不同, 請求的結果也不同, 自行測試即可
以下在消費者中進行操作
eureka 依賴中已經包含了 ribbon
org.springframework.cloud
spring-cloud-starter-netflix-ribbon
resttemplate 設定@loadbalanced
@loadbalanced
負載均衡註解,會對resttemplate
例項進行封裝,建立動態**物件,並切入(aop)負載均衡**,把請求分發到集群中的伺服器
在resttemplate的bena配置上加此註解
@loadbalanced //負載均衡註解
@bean
public resttemplate getresttemplate()
我們之前進行遠端訪問的時候的url可能是這樣的:
我們只需要把ip和埠換成專案的id即可, 例如:http://item-service/***
注意, 這個item-service是專案中的配置檔案進行定義的
spring:
name: item-service
然後ribbon會根據專案名稱的專案, 進行負載均衡訪問
測試略, 可自行配置不同的埠請求, 進行測試
以下在消費者中進行操作
宣告: 重試不是必須的, 看業務需求, 重試可能會導致連線伺服器時間很長
新增如下配置
ribbon:
maxautoretriesnextserver: 2 # 更換服務次數
maxautoretries: 1 # 當前服務重試次數
oktoretryonalloperations: true
關於配置
如上的配置: maxautoretriesnextserver: 2 # 更換服務次數, maxautoretries: 1 # 當前服務重試次數
修改resttemplate的配置
@loadbalanced
@bean
public resttemplate getresttemplate()
spring cloud eureka 註冊中心
引入依賴 org.springframework.cloud spring cloud dependencies pom org.springframework.cloud spring cloud starter netflix eureka server 啟動類加上註解 服務端 enableeu...
Ps 中 的註冊問題
軟體有些時候需要有些,這個可以來自網路,也可以自己親手繪製,當然如果精通 ps的大師,這個畫圖 肯定是不在話下了。漂亮的外表是一定要有的。前幾天乙個學油畫的同學,在用 ps時抱怨說,那個 ps經常提示我說註冊碼不能用,讓我經常在網路上找註冊 碼。這個問題給了我乙個啟示,講究有時候是很不好的,俗話說 ...
029 中斷註冊
按鍵按下 產生了中斷 跳轉到異常向量入口,執行中斷函式。中斷函式要做的工作 1 保護現場 2 執行中斷處理函式 3 恢復現場 request irq unsigned int irq,irq handler t handler,unsigned long flags,const char name,...