0403-服务注册与发现-客户端负载均衡-Ribbon的基本使用
一、概述
问题1、上一篇文章已说明如何注册微服务,但是调用方如何调用,以及如何防止硬编码。即电影微服务调用用户微服务
问题2、用户微服务多个节点,调用服务方如何负载均衡
二、实现负载均衡方式
2.1、服务器端负载均衡
2.2、客户端负载均衡
三、Ribbon
3.1、Ribbon是什么
Ribbon是Netflix发布的云中间层服务开源项目,其主要功能是提供客户端侧负载均衡算法。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,Ribbon是一个客户端负载均衡器,我们可以在配置文件中列出Load Balancer后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随机连接等)去连接这些机器,我们也很容易使用Ribbon实现自定义的负载均衡算法。
下图展示了Eureka使用Ribbon时候的大致架构:
Ribbon工作时分为两步:第一步先选择 Eureka Server, 它优先选择在同一个Zone且负载较少的Server;第二步再根据用户指定的策略,在从Server取到的服务注册列表中选择一个地址。其中Ribbon提供了多种策略,例如轮询round robin、随机Random、根据响应时间加权等。
四、官方文档解读
官方地址:https://cloud.spring.io/spring-cloud-static/Edgware.SR3/single/spring-cloud.html#spring-cloud-ribbon
4.1、引入pom
查看erueka已经有ribbon依赖,此处可以忽略。
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-ribbon</artifactId> </dependency>
4.2、使用
将RestTemplate具有Ribbon的负载均衡能力,增加@LoadBalanced注解
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
4.3、修改项目
注意需要先把两个权限注释或者配置一下按照项目中
management:
port: 11111 #actuator暴露接口使用的端口,为了和api接口使用的端口进行分离
context-path: /admin #actuator暴露接口的前缀
security:
enabled: true #actuator是否需要安全保证
roles: SUPERUSER
security:
basic:
enabled: true
path: /admin #针对/admin路径进行认证
user:
name: admin
password: password
将movie服务请求修改为
@GetMapping("/movie/{id}") public User findById(@PathVariable Long id) { //http://127.0.0.1:7900/sample/ //VIP visual IP // HAProxy Heartbeat 软件都有提及VIP return restTemplate.getForObject("http://microservice-provider-user/sample/" + id, User.class); }
调用服务即可。
4.4、修改用户服务端口为7901,在启动一个服务,此时已经有两个微服务提供方
使用Run Configurations或者Debug Configurations配置即可。
4.5、此时负载均衡已经生效。【开始可能没有生效,客户端服务列表没有】默认使用轮询
查看代码:https://github.com/bjlhx15/spring-cloud
microservice-comsumer-movie-ribbon
microservice-discovery-eureka
microservice-provider-user
相关文章
- 海康ehome协议分析(1):设备注册(2)
- php注册登录页面完整代码_用户登录注册代码
- SpringCloud之Eureka注册中心与Robbin负载均衡
- mybatis3源码解析--spring下mapper注册详解
- Vue 组件注册:基本使用和组件嵌套
- 如何设计一个注册中心
- 【Android 高性能音频】Oboe 音频流打开后 耳机 / 音箱 插拔事件处理 ( 动态注册广播接收者监听耳机插拔事件 | 重新打开 Oboe 音频流 )
- 【SeeMusic】下载安装并注册 SeeMusic 软件
- ChatGPT安全环境,AdsPower懒人注册使用教程!
- springboot-springcloud-eureka 服务注册与发现,负载均衡客户端(ribbon,feign)调用详解编程语言
- Linux设备注册:流程及步骤(linux注册设备)
- MySQL禁止注册,如何解决(mysql不让注册)