Ribbon的引入将为我们解决服务集群部署时需要实现相关的负载均衡的算法,简化服务调用的过程;引入Ribbon后在进行服务调用时只需要指定服务名称即可,无需去关心服务的部署地址以及负载均衡实现。下面我们通过一些Ribbon的示例带你快速了解如何使用它。下面示例使用的Spring-Cloud的版本是Hoxton.SR8,Spring-Boot的版本是2.3.4.RELEASE。示例项目的源代码
添加相关的依赖
由于引入的spring-cloud-starter-netflix-eureka-client中就包含了ribbon的东西,因此我们无需再额外的引入东西。
<!--eureka注册中心客户端-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
未引入ribbon组件时调用服务的示例
传统的方案就通过httpclient来请求,为了简便我们这里直接使用RestTemplate来操作。
@Autowired
private RestTemplateBuilder restTemplateBuilder;
@Autowired
private EurekaClient eurekaClient;
@Override
public void findGoods(Long id){
// 从eureka注册表中获取到要调用服务的地址和端口号
String domain = getServerAddress("ribbon-b");
// 拼接调用地址
String url = String.format(domain+"/goods?id=%d", id);
// 发送请求
String res = restTemplateBuilder.build().getForObject(url, String.class)<