SpringCloud Nacos + Ribbon 调用服务
时间: 2023-11-22 11:56:44 浏览: 67
Spring Cloud Nacos是一个非常流行的微服务注册中心和配置中心,而Ribbon则是一个负载均衡组件。结合起来,可以实现服务的自动发现和负载均衡。
下面是一个简单的示例:
1. 在pom.xml文件中添加依赖:
```xml
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
```
2. 在application.properties或application.yml中配置Nacos和Ribbon:
```yaml
# Nacos配置
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
# Ribbon配置
service-provider.ribbon.listOfServers=localhost:8081,localhost:8082
service-provider.ribbon.NIWSServerListClassName=com.netflix.loadbalancer.ConfigurationBasedServerList
```
3. 创建一个Ribbon的配置类,用于自定义负载均衡策略等:
```java
@Configuration
public class RibbonConfig {
@Bean
public IRule ribbonRule() {
return new RandomRule(); // 随机负载均衡策略
}
@Bean
public IPing ribbonPing() {
return new PingUrl(false, "/health"); // 检查服务健康状态的URL
}
}
```
4. 在服务消费方的代码中,注入RestTemplate对象,并使用@LoadBalanced注解:
```java
@RestController
public class ConsumerController {
@Autowired
private RestTemplate restTemplate;
@GetMapping("/hello")
public String hello() {
String url = "http://service-provider/hello";
return restTemplate.getForObject(url, String.class);
}
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
```
在这里,我们使用了"http://service-provider/hello"作为服务提供方的URL,而不是具体的IP和端口。这是因为Ribbon会根据服务名自动选择一个可用的实例。
以上就是使用Spring Cloud Nacos和Ribbon调用服务的基本步骤。需要注意的是,在使用Nacos作为注册中心时,服务提供方需要在启动时注册自己。可以参考Nacos的官方文档或者Spring Cloud官方文档进行配置和使用。