当前位置: 首页 > news >正文

网络推广平台联系昔年下拉手机seo百度点击软件

网络推广平台联系昔年下拉,手机seo百度点击软件,wordpress设置下载链接,优秀网站作品下载LoadBalancer 概念常见的负载均衡策略使用随机选择的负载均衡策略创建随机选择负载均衡器配置 Nacos 权重负载均衡器创建 Nacos 负载均衡器配置 自定义负载均衡器(根据IP哈希策略选择)创建自定义负载均衡器封装自定义负载均衡器配置 缓存 概念 LoadBalancer(负载均衡器)是一种…

LoadBalancer

  • 概念
  • 常见的负载均衡策略
  • 使用随机选择的负载均衡策略
    • 创建随机选择负载均衡器
    • 配置
  • Nacos 权重负载均衡器
    • 创建 Nacos 负载均衡器
    • 配置
  • 自定义负载均衡器(根据IP哈希策略选择)
    • 创建自定义负载均衡器
    • 封装自定义负载均衡器
    • 配置
  • 缓存

概念

LoadBalancer(负载均衡器)是一种网络设备或软件机制, 用于分发传入的网络流量负载(请求)到多个后端目标服务器上, 从而实现系统资源的均衡利用和提高系统的可用性和性能
负载均衡分为服务器端负载均衡和客户端负载均衡

  1. 服务器端负载均衡是指放在服务器端的负载均衡器(反向代理), 如: Nginx, HAProxy, F5等
  2. 客户端负载均衡器是指嵌套在客户端的负载均衡器(正向代理), 如: Ribbon, Spring Cloud LoadBalancer等

服务器端负载均衡器所有请求都会发送到服务器端, 就会造成服务器端压力大的情况

常见的负载均衡策略

  1. 轮询(默认): 按照顺序将请求发送到服务器
  2. 随机选择: 随机选择一个服务器处理请求
  3. 最少连接: 选择连接数最少的一个服务器
  4. IP 哈希: 使用客户端IP地址计算哈希值然后发送到与之对应的服务器
  5. 加权轮询: 按照权重值的比例发送请求
  6. 加权随机选择: 按照权重值随机选择后端服务器
  7. 最短响应时间: 将请求发送到响应时间最短的服务器

Spring Cloud LoadBalancer 默认只支持轮询和随机选择, 但是可以自定义负载均衡策略

使用随机选择的负载均衡策略

创建随机选择负载均衡器

public class MyRandomLoadBalancer {@Beanpublic ReactorLoadBalancer<ServiceInstance> randomLoadBalancer(Environment environment,LoadBalancerClientFactory loadBalancerClientFactory) {String name = environment.getProperty(LoadBalancerClientFactory.PROPERTY_NAME);return new RandomLoadBalancer(loadBalancerClientFactory.getLazyProvider(name, ServiceInstanceListSupplier.class), name);}
}

配置

image.png
注意: 配置局部负载均衡器有可能不起作用, 可以配置全局负载均衡器
image.png

Nacos 权重负载均衡器

Nacos 中支持两种负载均衡器, 一种是权重负载均衡器, 另一种是第三方的CMDB(地域就近访问)标签负载均衡器, 我们可以将Spring Cloud LoadBalancer 直接配置为 Nacos 的负载均衡器

创建 Nacos 负载均衡器

@LoadBalancerClients(defaultConfiguration = MyNacosLoadBalancer.class)
public class MyNacosLoadBalancer {@Resourceprivate NacosDiscoveryProperties nacosDiscoveryProperties;@Beanpublic ReactorLoadBalancer<ServiceInstance> nacosLoadBalancer(Environment environment,LoadBalancerClientFactory loadBalancerClientFactory) {String name = environment.getProperty(LoadBalancerClientFactory.PROPERTY_NAME);return new NacosLoadBalancer(loadBalancerClientFactory.getLazyProvider(name, ServiceInstanceListSupplier.class),name, nacosDiscoveryProperties);}
}

配置

image.png

自定义负载均衡器(根据IP哈希策略选择)

创建自定义负载均衡器

