feignClient中修改ribbon的配置
feignClient中修改ribbon的配置
1.使用@FeignClient註解發現服務
服務提供者的controller:
@RestController
public class StudentController {
@Autowired
private StudentService studentService;
@GetMapping("/getAll/{id}")
public Student getAll(@PathVariable("id")Integer id){
System.out.println("stu-provide:localhost:5865==>消費者查詢學生時間:"+new Date().toLocaleString());
Student stu = studentService.getAllStu(id);
return stu;
}
}
消費者端:
//使用FeignClient 告知釋出方的應用名稱 預設使用ribbon進行負載均衡
@FeignClient(name="stu-provide")
public interface TestFeign {
@RequestMapping(value = "/getAll/{id}",method = RequestMethod.GET)
public Student getAll(@PathVariable("id") Integer id);
}
在使用@FeignClient註解的時候 是預設使用了ribbon進行客戶端的負載均衡的,預設的是隨機的策略,那麼如果我們想要更改策略的話,需要修改消費者yml中的配置,如下:
server:
port: 9301
eureka:
client:
healthcheck:
enable: true
serviceUrl:
defaultZone: http://user:password123@localhost:8761/eureka
# defaultZone: http://eureka1:8761/eureka,http://eureka2:8762/eureka,http://eureka3:8763/eureka
instance:
hostname: localhost
ipAddress: localhost
prefer-ip-address: true
instance-id: ${spring.application.name}:${spring.cloud.client.ipAddress}:${spring.application.instance_id:${server.port}}
spring:
application:
name: stu-consumer
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/test?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8;useSSL=true
username: ****
password: ****
type: com.alibaba.druid.pool.DruidDataSource
initialSize: 5
minIdle: 5
maxActive: 30
maxWait: 10000
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMills: 300000
validationQuery: SELECT 1 FROM DUAL
session:
store-type: none
# 配置ribbon
stu-provide:
ribbon:
# NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #配置規則 隨機
# NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RoundRobinRule #配置規則 輪詢
# NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RetryRule #配置規則 重試
# NFLoadBalancerRuleClassName: com.netflix.loadbalancer.WeightedResponseTimeRule #配置規則 響應時間權重
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.BestAvailableRule #配置規則 最空閒連線策略
ConnectTimeout: 500 #請求連線超時時間
ReadTimeout: 1000 #請求處理的超時時間
OkToRetryOnAllOperations: true #對所有請求都進行重試
MaxAutoRetriesNextServer: 2 #切換例項的重試次數
MaxAutoRetries: 1 #對當前例項的重試次數
這裡我們可以看到ribbon的策略主要有以下幾種:
- com.netflix.loadbalancer.RandomRule #配置規則 隨機
- com.netflix.loadbalancer.RoundRobinRule #配置規則 輪詢
- com.netflix.loadbalancer.RetryRule #配置規則 重試
- com.netflix.loadbalancer.WeightedResponseTimeRule #配置規則 響應時間權重
- com.netflix.loadbalancer.BestAvailableRule #配置規則 最空閒連線策略
隨機:幾個提供者間隨機訪問
輪詢:輪流訪問
重試:在一段時間內通過RoundRobinRule選擇服務例項,一段時間內沒有選擇出服務則執行緒終止
響應時間權重:根據平均響應時間來計算權重
舉個簡單的列子,就是4個例項,A,B,C,D平均響應時間為10,40,80,100,所以總響應時間是10+40+80+100=230,每個例項權重為總響應時間與實際自身的平均響應時間的差的累積所得,所以A,B,C,D的權重分別如下:
例項A: 230-10=220
例項B:220+(230-40)=410
例項C:410+(230-80)=560
例項D:560+(230-100)=690
所以例項A:[0.220]
例項B:(220,410]
例項C:(410,560]
例項D:(560,690)
最空閒連線策略:當前空閒的提供者將優先被選取給消費者使用
下面以輪詢策略演示為例,配置後的使用結果如下:
訪問10次:http://localhost:9301/getAll/2:
相關文章
- FeignClient配置日誌訪問client
- 通過實現仿照FeignClient框架原理的示例來看清FeignClient的本質client框架
- WPF中Ribbon控制元件的使用控制元件
- Ribbon負載均衡策略與自定義配置負載
- 【SpringCloud】Ribbon如何自定義客戶端配置和全域性配置SpringGCCloud客戶端
- 還在run eject 修改create-react-app中的配置?ReactAPP
- Windows中MySQL 配置檔案中的配置項修改後不生效的解決辦法之一WindowsMySql
- @FeignClient註解詳解client
- SpringBoot專案中透過程式修改Nacos配置Spring Boot
- 使用@FeignClient中的fallback屬性處理介面呼叫異常問題client
- python 修改jenkins的配置檔案PythonJenkins
- C#/Vsto中CustomTaskPanes和Ribbon的使用方法C#
- 【OpenFeign】@FeignClient 代理物件的建立原始碼分析client物件原始碼
- 修改Maven配置項Maven
- 如何使用原生的Ribbon
- 修改手機的ro.debuggable配置
- helm部署的服務如何修改配置
- Ribbon系列
- 4. Spring Cloud Ribbon 實現“負載均衡”的詳細配置說明SpringCloud負載
- Nacos Spring Cloud 使用@FeignClient 呼叫其他工程的介面SpringCloudclient
- Git修改配置檔案Git
- Centos修改網路配置CentOS
- 在Docker中,Docker配置檔案在哪裡以及如何修改?Docker
- php修改php.ini配置檔案中disable_functionsPHPFunction
- 4.2.9 修改元件的Oracle重啟配置元件Oracle
- Spring Cloud Netflix—示例在Ribbon中禁用Eureka使用SpringCloud
- xshell 複製、貼上、快捷鍵修改 & 中斷目前命令配置
- Tomcat修改記憶體配置Tomcat記憶體
- SpringCloud FeignClient呼叫返回結果為null。SpringGCCloudclientNull
- spring cloud生態中Feign、Ribbon、loadbalancer的一些歷史SpringCloud
- 修改Ehcache快取中取到的值,快取中的值也被修改了快取
- Feign踩坑原始碼分析--@FeignClient注入容器原始碼client
- springcloud openfeign原理-1-FeignClient初始化SpringGCCloudclient
- Spring Cloud中Hystrix、Ribbon及Feign的熔斷關係是什麼?SpringCloud
- Ribbon原始碼解析原始碼
- Create apps with Ribbon UIAPPUI
- 負載均衡---ribbon負載
- Ribbon - 懶載入