随着微服务概念的流行,越来越多的公司采用Spring Cloud
全家桶构建微服务系统,实现业务的快速迭代。Spring Cloud
提供了快速构建分布式微服务常用组件,包括Spring Cloud Eureka
、Spring Cloud Ribbon
、Spring Cloud Hystrix
、Spring Cloud Zuul
等等。依赖Spring
强大生态环境,其已经成为Java
开发人员构建微服务系统首选解决方案。
本系列文章将带大家认识另一个微服务解决方案Spring Cloud Alibaba
。依托于Alibaba
强大的技术支撑,以及Eureka2.x
不再维护等因素,相信不久的将来Spring Cloud Alibaba
将会成为大多数公司进行微服务实践的更优选择。
下面向大家介绍Nacos的服务注册发现与配置管理功能。
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
首先需要下载Nacos,下载完成直接解压,接下来启动Nacos
cd nacos/bin
// Linux/Unix/Mac
sh startup.sh -m standalone
// Windows
cmd startup.cmd -m standalone
上面即使用独立的方式启动Nacos
,启动完成之后访问Nacos首页,默认登录账号和密码都是nacos
接下来创建一个服务注册到Nacos
pom.xml
如下
4.0.0
service-provider
org.springframework.boot
spring-boot-starter-parent
2.1.8.RELEASE
com.example
alibaba-demo
0.0.1-SNAPSHOT
alibaba-demo
pom
Demo project for Spring Boot
1.8
Greenwich.RELEASE
2.1.1.RELEASE
org.springframework.cloud
spring-cloud-dependencies
${spring-cloud.version}
pom
import
com.alibaba.cloud
spring-cloud-alibaba-dependencies
${spring-cloud-alibaba.version}
pom
import
org.springframework.boot
spring-boot-maven-plugin
service-provider
,pom.xml
如下
alibaba-demo
com.example
0.0.1-SNAPSHOT
4.0.0
service-provider
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-actuator
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery
org.springframework.boot
spring-boot-maven-plugin
service-provider
模块中添加bootstrap.yml
配置文件,文件内容如下: spring:
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
application:
name: service-provider
main:
allow-bean-definition-overriding: true
server:
port: 8080
上面的配置指定了服务注册发现地址
@EnableDiscoveryClient
@SpringBootApplication
public class ServiceProviderApplication {
public static void main(String[] args) {
SpringApplication.run(ServiceProviderApplication.class, args);
}
}
然后启动service-provider
,即可在Nacos
的服务列表中观察到已经注册上去的服务
通过Nacos
提供的Open-API可以看到已经注册的服务列表
➜ ~ curl -X GET '127.0.0.1:8848/nacos/v1/ns/service/list?pageNo=1&pageSize=10'
{"count":1,"doms":["service-provider"]}%
➜ ~
到此已经完成的服务注册的基本使用,接下来介绍配置管理的使用
为了方便,我直接对service-provider
项目进行改造演示
pom.xml
文件
alibaba-demo
com.example
0.0.1-SNAPSHOT
4.0.0
service-provider
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-actuator
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-config
org.springframework.boot
spring-boot-maven-plugin
新增了spring-cloud-starter-alibaba-nacos-config
依赖
bootstrap.yml
spring:
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
config:
server-addr: ${spring.cloud.nacos.discovery.server-addr}
application:
name: service-provider
main:
allow-bean-definition-overriding: true
server:
port: 8080
上面的配置指定配置管理服务地址
@RefreshScope
@RestController
@EnableDiscoveryClient
@SpringBootApplication
public class ServiceProviderApplication {
@Value("${config.test}")
private String testConfigValue;
@GetMapping("/config")
public String getConfigValue() {
return testConfigValue;
}
public static void main(String[] args) {
SpringApplication.run(ServiceProviderApplication.class, args);
}
}
添加@RefreshScope
是支持动态配置更新
Nacos
配置文件 然后启动项目观察控制台日志输出
2019-12-01 15:44:39.097 INFO 19295 --- [ main] c.a.c.n.c.NacosPropertySourceBuilder : Loading nacos data, dataId: 'service-provider.properties', group: 'DEFAULT_GROUP', data: config.test=这是一个测试值
可以看到本地服务已经获取到Nacos
配置管理中的数据了。尝试通过接口访问数据
➜ ~ curl -X GET '127.0.0.1:8080/config'
这是一个测试值%
➜ ~
查看控制台日志
2019-12-01 15:47:25.694 INFO 19295 --- [-127.0.0.1_8848] o.s.c.e.event.RefreshEventListener : Refresh keys changed: [config.test]
说明已经修改成功,服务同步到最新的配置了。尝试通过接口访问数据
➜ ~ curl -X GET '127.0.0.1:8080/config'
这是一个测试值-修改后%
➜ ~
配置动态更新也已经生效。项目源码
本文由博客一文多发平台 OpenWrite 发布!