ribbon eureka註冊中心消費者

2022-09-06 22:39:28 字數 3643 閱讀 4178

解決問題: 負載均衡及遠端呼叫以及重試等

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/12345http://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,...