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

做装修效果图的网站有哪些软件下载广州谷歌seo

做装修效果图的网站有哪些软件下载,广州谷歌seo,公司网站域名是什么,中企动力网站目录 1.负载均衡介绍 1.1问题描述 1.2什么是负载均衡 1.3负载均衡的一些实现 服务端负载均衡 客户端负载均衡 2.Spring Cloud LoadBalancer 2.1快速上手实现负载均衡 2.2负载均衡策略 自定义负载均衡策略 3.服务部署(Linux) 3.1服务构建打包…

目录

1.负载均衡介绍

1.1问题描述

1.2什么是负载均衡

1.3负载均衡的一些实现

服务端负载均衡

客户端负载均衡

2.Spring Cloud LoadBalancer

2.1快速上手实现负载均衡

2.2负载均衡策略

自定义负载均衡策略

3.服务部署(Linux)

3.1服务构建打包

3.2启动服务


承接上文服务注册/服务发现-Eureka

1.负载均衡介绍

1.1问题描述

观察上个章节远程调用的代码

 List<ServiceInstance> instances = discoveryClient.getInstances("product-service");//服务可能有多个, 获取第⼀个EurekaServiceInstance instance = (EurekaServiceInstance) instances.get(0);

1.根据应用名称获取了服务实例列表

2.从列表中选择了一个服务实例

思考:如果一个服务对应多个实例呢?流量是否可以合理的分配到多个实例

现象观察:

我们再启动2个product-service实例

选中要启动的服务,右键选择Copy Configuration

在弹出的框中选择 Configuration -> VM options

 添加VM options: -Dserver.port=9091

9091为服务启动的端口号,根据自己的情况进行修改

 11:46:05.684+08:00 INFO 23128 --- [nio-8080-exec-1] 
com.bite.order.service.OrderService : LUCF:product-service:909011:46:06.435+08:00 INFO 23128 --- [nio-8080-exec-2] 
com.bite.order.service.OrderService : LUCF:product-service:909011:46:07.081+08:00 INFO 23128 --- [nio-8080-exec-3] 
com.bite.order.service.OrderService : LUCF:product-service:9090

先启动Eureka后启动所有实例

观察Eureka,可以看到product-service下有三个实例

访问:http://127.0.0.1:8080/order/1

访问结果:

 11:46:05.684+08:00 INFO 23128 --- [nio-8080-exec-1] 
com.bite.order.service.OrderService : LUCF:product-service:909011:46:06.435+08:00 INFO 23128 --- [nio-8080-exec-2] 
com.bite.order.service.OrderService : LUCF:product-service:909011:46:07.081+08:00 INFO 23128 --- [nio-8080-exec-3] 
com.bite.order.service.OrderService : LUCF:product-service:9090

通过日志可以观察到,请求多次访问,都是同一台机器。

这肯定不是我们想要的结果,启动多个实例,是希望可以分担其他机器的负荷,那么如何实现呢?

解决方案:

我们可以对上述代码进行简单修改:

import com.example.orderservice.mapper.OrderMapper;
import com.example.orderservice.model.OrderInfo;
import com.example.orderservice.model.ProductInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;@Slf4j
@Service
public class OrderService {@Autowiredprivate OrderMapper orderMapper;@Autowiredprivate RestTemplate restTemplate;@Autowiredprivate DiscoveryClient discoveryClient;private static AtomicInteger atomicInteger = new AtomicInteger(1);public OrderInfo selectOrderById(Integer orderId){OrderInfo orderInfo = orderMapper.selectOrderById(orderId);
//      String url = "http://127.0.0.1:9090/product/"+orderInfo.getProductId();//从Eureka中获取服务列表List<ServiceInstance> instances = discoveryClient.getInstances("product-service");String uri = instances.get(atomicInteger.getAndIncrement() % instances.size()).getUri().toString();String url = uri+"/product/"+orderInfo.getProductId();log.info("远程调用url:{}", url);ProductInfo productInfo = restTemplate.getForObject(url, ProductInfo.class);orderInfo.setProductInfo(productInfo);return orderInfo;}
}

观察日志:

