海口网站建设费用,幸福宝推广app网站入口,网站后台密码忘记了,做网站大概价格目录
负载均衡策略#xff1a;
负载均衡的两种方式#xff1a;
饥饿加载 1. Ribbon负载均衡规则 规则接口是IRule 默认实现是ZoneAvoidanceRule#xff0c;根据zone选择服务列表#xff0c;然后轮询 2#xff0e;负载均衡自定义方式 代码方式:配置灵活#xff0c;但修…目录
负载均衡策略
负载均衡的两种方式
饥饿加载 1. Ribbon负载均衡规则 规则接口是IRule 默认实现是ZoneAvoidanceRule根据zone选择服务列表然后轮询 2负载均衡自定义方式 代码方式:配置灵活但修改时需要重新打包发布 配置方式:直观方便无需重新打包发布但是无法做全局配置 3饥饿加载 开启饥饿加载 指定饥饿加载的微服务名称 负载均衡策略
通过定义IRule实现可以修改负载均衡规则有两种方式: 1代码方式:在order-service中的OrderApplication类中定义一个新的IRule:
Bean public IRule randomRule(){ return new RandomRule();//将负载均衡设置为随机范围为整个order服务 } MapperScan(cn.itcast.order.mapper)
SpringBootApplication
public class OrderApplication {public static void main(String[] args) {SpringApplication.run(OrderApplication.class, args);}//创建RestTemplate并注入Spring容器BeanLoadBalancedpublic RestTemplate restTemplate(){return new RestTemplate();}Beanpublic IRule randomRule(){return new RandomRule();//将负载均衡设置为随机,范围为整个order}
}
2 配置文件方式:在order-service的application.yml文件中添加新的配置也可以修改规则 userservice:ribbon:NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #负载均衡规则随机。范围userservice服务 server:port: 8080
spring:datasource:url: jdbc:mysql://localhost:3306/cloud_order?useSSLfalseusername: rootpassword: 1234driver-class-name: com.mysql.jdbc.Driverapplication:name: orderservice #order的微服务名称
mybatis:type-aliases-package: cn.itcast.user.pojoconfiguration:map-underscore-to-camel-case: true
logging:level:cn.itcast: debugpattern:dateformat: MM-dd HH:mm:ss:SSS
eureka:client:service-url: #eureka地址信息defaultZone: http://127.0.0.1:10086/eureka
userservice:ribbon:NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #负载均衡规则随机。范围userservice服务
ribbon:eager-load:enabled: true #开启饥饿加载clients: #指定饥饿加载的服务- userservice
负载均衡的两种方式
1、轮循每个userservice循环执行 当我们执行四次请求时可以看到user1执行1和3user2执行2和4
2、随机每个userservice随机执行 当我恩执行五次请求时可以看到user1执行1、4、5user2执行2、3
饥饿加载
Ribbon默认是采用懒加载即第一次访问时才会去创建LoadBalanceClient请求时间会很长。而饥饿加载则会在项目启动时创建降低第一次访问的耗时通过下面配置开启饥饿加载: ribbon:eager-load:enabled: true #开启饥饿加载clients: #指定饥饿加载的服务- userserviceserver:port: 8080
spring:datasource:url: jdbc:mysql://localhost:3306/cloud_order?useSSLfalseusername: rootpassword: 1234driver-class-name: com.mysql.jdbc.Driverapplication:name: orderservice #order的微服务名称
mybatis:type-aliases-package: cn.itcast.user.pojoconfiguration:map-underscore-to-camel-case: true
logging:level:cn.itcast: debugpattern:dateformat: MM-dd HH:mm:ss:SSS
eureka:client:service-url: #eureka地址信息defaultZone: http://127.0.0.1:10086/eureka
userservice:ribbon:NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #负载均衡规则随机。范围userservice服务
ribbon:eager-load:enabled: true #开启饥饿加载clients: #指定饥饿加载的服务- userservice
下面进行比较两种加载速度
1、使用默认的懒加载 2、使用饥饿加载 访问速度得到提升。
原因饥饿加载时当启动项目时这些服务会直接加载上。而懒加载只有访问的时候才会加载导致加载时间过长。 代码文件点击下载https://pan.baidu.com/s/1N_sqj2YxdZJkYoqHJqAyZw?pwdwtxq
上一篇Eureka
下一篇Nacos的下载和配置