Spring Cloud
存在 Spring Cloud1.x和Spring Cloud2.x
版本,目前主流使用2.x版本,因为服务注册组件 eureka
的停止维护,所以目前很多公司都开始使用其他的替代方案,而阿里系的 Spring-Cloud-Alibaba
成了微服务生态一个主流解决方案。目前我所在公司也准备使用阿里这套方案进行微服务开发。本文主要介绍服务注册中心 nacos
的使用入门
Nacos
致力于帮助您发现、配置和管理微服务。 Nacos
提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
Nacos
主要特性(目前我使用到的):
application.yml
中的属性,利用此特性我们可以动态配置Spring Cloud Gateway动态路由。 startup.cmd
、 shutdown.cmd
sh startup.sh -m standalone
、 sh shutdown.sh
http://ip:port/nacos
,打开 nacos
后台主页说明安装成功 启动服务发现
服务注册实现:新建项目provider,添加依赖 spring-cloud-starter-alibaba-nacos-discovery
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> 复制代码
在启动类加上注解 @EnableDiscoveryClient
@SpringBootApplication @EnableDiscoveryClient public class ProviderApplication { public static void main(String[] args) { SpringApplication.run(ProviderApplication.class, args); } } 复制代码
配置 application.yml
文件
spring: application: name: service-provider cloud: nacos: discovery: server-addr: 10.0.0.205:8848 server: port: 9005 feign: sentinel: enabled: true 复制代码
配置结束,启动provider,查看nacos管理后台查看服务是否注册成功(被检测到)
启动服务配置
Spring Cloud Alibaba Nacos Config
是 Spring Cloud Config Server
和 Client
的替代方案,客户端和服务器上的概念与 Spring Environment 和 PropertySource
有着一致的抽象,在特殊的 bootstrap
阶段,配置被加载到 Spring
环境中。当应用程序通过部署管道从开发到测试再到生产时,您可以管理这些环境之间的配置,并确保应用程序具有迁移时需要运行的所有内容
服务配置功能让我们可以通过 Nacos
后台去修改微服务配置文件或者在此处来写,无需重启项目。我们以provider为例来检测 Nacos
服务配置的强大功能。
此处我们以获取配置文件中 nanshen.name
的值为例
1、服务端初始化
在Nacos配置管理列表里添加一个服务配置:
配置好以后点击发布即可!
2、客户端初始化
因为我们已经把服务配置放到Nacos上进行动态管理,所以我们就不需要在服务中去维护配置文件application.yml了,我们可以把它删除掉,但是存在一个问题,我的微服务怎么去发现Nacos中的配置呢,所以此时我们仍然需要一个bootstrap.properties配置文件用于识别Nacos中所在服务器中的配置文件。
3、测试配置
编写一个接口返回配置文件中user.name值:此处需要使用ConfigurableApplicationContext
类,不能使用
@Value
注解读取,因为
@Value
为一次性读取,读取一次后会把数据存到内存,不会再去读取配置环境中的值,所以如果要实现动态配置的话就不能使用
@Value
注解。
@RestController public class TestController { @Autowired private ConfigurableApplicationContext configurableApplicationContext; @GetMapping("/get_name") public String getNanShenName(){ String username=configurableApplicationContext.getEnvironment().getProperty("user.name"); return username; } } 复制代码
测试动态配置:在Nacos对应的配置文件中修改user.name值为nanshen,然后发布,可以在微服务后台日志看到user.name值被修改。
如图可以看到实现了动态修改配置文件功能,此功能对于网关动态路由技术有非常大的意义。
更新中...