 12:02:13.245+08:00 INFO 1800 --- [nio-8080-exec-1] 
com.bite.order.service.OrderService : LUCF:product-service:909112:02:15.723+08:00 INFO 1800 --- [nio-8080-exec-2] 
com.bite.order.service.OrderService : LUCF:product-service:909012:02:16.534+08:00 INFO 1800 --- [nio-8080-exec-3] 
com.bite.order.service.OrderService : LUCF:product-service:909212:02:16.864+08:00 INFO 1800 --- [nio-8080-exec-4] 
com.bite.order.service.OrderService : LUCF:product-service:909112:02:17.078+08:00 INFO 1800 --- [nio-8080-exec-5] 
com.bite.order.service.OrderService : LUCF:product-service:909012:02:17.260+08:00 INFO 1800 --- [nio-8080-exec-6] 
com.bite.order.service.OrderService : LUCF:product-service:909212:02:17.431+08:00 INFO 1800 --- [nio-8080-exec-7] 
com.bite.order.service.OrderService : LUCF:product-service:9091

通过日志可以看到,请求被均衡的分配在不同的实例上,这就是负载均衡

1.2什么是负载均衡

负载均衡(Load Balance,简称LB),是高并发,高可用系统必不可少的关键组件.

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

 一个团队最开始只有一个人,后来随着工作量的增加,公司又招聘了几个人.负载均衡就是:如何把工作量均衡的分配到这几个人身上,以提高整个团队的效率

1.3负载均衡的一些实现

上面的例子中,我们只是简单的对实例进行了轮询,但真实的业务场景会更加复杂.比如根据机器的配置进行负载分配,配置高的分配的流量高,配置低的分配流量低等. 类似企业员工:能力强的员工可以多承担一些工作。

服务多机部署时,开发人员都需要考虑负载均衡的实现,所以也出现了一些负载均衡器,来帮助我们实现负载均衡.
负载均衡分为服务端负载均衡客户端负载均衡.

服务端负载均衡

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

比较有名的服务端负载均衡器是Nginx.

请求先到达Nginx负载均衡器,然后通过负载均衡算法,在多个服务器之间选择一个进行访问.

客户端负载均衡

在客户端进行负载均衡的算法分配.

把负载均衡的功能以库的方式集成到客户端,而不再是由一台指定的负载均衡设备集中提供.

比如SpringCloud的Ribbon,请求发送到客户端,客户端从注册中心(比如Eureka)获取服务列表,在发送请求前通过负载均衡算法选择一个服务器,然后进行访问.
 
Ribbon是SpringCloud早期的默认实现,由于不维护了,所以最新版本的Spring Cloud负载均衡集成的是SpringCloud LoadBalancer(SpringCloud官方维护)

客户端负载均衡和服务端负载均衡最大的区别在于服务清单所存储的位置

2.Spring Cloud LoadBalancer

2.1快速上手实现负载均衡

1.给RestTemplate这个Bean添加@LoadBalanced注解

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

2.修改IP端口号为服务名称

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

 3.启动多个product-service实例

4.测试负载均衡
连续多次发起请求: http://127.0.0.1:8080/order/1
观察product-service的日志, 会发现请求被分配到这3个实例上了

2.2负载均衡策略

 负载均衡策略是一种思想,无论是哪种负载均衡器,它们的负载均衡策略都是相似的.

Spring Cloud LoadBalancer仅支持两种负载均衡策略:轮询策略和随机策略

  • 轮询(Round Robin):轮询策略是指服务器轮流处理用户的请求.这是一种实现最简单,也最常用的 策略.生活中也有类似的场景,比如学校轮流值日,或者轮流打扫卫生.
  • 随机选择(Random):随机选择策略是指随机选择一个后端服务器来处理新的请求.
     

自定义负载均衡策略

Spring Cloud LoadBalancer默认负载均衡策略是轮询策略,实现是RoundRobinLoadBalancer,如果服务的消费者如果想采用随机的负载均衡策略,也非常简单.

参考官网:Spring Cloud LoadBalancer :: Spring Cloud Commons

1.定义随机算法对象,通过@Bean将其加载到Spring容器中
此处使⽤Spring Cloud LoadBalancer提供的 RandomLoadBalancer
    public class CustomLoadBalancerConfiguration {@BeanReactorLoadBalancer<ServiceInstance> randomLoadBalancer(Environment environment,LoadBalancerClientFactory loadBalancerClientFactory) {String name = environment.getProperty(LoadBalancerClientFactory.PROPERTY_NAME);return new RandomLoadBalancer(loadBalancerClientFactory.getLazyProvider(name, ServiceInstanceListSupplier.class),name);}}

注意:该类需要满足

