5-Spring Cloud alibaba-3-nacos服务注册发现

 

 

在实际开发中,我们会把所有服务都注册到nacos注册中心上,由nacos去维护和管理我们的所有服务;

 

通过添加一个starter依赖:spring-cloud-starter-alibaba-nacos-discovery它通过自动配置、注解以及Spring Boot 编程模型与Nacos无缝集成,实现服务注册与发现,nacos可以在生产环境中作为大规模分布式系统的服务注册中心;

1.实现服务提供者

1、首先修改 pom.xml 文件,引入Nacos Discovery Starter;

 <dependency>

     <groupId>com.alibaba.cloud</groupId>

     <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>

 </dependency>

2、在应用的/src/main/resources/application.properties(也可以是application.yaml) 配置文件中配置 Nacos Server 地址

 spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

 spring.cloud.nacos.username=nacos

 spring.cloud.nacos.password=nacos

如果不想使用Nacos作为您的服务注册与发现,可以将 spring.cloud.nacos.discovery.enabled 设置为 false;

3、使用 @EnableDiscoveryClient 注解开启服务注册与发现功能;

 @SpringBootApplication

 @EnableDiscoveryClient

 public class ProviderApplication {

  public static void main(String[] args) {

  SpringApplication.run(ProviderApplication.class, args);

  }

}

此时就可以在Nacos的web管控台上看到注册上来的服务信息了;

 

2.实现服务消费者

消费者应用比提供者应用要稍微复杂一点,因为在消费端需要去调用提供者提供的REST 服务,此时需要用到RestTemplate、Feign及负载均衡Ribbon;

 

eg: Feign调用实现

服务者:

 

@SpringBootApplication
@EnableDiscoveryClient //开启服务注册与发现功能
public class Demo1ProviderApplication {
public static void main(String[] args) {
SpringApplication.run(Demo1ProviderApplication.class, args);
System.out.println("---------------start success---------------");
}
}
@RestController
public class GoodsController {
@GetMapping("/notFound")
public String notFound() {
return " this is demo - notFound -new-2 ";
}
}

Feign:

 

//name表示为哪个服务配置feign申明式服务调用
@FeignClient(name = "demo1-provider", contextId = "goodsFeignService")
public interface GoodsFeignService {
@GetMapping("/notFound")
String notFound();
}

 

消费端:

 

@SpringBootApplication
@EnableDiscoveryClient //开启服务注册与发现功能
@EnableFeignClients
//@EnableFeignClients(basePackageClasses= GoodsFeignService.class) //开启feign
/**
* 如果消费者的启动类的包是
*
* com.xxx.business,你的feign接口定义包应该是com.xxx.business.feign或com.xxx.business.service,反正一定要在
*
* com.xxx.business这个路径下面,feign才能成功被注入。
*/
public class Demo1ConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(Demo1ConsumerApplication.class, args);
System.out.println("-------consume start success------------");
}
}

 

@RestController
public class GoodsController {
@Autowired
private GoodsFeignService goodsFeignService;
@GetMapping("/notFound-feign")
public String notFound() {
return goodsFeignService.notFound();
}
}

 

 

3.服务EndPoint端点

 

每一个采用spring-cloud-starter-alibaba-nacos-discovery实现的服务都提供了一个EndPoint,EndPoint的访问地址为 

 

http://ip:port/actuator/nacos-discovery

 

EndPoint主要提供了两类信息:

 

1、subscribe: 显示了当前有哪些服务订阅者;

 

2、NacosDiscoveryProperties: 显示当前服务实例关于Nacos的基础配置;

 

 


 

posted on 2023-04-04 10:30  companion  阅读(40)  评论(0编辑  收藏  举报