package com.cd.loadbalancer;
import com.alibaba.cloud.nacos.NacosDiscoveryProperties;
import com.alibaba.nacos.api.annotation.NacosProperties;
import com.alibaba.nacos.common.utils.ConvertUtils;
import com.alibaba.nacos.common.utils.StringUtils;
import org.springframework.beans.factory.ObjectProvider;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.loadbalancer.EmptyResponse;
import org.springframework.cloud.client.loadbalancer.Request;
import org.springframework.cloud.client.loadbalancer.Response;
import org.springframework.cloud.loadbalancer.core.NoopServiceInstanceListSupplier;
import org.springframework.cloud.loadbalancer.core.ReactorServiceInstanceLoadBalancer;
import org.springframework.cloud.loadbalancer.core.ServiceInstanceListSupplier;
import reactor.core.publisher.Mono;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
// 自定义权重负载均衡策略,参考RoundRobinLoadBalancer、RandomLoadBalancer、NacosLoadBalancer负载均衡策略来实现
public class WeightLoadBalancer{
}
//public class WeightLoadBalancer implements ReactorServiceInstanceLoadBalancer {
//
// // 注入当前服务的nacos的配置信息
// @Autowired
// private NacosDiscoveryProperties nacosDiscoveryProperties;
//
// // loadbalancer 提供的访问当前服务的名称
// private final String serviceId;
//
// // loadbalancer 提供的访问的服务列表
// private ObjectProvider<ServiceInstanceListSupplier> serviceInstanceListSupplierProvider;
//
//
// public WeightLoadBalancer(ObjectProvider<ServiceInstanceListSupplier> serviceInstanceListSupplierProvider,
// String serviceId) {
// this.serviceId = serviceId;
// this.serviceInstanceListSupplierProvider = serviceInstanceListSupplierProvider;
// }
//
// @Override
// public Mono<Response<ServiceInstance>> choose(Request request) {
// // 获取服务实例列表
// ServiceInstanceListSupplier supplier =
// serviceInstanceListSupplierProvider.getIfAvailable(NoopServiceInstanceListSupplier::new);
//
//
// return supplier.get(request)
// .next()
// .map(this::weight);
// }
//
//
// private Response<ServiceInstance> weight(List<ServiceInstance> serviceInstances) {
// // 服务实例列表为空
// if (serviceInstances.isEmpty()) {
// System.out.println("No servers available for service: " + serviceId);
// return new EmptyResponse();
// }
//
// String clusterName = nacosDiscoveryProperties.getClusterName();
// System.out.println("clusterName -> " + clusterName);
// List<ServiceInstance> serviceInstanceList = serviceInstances.stream()
// .filter(serviceInstance -> StringUtils.equals(serviceInstance.getMetadata().get("nacos.cluster"), clusterName))
// .collect(Collectors.toList());
//
//
// getHostByRandomWeight(serviceInstanceList);
//
//
//
//
//
// for(ServiceInstance instance : serviceInstances){
// String weight = instance.getMetadata().get("nacos.weight");
// int w = ConvertUtils.toInt(weight);
//
// }
//
//
// }
//
// private ServiceInstance getHostByRandomWeight(List<ServiceInstance> serviceInstanceList) {
//
//
//
//
// }
//}
没有合适的资源?快使用搜索试试~ 我知道了~
Spring Cloud Nacos 2021使用LoadBalancer做负载均衡
共36个文件
xml:11个
java:9个
class:9个
5星 · 超过95%的资源 3 下载量 53 浏览量
2022-11-24
20:59:22
上传
评论
收藏 36KB ZIP 举报
温馨提示
Spring Cloud Nacos 2021 移除了 Ribbon,在Spring Cloud Commons 项目中添加了 Spring Cloud LoadBalancer 作为新的负载均衡器。LoadBalancer 的负载均衡策略没有 Ribbon 那么丰富,只提供了RandomLoadBalancer、NacosLoadBalancer、RoundRobinLoadBalancer,在不指定的时候默认使用RoundRobinLoadBalancer轮询负载均衡策略。 推荐使用整合 Ribbon 的方式来实现负载均衡。
资源推荐
资源详情
资源评论
收起资源包目录
alibaba.zip (36个子文件)
pom.xml 3KB
stock8020
pom.xml 1KB
target
classes
application.yml 411B
com
cd
stock8020
controller
StockController.class 1KB
Stock8020Application.class 924B
generated-sources
annotations
src
test
java
main
resources
application.yml 411B
java
com
cd
stock8020
controller
StockController.java 517B
Stock8020Application.java 399B
.idea
uiDesigner.xml 9KB
misc.xml 541B
jarRepositories.xml 880B
encodings.xml 768B
compiler.xml 616B
workspace.xml 7KB
.gitignore 0B
inspectionProfiles
Project_Default.xml 328B
order8010
pom.xml 2KB
target
classes
application.yml 411B
com
cd
loadbalancer
config
CustomLoadBalancerConfiguration.class 2KB
WeightLoadBalancer.class 319B
order8010
Order8010Application.class 1KB
config
RestTemplateConfiguration.class 1KB
controller
OrderController.class 1KB
generated-sources
annotations
src
test
java
main
resources
application.yml 411B
java
com
cd
loadbalancer
config
CustomLoadBalancerConfiguration.java 1KB
WeightLoadBalancer.java 4KB
order8010
config
RestTemplateConfiguration.java 615B
Order8010Application.java 759B
controller
OrderController.java 688B
stock8021
pom.xml 1KB
target
classes
application.yml 411B
com
cd
stock8021
com
cd
stock8021
controller
StockController.class 1KB
Stock8021Application.class 924B
generated-sources
annotations
src
test
java
main
resources
application.yml 411B
java
com
cd
stock8021
com
cd
stock8021
controller
StockController.java 534B
Stock8021Application.java 399B
共 36 条
- 1
资源评论
- 小埋妹妹2023-07-26这篇文件对于解释负载均衡的意义和应用场景进行了简洁明了的讲解,对于理解系统架构的人来说是很好的参考资料。
- UEgood雪姐姐2023-07-26文件中的实例代码和步骤说明很实用,能够帮助开发者更好地理解和应用负载均衡相关的知识。
- ShenPlanck2023-07-26这篇文件详细介绍了Spring Cloud Nacos 2021如何使用LoadBalancer做负载均衡,对于学习和使用这项技术的人来说非常有帮助。
- 苏采2023-07-26对于初次接触Spring Cloud Nacos的人来说,这篇文件提供了清晰的指导和概念解释,让人能够快速上手。
- 东方捕2023-07-26阐述了Spring Cloud Nacos与负载均衡的结合方式,让人感受到了这个技术的实用性和价值,让开发者对它产生了浓厚的兴趣。
CD4356
- 粉丝: 315
- 资源: 22
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功