ribbon 默认负载均衡 是什么_Spring cloud微服务架构-Ribbon(负载均衡)

ed5c6db29c7e35d8c207dfb48bca08f8.png

前言

首先我们先了解Ribbon是什么,Ribbon是一个负载均衡客户端,给我们更多控制的HTTP和TCP调用的行为。Feign默认集成了ribbon,Ribbon是Netflix的子项目,提供客户端实现负载均衡算法。Ribbon客户端组件提供如连接超时,重试等。Ribbon会自动的帮助你基于某种规则(如简单轮询,随机连接等)去连接这些机器,我们也很容易使用Ribbon实现自定义的负载均衡算法。上篇讲了Eureka注册中心,本文将Ribbon结合Eureka注册中心做消费端的负载均衡调用。如下图,Ribbon可以结合Eureka使用,也可以单独使用Ribbon。

0abe9bc1802fe5a42d025d90616e79fd.png

Ribbon简单使用

以上篇文章的Eureka-client模块作为Provider,新建Ribbon-client作为消费者,首先Ribbon-client引入ribbon,eureka,在pom文件引入

org.springframework.cloud spring-cloud-starter-netflix-eureka-clientorg.springframework.cloud spring-cloud-starter-netflix-ribbonorg.springframework.boot spring-boot-starter-web

在application.yml 文件引入相关配置

server: port: 8768spring: application: name: ribbon-clienteureka: client: serviceUrl: defaultZone: http://eureka-server1:8761/eureka/

新建 RibbonConfig配置类

@Configurationpublic class RibbonConfig { @Bean @LoadBalanced public RestTemplate restTemplate() { return new RestTemplate(); }}

新建controller调用(eureka-client为之前模块的应用名,以该名在注册中心注册的 )

@RestControllerpublic class RibbonClientController { @Autowired private RestTemplate restTemplate; @GetMapping("/getEurekaServer") public String getEurekaServer(String name){ return this.restTemplate.getForObject("http://eureka-client/ribbon?name=" + name, String.class); }}

启动类

@SpringBootApplicationpublic class RibbonApplication { public static void main(String[] args) { SpringApplication.run(RibbonApplication.class, args); }}

经过以上几步,默认的Ribbon客户完成,很简单。分别启动Eureka-server,Eureka-client,Ribbon-client。请求http://localhost:8768/getEurekaServer?name=Ribbon,会请求到Eureka-client模块的接口。上面的几步都是使用Ribbon默认的配置,一般微服务中,Provider会有多个,consumer也会有多个,默认情况下是轮询的方式去调用。当然我们也可以根据我们的需求去定义它。默认情况下,Ribbon自动帮我们做了如下配置

0b9a0aced13b0da5935f67a85a7c6c38.png

Ribbon自定义客户端

自定义Ribbon意思就是说自定义上图中六个Ribbon组件的默认配置,首先我们新建CustomRibbonConfig配置类

@Configurationpublic class CustomRibbonConfig { @Bean public IRule ribbonRule() { // 自定义为随机规则 return new RandomRule(); } @Bean public IPing ribbonPing() { // 如果调用成功,则认为本次心跳成功,表示此服务活着 return new PingUrl(); }}

上面的代码我们重新定义负载均衡算法和与Provider端的心跳方式

然后我们的启动类加上

@SpringBootApplication@RibbonClient(name = "eureka-client
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值