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

南京手机网站设计哪里专业o2o的典型电子商务平台

南京手机网站设计哪里专业,o2o的典型电子商务平台,池州最好的网站建设,中劳网做网站LoadBalancer 概念常见的负载均衡策略使用随机选择的负载均衡策略创建随机选择负载均衡器配置 Nacos 权重负载均衡器创建 Nacos 负载均衡器配置 自定义负载均衡器(根据IP哈希策略选择)创建自定义负载均衡器封装自定义负载均衡器配置 缓存 概念 LoadBalancer(负载均衡器)是一种… LoadBalancer 概念常见的负载均衡策略使用随机选择的负载均衡策略创建随机选择负载均衡器配置 Nacos 权重负载均衡器创建 Nacos 负载均衡器配置 自定义负载均衡器(根据IP哈希策略选择)创建自定义负载均衡器封装自定义负载均衡器配置 缓存 概念 LoadBalancer(负载均衡器)是一种网络设备或软件机制, 用于分发传入的网络流量负载(请求)到多个后端目标服务器上, 从而实现系统资源的均衡利用和提高系统的可用性和性能 负载均衡分为服务器端负载均衡和客户端负载均衡 服务器端负载均衡是指放在服务器端的负载均衡器(反向代理), 如: Nginx, HAProxy, F5等客户端负载均衡器是指嵌套在客户端的负载均衡器(正向代理), 如: Ribbon, Spring Cloud LoadBalancer等 服务器端负载均衡器所有请求都会发送到服务器端, 就会造成服务器端压力大的情况 常见的负载均衡策略 轮询(默认): 按照顺序将请求发送到服务器随机选择: 随机选择一个服务器处理请求最少连接: 选择连接数最少的一个服务器IP 哈希: 使用客户端IP地址计算哈希值然后发送到与之对应的服务器加权轮询: 按照权重值的比例发送请求加权随机选择: 按照权重值随机选择后端服务器最短响应时间: 将请求发送到响应时间最短的服务器 Spring Cloud LoadBalancer 默认只支持轮询和随机选择, 但是可以自定义负载均衡策略 使用随机选择的负载均衡策略 创建随机选择负载均衡器 public class MyRandomLoadBalancer {Beanpublic ReactorLoadBalancerServiceInstance randomLoadBalancer(Environment environment,LoadBalancerClientFactory loadBalancerClientFactory) {String name environment.getProperty(LoadBalancerClientFactory.PROPERTY_NAME);return new RandomLoadBalancer(loadBalancerClientFactory.getLazyProvider(name, ServiceInstanceListSupplier.class), name);} }配置 注意: 配置局部负载均衡器有可能不起作用, 可以配置全局负载均衡器 Nacos 权重负载均衡器 Nacos 中支持两种负载均衡器, 一种是权重负载均衡器, 另一种是第三方的CMDB(地域就近访问)标签负载均衡器, 我们可以将Spring Cloud LoadBalancer 直接配置为 Nacos 的负载均衡器 创建 Nacos 负载均衡器 LoadBalancerClients(defaultConfiguration MyNacosLoadBalancer.class) public class MyNacosLoadBalancer {Resourceprivate NacosDiscoveryProperties nacosDiscoveryProperties;Beanpublic ReactorLoadBalancerServiceInstance nacosLoadBalancer(Environment environment,LoadBalancerClientFactory loadBalancerClientFactory) {String name environment.getProperty(LoadBalancerClientFactory.PROPERTY_NAME);return new NacosLoadBalancer(loadBalancerClientFactory.getLazyProvider(name, ServiceInstanceListSupplier.class),name, nacosDiscoveryProperties);} }配置 自定义负载均衡器(根据IP哈希策略选择) 创建自定义负载均衡器 public class CustomLoadBalancer implements ReactorServiceInstanceLoadBalancer {private static final Log log LogFactory.getLog(RandomLoadBalancer.class);private final String serviceId;private ObjectProviderServiceInstanceListSupplier serviceInstanceListSupplierProvider;public CustomLoadBalancer(ObjectProviderServiceInstanceListSupplier serviceInstanceListSupplierProvider, String serviceId) {this.serviceId serviceId;this.serviceInstanceListSupplierProvider serviceInstanceListSupplierProvider;}public MonoResponseServiceInstance choose(Request request) {ServiceInstanceListSupplier supplier (ServiceInstanceListSupplier)this.serviceInstanceListSupplierProvider.getIfAvailable(NoopServiceInstanceListSupplier::new);return supplier.get(request).next().map((serviceInstances) - {return this.processInstanceResponse(supplier, serviceInstances);});}private ResponseServiceInstance processInstanceResponse(ServiceInstanceListSupplier supplier, ListServiceInstance serviceInstances) {ResponseServiceInstance serviceInstanceResponse this.getInstanceResponse(serviceInstances);if (supplier instanceof SelectedInstanceCallback serviceInstanceResponse.hasServer()) {((SelectedInstanceCallback)supplier).selectedServiceInstance((ServiceInstance)serviceInstanceResponse.getServer());}return serviceInstanceResponse;}private ResponseServiceInstance getInstanceResponse(ListServiceInstance 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()方法中进行改动即可 封装自定义负载均衡器 配置 缓存 Spring Cloud LoadBalancer 在获取实例时有两种选择: 及时获取: 每次都从注册中心获取到最新的实例, 效果好但是开销大缓存服务列表: 每次得到服务列表后, 缓存一段时间, spring Cloud LoadBalancer 默认缓存过期时间为 35s, 保存个数为 256个 我们也可以通过配置来改变这两个值 spring:cloud:loadbalancer:cache:ttl: 10capacity: 1000 # enabled: false 关闭缓存生产环境下不要关闭缓存否则会降低性能
http://www.hkea.cn/news/14477065/

相关文章:

  • 宁夏水利厅建设管理处网站西安建网站的公司
  • 建设服装网站的论文免费做网络推广
  • .net网站方案行业网站建设费用明细
  • 网站模板减肥网络推广文案
  • 广州网站建设设计哪些做直播卖食品的网站有哪些
  • 建立公司网站流程建设网站平台需要什么硬件配置
  • 上海方正大厦网站建设首页图片点击率如何提高
  • 广告公司网站(附falsh及源代码)河北网站建设报价
  • 建设一个属于自己网站宿豫区城乡建设局网站
  • 个人或主题网站建设实验体会重庆网站建设狐灵科技
  • 有什么手机网站工程交易网
  • 网站制作策划帝国cms 网站地址设置
  • 建一个英文网站需要多少钱公司网站建设合规吗
  • 做一个网站成本多少钱域名服务器查询
  • 哪个网站做高中的题好网站开发 工资高吗
  • 沂南网站优化有没有大人和小孩做的网站
  • 没有网站怎样做外贸手机怎么制作游戏软件教程
  • 吴江网站建设公司重庆高端网站设计公司
  • 国外 网站网站济南君哲网站建设公司
  • 网站收录检测查询网站注册信息
  • 长春市长春网站建设网站项目计划书模板范文
  • 网站搜索优化排名廊坊网站建设技术支持
  • 网站可以自己维护吗制作网站专业公司吗
  • 大连网站外包中国建筑网官网查询阮国方
  • 适合做手机主页的网站灰色词排名代做
  • 网站建设与应用教案电影资源采集网站咋做
  • 微商怎么做 和淘宝网站一样吗有专业做外贸的网站吗
  • 微信上打开连接的网站怎么做的易企查
  • 成品网站灬源码1688哈尔滨网站免费制作
  • php支持大型网站开发吗网站建设如何盈利