Ribbon负载均衡
1.依赖的引入
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency>
在引入eureka客户端的坐标时自带的有Ribbon依赖,所以无需单独引入
restTemplate.getForObject与restTemplate.getForEntity的区别
restTemplate.getForObject调用别的服务的方法后只返回响应体中数据转化的对象,基本可以理解为json
而restTemplate.getForEntity调用别的服务的方法后返回值包含响应中一些重要的信息,例如响应头、响应状态吗、响应体等。
二者区别如下代码
@GetMapping("/consumer/payment/get/{id}") public CommonResult<Payment> getPayment(@PathVariable("id") Long id) { return restTemplate.getForObject(PAYMENT_URL "/payment/get/" id,CommonResult.class); } @GetMapping("/consumer/payment/getForEntity/{id}") public CommonResult<Payment> getPayment2(@PathVariable("id") Long id) { ResponseEntity<CommonResult> entity = restTemplate.getForEntity(PAYMENT_URL "/payment/get/" id,CommonResult.class); if(entity.getStatusCode().is2xxSuccessful()){ return entity.getBody(); }else{ return new CommonResult<>(444,"操作失败"); } }
Ribbon核心组件IRule
IRule负载规则替换方法
第一步:创建一个包myrule,里面创建一个配置类MySelfRule
@Configurationpublic class MySelfRule{ @Bean public IRule myRule() { return new RandomRule();//定义为随机 }}
第二步:在主启动类上加注解@RibbonClient
@SpringBootApplication@EnableEurekaClient@RibbonClient(name = "CLOUD-PAYMENT-SERVICE",configuration= MySelfRule.class)//CLOUD-PAYMENT-SERVICE是服务提供者的服务名,configuration= MySelfRule.class是配置类public class OrderMain80 { public static void main(String[] args) { SpringApplication.run(OrderMain80.class,args); }}
轮询算法原理
赞 (0)