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的基础配置;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理