SpringCloud 教程 已完結(IDEA 2022.1最新版)4K藍光畫質

在2020年前的springcloud 是采用了 Ribbom 作為負載均衡實現
但是在2020年之后 springcloud就把 Ribbom 移除了,取而代之的就是自己編寫的LoadBalancer
實際上 添加注解之后 就會啟動攔截器 對我們發(fā)起的服務調用請求進行攔截,然后進行相關的代碼
實現負載均衡 一共有兩種策略
RandomLoadBalancer
隨機分配策略
RoundRobinLoadBalancer
輪詢分配策略
輪詢分配策略是作為默認的策略進行使用
修改分配策略
不能使用在啟動類中配置的@LoadBalancer
創(chuàng)建一個配置類 在里面創(chuàng)建初始組件 RestTemplate
要注意的是 在配置類上面給上注解
@LoadBalancerClient(value = "user",configuration = LoadBalancerConfig.class)
value 指向的是服務名稱 右側 configuration 指向分配策略的配置類
(下面寫)
package cn.order.config; 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; @Configuration @LoadBalancerClient(value = "user",configuration = LoadBalancerConfig.class) public class BeanConfiguration { @Bean // 負載均衡注解 @LoadBalanced public RestTemplate createRestTemplate(){ return new RestTemplate(); } }
編寫隨機分配策略的配置類(上文需要的 configuration
)
這里要注意的是 大寫指向的是類 小寫指向的是對象
package cn.order.config; 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.context.annotation.Configuration; import org.springframework.core.env.Environment; @Configuration public class LoadBalancerConfig { @Bean public ReactorLoadBalancer<ServiceInstance> randomLoadBalancer(Environment environment, LoadBalancerClientFactory loadBalancerClientFactory){ String name = environment.getProperty(LoadBalancerClientFactory.PROPERTY_NAME); return new RandomLoadBalancer(loadBalancerClientFactory.getLazyProvider(name, ServiceInstanceListSupplier.class),name); } }
這樣就成功的修改好了 分配策略
標簽: