命名空间和分组
命名空间和分组相当于一个配置文件的"年级和班次",在同一个 group 下,配置文件名不能重复,所以当需要创建文件名称相同的两个配置文件时,将两个配置文件创建在不同的 group 下即可。而 namespace 范围比 group 大,目的是一样的。
定义命名空间方式如图
在bootstrap中对应配置
spring.cloud.nacos.config.namespace=命名空间ID
分组则在配置中心新建配置的时候可指定,在bootstrap中对应配置
spring.cloud.nacos.config.group=group
配置自动更新
通过 Spring Cloud 原生注解 @RefreshScope
实现配置自动更新,示例:
@Service @RefreshScope public class ConfigController { @Value("${config.test}") private String test; public void testStr(){ System.out.print(test) } }
当你在配置中心更新 config.test
的 客户端的 test 的值也会刷新,并且你还能在客户端看到值变更的相关日志。
小结
别的不说,这比 Spring Cloud Config 好用太多了有木有! 和 apollo 比起来配置太容易了有木有!这么好用的东西,出正式版了,等坑都排完了妥妥的神器有木有!我选 nacos ,你呢?
作为注册中心
刚才是作为配置中心,接下来再来看看 nacos 作注册中心。
介绍
服务治理是微服务架构中最为核心和基础的模块。它主要用来实现各个微服务实例的自动化注册与发现。随着服务的越来越多,越来越杂,服务之间的调用会越来越复杂,越来越难以管理。而当某个服务发生了变化,或者由于压力性能问题,多部署了几台服务,怎么让服务的消费者知晓变化,就显得很重要了。不然就会存在调用的服务其实已经下线了,但调用者不知道等异常情况。这个时候有个服务组件去统一治理就相当重要了。注册中心便是做这个事情的,我们的服务上下线和发现服务都要依赖于注册中心。
nacos 注册中心有哪些特性呢?首先 nacos 从 cap 的角度来说,它能针对不同模式采用 cp 还是 ap 原则。然后它对服务发现的支持种类也有很多,比如:gRpc、Dubbo RpcService、Spring Cloud RESTful Service 。并且 nacos 本身提供了很直观的注册中心管理界面。方便我们查看管理服务,其 api 也很丰富,我们完全可以在做二次开发去写一个我们自己满意的管理页面。Nacos 提供对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求。Nacos 支持传输层 (PING 或 TCP)和应用层 (如 HTTP、MySQL、用户自定义)的健康检查。
示例
新建一个 Spring Boot 项目,添加如下依赖:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>0.9.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter</artifactId> <version>2.1.1.RELEASE</version> </dependency>
在启动类上加上 @EnableDiscoveryClient
注解
@SpringBootApplication @EnableDiscoveryClient public class MytestApplication { public static void main(String[] args) { SpringApplication.run(MytestApplication.class, args); } }
application添加配置:
server.port=8081 spring.application.name=service-mytest spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
启动服务后,我们能看到nacos管理页面注册上了一个服务。点击查看详情:
列表上有一列是临时实例,临时实例通常使用 AP 一致性,因此如果发生网络分区,注册临时实例仍然有效。持久化实例使用 CP 一致性,这保证了数据的一致性。而持久化配置则是配置集群和数据库,本文不做介绍。后期搭建集群的时候我们在做测试。权重则是指调用服务时路由到该实例的优先系数,数字越大优先级越高,为0则不会使用该实例。
总结
我们能用 nacos 作为配置中心或者注册中心,其本身提供管理界面也很方便。nacos 的使用企业也很多,下面放出一张 github 上 nacos 的使用企业截图:
官方文档还有提到 nacos 支持动态 DNS,也就是说支持 DNS 的负载均衡,但本人没找到很好的资料,后续再做研究。关于 nacos 集群和持久化配置搭建后续更新,感谢阅读。