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

沈阳网站制作公司和服务器wordpress怎么修改语言

沈阳网站制作公司和服务器,wordpress怎么修改语言,企业网站开发用什么软件,花都网站建设价格负载均衡 当服务流量增大时,通常会采用增加机器的方式进行扩容。负载均衡就是用来在多个机器或者其他资源中,按照一定的规则合理分配负载。其中的实现可以分成客户端负载均衡和服务端负载均衡。 服务端负载均衡 在服务端进行负载均衡的算法分配。 比…

负载均衡

当服务流量增大时,通常会采用增加机器的方式进行扩容。负载均衡就是用来在多个机器或者其他资源中,按照一定的规则合理分配负载。其中的实现可以分成客户端负载均衡和服务端负载均衡。

服务端负载均衡

在服务端进行负载均衡的算法分配。

比较有名的服务端负载均衡器是Nginx。请求先到达Nginx负载均衡器,然后通过负载均衡算法,在多个服务器之间选择一个进行访问。

客户端负载均衡

Spring Cloud LoadBalancer 是 Spring Cloud 最新版本的负载均衡集成组件,取代了早期的 Ribbon,也是本文使用的负载均衡组件。它允许将负载均衡功能作为库集成到客户端,而不再依赖于单独的负载均衡设备。客户端通过从注册中心(如 Eureka)获取服务列表,并使用负载均衡算法选择一个服务器来发送请求。这种方式不仅提升了系统的灵活性和可扩展性,还通过在客户端实现负载均衡来优化服务请求的分发和性能。

二者区别

  • 位置:服务端负载均衡位于服务端,而客户端负载均衡位于客户端。
  • 作用对象:服务端负载均衡处理所有入站请求,而客户端负载均衡处理发出的请求。
  • 控制粒度:服务端负载均衡可以全局控制请求的分发,而客户端负载均衡可以基于局部条件和策略做出请求选择。
  • 服务端负载均衡是一种较为传统的方法,适用于管理入站到一个服务的所有请求,特别是在客户端数量众多时。它可以简化客户端逻辑,使客户端无需关心后端服务器的复杂性。
    客户端负载均衡则允许更灵活的请求处理,特别适用于分布式系统架构,如微服务架构,其中每个服务可能需要根据不同的标准选择不同的后端服务。

Spring Cloud LoadBalancer

从Spring Cloud 2020.0.1版本开始,移除了Ribbon组件,改为使用Spring Cloud LoadBalancer组件来实现客户端负载均衡。

模拟多服务实例

对于上一篇的订单服务调用商品服务http://t.csdnimg.cn/r3KGs 当时只有一个商品服务。这里模拟多个商品服务,让订单服务去调用。

总共启动三个商品服务。

请求多次订单服务。

让订单服务多次调用商品服务,观察日志。

每次只用一个实例在工作。

手动负载均衡

    //计数器private AtomicInteger count = new AtomicInteger(1);private List<ServiceInstance> instances;@PostConstructpublic void init(){//从Eureka中获取服务列表instances = discoveryClient.getInstances("product-service");}public OrderInfo selectOrderById(Integer orderId){OrderInfo orderInfo = orderMapper.selectOrderById(orderId);//计算轮流的实例idnexint index= count.getAndIncrement() % instances.size();//获取实例String uri = instances.get(index).getUri().toString();//拼接urlString url = uri+"/product/"+orderInfo.getProductId();log.info("远程调用url:{}", url);ProductInfo productInfo = restTemplate.getForObject(url, ProductInfo.class);orderInfo.setProductInfo(productInfo);return orderInfo;}

使用组件

这里我们使用Spring Cloud LoadBalancer来实现客户端负载均衡。

添加注解

给RestTemplate这个Bean添加@LoadBalanced注解

@Configuration
public class BeanConfig {@LoadBalanced@Beanpublic RestTemplate restTemplate(){return new RestTemplate();}
}

