注册中心
请参考:https://blog.csdn.net/MadLifeBin/article/details/120332483
可搭建单机版用于 Demo 测试
服务提供与消费
请参考:https://blog.csdn.net/MadLifeBin/article/details/120420139
全链路监控
请参考:https://blog.csdn.net/MadLifeBin/article/details/120445839
总体思路
构建一个注册中心,多个服务提供方(接口返回服务名、端口信息),一个服务消费方,在服务消费侧添加Ribbon负载均衡,测试调用接口时,观察每次响应的服务方的信息。
一. 添加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
二. 添加配置
ribbon.ConnectTimeout=3000
ribbon.ReadTimeout=30000
http-feign-provider8083.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.RoundRobinRule
三. 构造场景
1. 服务提供者增加接口
该接口返回当前服务的应用名、端口,方便在服务消费方区别调用了哪个服务
@GetMapping("/loadBalanceDemo/getProviderInfo")
public String getProviderInfo(){
return "当前Provider-springApplicationName: " + springApplicationName + ",端口为:" + serverPort;
}
2. 服务消费方构建消费链路
@FeignClient(name="http://${env.app.name.loadBalanceDemo}",contextId = "LoadBalanceDemoClient",path = "/loadBalanceDemo")
public interface LoadBalanceDemoClient {
@GetMapping("/getProviderInfo")
String getProviderInfo();
}
@GetMapping("/getProviderInfo")
public String getProviderInfo(){
return loadBalanceDemoClient.getProviderInfo();
}
3. 启动服务,联调
注册中心、服务消费各启动一个进程,服务提供方使用命令行指定端口启动多个服务进程,注册到同一个注册中心
java -jar .\http-feign-provider8083.jar --server.port=8086
当前服务消费侧使用的负载均衡算法为 RoundRobinRule 轮询,则在不断刷新接口时,服务provider 的端口会按一定的顺序打印。
四.其他Ribbon负载均衡算法
RoundRobinRule 轮询策略
RandomRule 随机策略
BestAvailableRule 高可用
WeightedResponseTimeRule 响应时间权重