微服务
一、负载均衡原理
底层流程:
LoadBalancerInterceptor负载均衡拦截器 拦截客户端发起的http请求(RestTemplate)
-
LoadBalancerInterceptor 将请求交给 RibbonLoadBalancerClient,
RibbonLoadBalancerClient 获取url中的服务名称
RibbonLoadBalancerClient 向Eureka-server 拉取服务 ip:port
RibbonLoadBalancerClient 得到服务后 通过 IRule (负载均衡的算法:轮询、随机等)选出一个服务
通过参数 url (服务) 发起请求
图示:
详细负载均衡图示:
二、负载均衡策略
图示:
要想修改负载均衡的规则有两种方式:
一是注入 IRule 类型的 Bean(全局范围)
-
二是通过配置文件,对服务提供者 application.yml文件中,添加新的配置
范围只针对 指定的服务提供者
代码方式:
在配置类中加入 如下代码:
@Bean
public IRule getRule() {
return new RandomRule();
}
配置文件方式:
在Eureka-server微服务中 对配置文件加如下配置
userservice:
ribbon:
NFLoadBalancerRuleClassName: com.netfix.loadbalancer.RondomRule # 负载均衡规则
三、懒加载
每当我们第一次访问 查询数据时,都会执行一种懒加载的策略,就是有些对象只有执行任务需要时才会创建和初始化,所以执行 效率 相对慢一点
我们可以将懒加载修改为 饥饿加载(就是当服务启动时就进行初始化)
饥饿加载:
针对服务消费者的 配置文件 设置对服务提供者 的服务配置
application.yml
ribbon:
eager-load:
enabled: true # 开启饥饿加载
clients: # 指定饥饿加载服务
- userservice