修改IP端口为服务名

    public OrderInfo selectOrderById(Integer orderId){OrderInfo orderInfo = orderMapper.selectOrderById(orderId);String url = "http://product-service/product/"+orderInfo.getProductId();log.info("远程调用url:{}", url);ProductInfo productInfo = restTemplate.getForObject(url, ProductInfo.class);orderInfo.setProductInfo(productInfo);return orderInfo;}

 观察日志

可以看出成功实现了负载均衡。


自定义负载均衡策略

负载均衡策略一般有轮询,随机。Spring Cloud LoadBalancer默认使用的是轮询。接下来将自定义一个随机的算法。

定义随机算法对象
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.loadbalancer.core.RandomLoadBalancer;
import org.springframework.cloud.loadbalancer.core.ReactorLoadBalancer;
import org.springframework.cloud.loadbalancer.core.ServiceInstanceListSupplier;
import org.springframework.cloud.loadbalancer.support.LoadBalancerClientFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.core.env.Environment;// 不需要Configuration注解,只需要在组件扫描范围内即可
public class LoadBalancerConfig {
@Bean
ReactorLoadBalancer<ServiceInstance> randomLoadBalancer(Environment environment,LoadBalancerClientFactory loadBalancerClientFactory) {String name = environment.getProperty(LoadBalancerClientFactory.PROPERTY_NAME);System.out.println("==============" + name);return new RandomLoadBalancer(loadBalancerClientFactory.getLazyProvider(name,ServiceInstanceListSupplier.class), name);}
}
使用注解

使用 @LoadBalancerClient 或者 @LoadBalancerClients 注解在RestTemplate配置类的上方。

import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.loadbalancer.annotation.LoadBalancerClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;// name = "product-service" 表示只对 product-service 使用 LoadBalancerConfig 配置
@LoadBalancerClient(name = "product-service",configuration = LoadBalancerConfig.class)
@Configuration
public class BeanConfig {@LoadBalanced@Beanpublic RestTemplate restTemplate(){return new RestTemplate();}
}

LoadBalancer原理

LoadBalancer的实现主要依赖于LoadBalancerInterceptor类。该类会拦截RestTemplate的请求,然后通过Eureka从服务注册中心根据服务ID获取服务列表。随后,利用负载均衡算法选取真实的服务地址信息,并替换原始的服务ID。

http://www.yayakq.cn/news/781259/

相关文章:

  • 建设银行网站用户名忘了怎么办个人建设网站要钱吗
  • 专门做别墅的网站跨境建站服务公司
  • 揭阳网站免费建站深圳东门大厦
  • 做减肥餐的网站成都企业网站建设方案
  • 外文网站设计品牌建设的十六个步骤和内容
  • 电子商务网站建设asp sql 源码下载wordpress 中文语言
  • 访问不了服务器的网站网站默认数据库地址
  • 手机制作网站教程图书管理系统网站开发教程
  • 做外贸上哪些网站如何建网站看到物联网设备信息
  • 网站内部建设和程序wordpress脚注
  • 新网站开发营销策划公司介绍
  • 物流系统网站策划书广州市服务好的网站制作排名
  • 网站用ps做还是aiwordpress二手车模板
  • 金华自助建站免费设计室内装修软件
  • 一定要知道的网站响应式网站和传统网站
  • 国内买机票最便宜网站建设请公司做网站没有做好可以退钱吗
  • 国内著名平面设计师的个人网站济南小程序开发多少钱
  • 网站建设源代码 费用百度地图广告投放
  • 九江有没有做网站的公司扁平化设计风格的网站
  • 视频网站建设解决方案网站开发需解决的难题
  • 移动网站建设优势网站平台搭建要多少
  • 北京的网站建设公司上海21世纪人才网官网登录
  • 天水模板型网站建设番禺网络公司
  • 企业网站建设工作室wordpress 502错误
  • 网站开发前后端分工wordpress如何建立论坛
  • 贵港北京网站建设北京网站建设公司价格
  • 滨海营销型网站建设上海百度做网站
  • 交互做的比较好的网站金华市网站建设最低价
  • 云校网站建设wordpress背景图像
  • 网站的百度地图怎么做零库存品牌童装杭州网站建设