  1. 不用@Configuration注释
  2. 在组件扫描范围内
2.使用@LoadBalancerClient或者@LoadBalancerClients注解
在RestTemplate配置类上方,使用@LoadBalancerClient或@LoadBalancerClients注解,可以对不同的服务提供方配置不同的客户端负载均衡算法策略.
由于咱们项目中只有一个服务提供者,所以使用@LoadBalancerClient
 
@LoadBalancerClient(name = "product-service",configuration = CustomLoadBalancerConfiguration.class)
@Configuration
public class BeanConfig {@LoadBalanced@Beanpublic RestTemplate restTemplate(){return new RestTemplate();}
}

@LoadBalancerClient注解说明:

  • name:该负载均衡策略对哪个服务生效(服务提供方)
  • configuration:该负载均衡策略用哪个负载均衡策略实现.
     

3.服务部署(Linux)

3.1服务构建打包

 采用Maven打包,需要对3个服务分别打包:
 eureka-server,order-service,product-service
 1.打包方式和SpringBoot项目一致,依次对三个项目打包即可.

3.2启动服务

 #后台启动eureka-server, 并设置输出⽇志到logs/eureka.lognohup java -jar eureka-server.jar >logs/eureka.log &#后台启动order-service, 并设置输出⽇志到logs/order.lognohup java -jar order-service.jar >logs/order.log &#后台启动product-service, 并设置输出⽇志到logs/order.lognohup java -jar product-service.jar >logs/product-9090.log &
再多启动两台product-service实例
 #启动实例, 指定端⼝号为9091nohup java -jar product-service.jar --server.port=9091 >logs/product-9091.log &#启动实例, 指定端⼝号为9092nohup java -jar product-service.jar --server.port=9092 >logs/product-9092.log &
http://www.qdjiajiao.com/news/5047.html

相关文章:

  • 专做韩国代购的网站深圳全网推广平台
  • 模拟人生4做游戏下载网站如何推广普通话
  • php的网站怎么做百度竞价排名榜
  • 给客户做网站需要提供最新实时大数据
  • jsp动态网站开发案...海外推广渠道
  • 温州手机网站制作哪家好网站seo搜索引擎的原理是什么
  • tp5企业网站开发视频quark搜索引擎入口
  • 什么网站可以做兼职 知乎百度网址大全 简单版
  • 编程怎么学海会网络做的网站怎么做优化
  • web个人网站怎么做重庆seo博客
  • 生成前端页面的网站杭州网站外包
  • 怎么注册网自己的网站吗百度智能云官网
  • 做网站和app哪类商标googlechrome浏览器
  • 尤溪网站建设排名优化推广
  • 手机有软件做ppt下载网站有哪些内容百度百科搜索入口
  • 安徽安庆天气预报seo网站快速排名
  • 西安行业网站制作专门制作小程序的公司
  • 网站开发定制案例展示seo站长教程
  • wordpress 会员可见seo蜘蛛屯
  • 安徽盛绿建设网站网站优化怎么操作
  • 淮安软件园网站建设互联网营销方法有哪些
  • 外贸独立站营销怎么做网站排名优化师
  • 网站由什么构成高端网站建设哪家便宜
  • 公司网站制作都需要图片推广系统
  • 深圳网络营销网站建设国际新闻最新消息十条
  • 江苏个人网站备案要求西安seo霸屏
  • 济源专业做网站公司广州品牌营销策划公司排名
  • 可靠的做pc端网站今日头条站长平台
  • asp网站开发实验报告做seo必须有网站吗
  • 有哪些做海岛的网站南京网页搜索排名提升