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
- 修改Tomcat服務中的埠配置Tomcat
- 通過實現仿照FeignClient框架原理的示例來看清FeignClient的本質client框架
- WPF中Ribbon控制元件的使用控制元件
- Zuul使用Ribbon配置自動重試Zuul
- SAP 迴圈配置中的統計指標修改指標
- Ribbon負載均衡策略與自定義配置負載
- 還在run eject 修改create-react-app中的配置?ReactAPP
- 如何用程式碼修改struts中的web.xml配置WebXML
- Windows中MySQL 配置檔案中的配置項修改後不生效的解決辦法之一WindowsMySql
- @FeignClient註解詳解client
- 使用@FeignClient中的fallback屬性處理介面呼叫異常問題client
- 【SpringCloud】Ribbon如何自定義客戶端配置和全域性配置SpringGCCloud客戶端
- 修改Linux的基本配置Linux
- 修改Oracle的配置檔案Oracle
- 漂亮的Ribbon介面
- 修改Maven配置項Maven
- 【OpenFeign】@FeignClient 代理物件的建立原始碼分析client物件原始碼
- php修改php.ini配置檔案中disable_functionsPHPFunction
- 在Docker中,Docker配置檔案在哪裡以及如何修改?Docker
- SpringBoot專案中透過程式修改Nacos配置Spring Boot
- C#/Vsto中CustomTaskPanes和Ribbon的使用方法C#
- Nacos Spring Cloud 使用@FeignClient 呼叫其他工程的介面SpringCloudclient
- Git修改配置檔案Git
- linux 修改 dns 配置LinuxDNS
- Centos修改網路配置CentOS
- 4. Spring Cloud Ribbon 實現“負載均衡”的詳細配置說明SpringCloud負載
- 修改MySQL中的資料MySql
- 修改MyEclipse中的中文Eclipse
- 4.2.9 修改元件的Oracle重啟配置元件Oracle
- python 修改jenkins的配置檔案PythonJenkins
- 修改Ehcache快取中取到的值,快取中的值也被修改了快取
- xshell 複製、貼上、快捷鍵修改 & 中斷目前命令配置
- phpMyadmin配置檔案修改PHP
- Jmeter:修改記憶體配置JMeter記憶體
- Ubuntu配置和修改IP地址Ubuntu
- 用程式修改配置檔案
- SpringCloud FeignClient呼叫返回結果為null。SpringGCCloudclientNull