public class CustomLoadBalancer implements ReactorServiceInstanceLoadBalancer {private static final Log log = LogFactory.getLog(RandomLoadBalancer.class);private final String serviceId;private ObjectProvider<ServiceInstanceListSupplier> serviceInstanceListSupplierProvider;public CustomLoadBalancer(ObjectProvider<ServiceInstanceListSupplier> serviceInstanceListSupplierProvider, String serviceId) {this.serviceId = serviceId;this.serviceInstanceListSupplierProvider = serviceInstanceListSupplierProvider;}public Mono<Response<ServiceInstance>> choose(Request request) {ServiceInstanceListSupplier supplier = (ServiceInstanceListSupplier)this.serviceInstanceListSupplierProvider.getIfAvailable(NoopServiceInstanceListSupplier::new);return supplier.get(request).next().map((serviceInstances) -> {return this.processInstanceResponse(supplier, serviceInstances);});}private Response<ServiceInstance> processInstanceResponse(ServiceInstanceListSupplier supplier, List<ServiceInstance> serviceInstances) {Response<ServiceInstance> serviceInstanceResponse = this.getInstanceResponse(serviceInstances);if (supplier instanceof SelectedInstanceCallback && serviceInstanceResponse.hasServer()) {((SelectedInstanceCallback)supplier).selectedServiceInstance((ServiceInstance)serviceInstanceResponse.getServer());}return serviceInstanceResponse;}private Response<ServiceInstance> getInstanceResponse(List<ServiceInstance> instances) {if (instances.isEmpty()) {if (log.isWarnEnabled()) {log.warn("No servers available for service: " + this.serviceId);}return new EmptyResponse();} else {ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();HttpServletRequest request = attributes.getRequest();String ipAddress = request.getRemoteAddr();System.out.println("ip地址:" + ipAddress);int hash = instances.hashCode();int index = hash % instances.size();ServiceInstance instance = (ServiceInstance) instances.get(index);return new DefaultResponse(instance);}}
}

由于自定义负载均衡器和内置的负载均衡器只是在服务器选择的时候有所不同, 所以我们可以直接复制 RandomLoadBalancer 然后 在 getInstanceResponse()方法中进行改动即可

封装自定义负载均衡器

image.png

配置

image.png

缓存

Spring Cloud LoadBalancer 在获取实例时有两种选择:

  1. 及时获取: 每次都从注册中心获取到最新的实例, 效果好但是开销大
  2. 缓存服务列表: 每次得到服务列表后, 缓存一段时间,

spring Cloud LoadBalancer 默认缓存过期时间为 35s, 保存个数为 256个
我们也可以通过配置来改变这两个值

spring:cloud:loadbalancer:cache:ttl: 10capacity: 1000
#       enabled: false 关闭缓存

生产环境下不要关闭缓存否则会降低性能

http://www.tj-hxxt.cn/news/5866.html

相关文章:

  • wordpress打开html文件下载搜索引擎seo外包
  • 如何选择网站目标关键词搜狗引擎搜索
  • 专门做资产负债表结构分析的网站官网seo关键词排名系统
  • 长沙建网站需要多少钱百度怎么推广自己的网站
  • 做360全景有什么网站搜狐视频
  • 网站建设属于什么360推广联盟
  • 最好网站建设公司运营团队发外链的网址
  • 网站推广究竟应该怎么做目前主流搜索引擎是哪种
  • 公司做网站价格贵阳网站优化公司
  • 企业网站能提供哪些服务华为手机业务最新消息
  • 做筹款的网站需要什么资质淘宝关键词搜索工具
  • 权威网站发布平台seo推广怎么做视频教程
  • 网页设计创建站点教程网站客服
  • 国内外贸网站网站推广公司排行榜
  • 中山营销网站建设联系方式智慧营销系统平台
  • 网站申请免费优化软件下载
  • 卡片式网站模板下载宁德市房价
  • 网站开发的费用属于什么科目站长统计入口
  • 宜兴网站建设哪家好河北企业网站建设
  • 木材网站建设哪家好百度地图网页版
  • 做网站国内阿里云虚拟主机多少钱登录百度账号
  • 浙江网站建设哪家最好seo技术培训茂名
  • 免费搭建网站周口seo
  • 个人网页素材宁波seo深度优化平台
  • wordpress 添加编辑器谷歌seo搜索
  • 公司做网站需要准备哪些资料企业推广公司
  • 三亚同城招聘网站网络推广计划方案
  • php网站开发自学网站策划书
  • 做网站需要什么电脑武汉抖音seo搜索
  • 品牌词类的网站怎么做优化前端性能优化