一、什么是nacos?
Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
二、Nacos可以做什么?
-
1、动态配置服务:支持以中心化、外部化和动态化的方式管理所有环境的配置。动态配置消除了配置变更时重新部署应用和服务的需要。配置中心化管理让实现无状态服务更简单,也让按需弹性扩展服务更容易。
-
2、服务发现及管理:支持DNS-Based和RPC-Based(Dubbo、gRPC)模式的服务发现,同时提供实时健康检查,以防止将请求发往不健康的主机或服务实例。借助Nacos,可以更容易地为服务实现断路器。 3、动态DNS服务:通过支持权重路由,轻松实现中间层负载均衡、更灵活的路由策略、流量控制及简单数据中心内网的简单DNS解析服务。更加容易地实现以DNS协议为基础的服务发现,以消除耦合到厂商私有服务发现API上的风险。
三、安装Nacos环境
Nacos的环境安装非常简单,首先从 GitHub 上 checkout 源码,编译获取安装包,命令如下:
mvn -Prelease-nacos clean install -U
在Windows系统下,可以取target下的nacos-server-0.8.0.zip包(当然也可以从Github上直接下载安装包),将其解压到任意目录下。
注意:所解压目录的文件路径不能包含空格,例如:
D:/Program Files/Nacos
,否则在启动Nacos Server时,会提示错误:找不到或无法加载主类Files/Nacos/bin/Files/Nacos/plugins/cmdb
解压后,进入bin目录,双击startup.cmd,此时,Nacos Server就开始启动了。
在启动界面中,可以看到Nacos的版本、运行模式、端口号、进程号、Console等信息,其中Console:http://xxx:xx/nacos/index.html的地址就是Nacos的控制台,可以直接在浏览器访问:
Nacos控制台的默认账号密码为:nacos/nacos
登录后可以看到如下界面,在控制台可以进行配置和服务的管理。
四、nacos注册中心
什么是注册中心:
注册中心是微服务架构中的纽带,类似于“通讯录”,它记录了服务和服务地址的映射关系。在分布式架构中,服务会注册到这里,当服务需要调用其它服务时,就到这里找到服务的地址并进行调用。注册中心本质上是为了解耦服务提供者和服务消费者。对于任何一个微服务,原则上都应存在或者支持多个提供者,这是由微服务的分布式属性决定的,更进一步,为了支持弹性扩缩容特性,一个微服务的提供者的数量和分布往往是动态变化的,也是无法预先确定的。因此,原本在单体应用阶段常用的静态LB机制就不再适用了,需要引入额外的组件来管理微服务提供者的注册与发现,而这个组件就是服务注册中心。
注册中心的核心功能:
- 服务注册:服务实例将自身服务信息注册到注册中心
- 服务发现:服务实例通过注册中心,获取到注册到其中的服务实例的信息,通过这些信息去请求它们提供的服务
- 服务剔除:服务注册中心将出问题的服务自动剔除到可用列表之外,使其不会被调用到
为了帮大家快速理解其概念,这里用一个通俗的案例:
小明和小新住在同一家沃尔玛超市附近,他俩都办了会员,经常关注超市的一些优惠活动,元宵节快到了,沃尔玛准备搞一个元宵节特惠活动,需要通知到附近的住户。对于沃尔玛来说,可以安排工作人员电话通知到小明和小新;而对于小明和小新来说,可以去超市咨询相关信息。
那么问题来了,住在超市附近的,不只有小明和小新两个消费者,如果每个人都打电话去通知就显得太麻烦了,小明和小新提前在超市了解了相关信息,可是不巧的是,由于各种原因,沃尔玛元宵特惠活动要从上午改到下午才开始,他们又该从何得知呢?
其实,沃尔玛关心的是通知能不能传达到附近的住户,小明和小新关心的是沃尔玛优惠活动的详情动态。沃尔玛不必给每个住户挨个电话通知,它只需要在它的微信公众号上推送一条消息即可,小明和小新也不用去超市咨询,只要随时关注沃尔玛公众号的推送消息即可。
在上面这个例子中,沃尔玛就是服务提供者,小明和小新是服务消费者,微信公众号类似于注册中心,沃尔玛将“服务”发布到注册中心,小明和小新作为消费者,订阅注册中心上沃尔玛提供的“服务”,通过微信公众号,沃尔玛(服务方)和小明、小新(消费方)就“解耦”了。
在现有的技术方案中,注册中心主要分为两类,一类是CP类注册中心,另一类是AP类注册中心,Nacos属于后者,为什么会有 CP 和 AP 两种不同类型的注册中心呢?这就不得不提到分布式的一个理论:CAP理论。它是由加州大学的计算机科学家 Eric Brewer 提出,在一个分布式系统中,Consistency(一致性)、Availability(可用性)、Partition tolerance(分区容错性)无法同时满足,正所谓“鱼和熊掌与虾不可兼得也”。
CP类注册中心更强调一致性,而AP类注册中心更强调可用性,它们之间的区别,推荐阅读阿里中间件博客的文章:《阿里巴巴为什么不用 ZooKeeper 做服务发现?》。如果你看完文章后,得到的结论是以后再也不把 Dubbo 和 Zookeeper 结合起来使用了,那么你便错了。因为,对于绝大多数公司的绝大多数系统,无论是 Dubbo + Zookeeper,还是 Dubbo + Nacos,都能够满足需求,有的公司甚至都不需要使用Dubbo,所以,一定要结合实际的业务场景来分析判断。
五、Nacos在Spring Boot中配置
引入SpringcloudAlibaba依赖
<!-- 注册中心 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>
<!-- 配置中心 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config-jasypt</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>
创建一个bootstrap.yaml文件
在配置文件中填写nacos信息
spring:
application:
name: xx-xxx-service # 应用名称
profiles:
active: local
cloud:
nacos:
server-addr: 127.0.0.1:8008 #这里填写注册服务地址
config:
# prefix
file-extension: yaml
prefix: common
# ext配置 refresh: true支持动态刷新,各专业分别增加需要的xxx.
ext-config:
- data-id: xx.yaml # 配置名称
refresh: false # 是否实时刷新
- data-id: xx.yaml
refresh: false
- data-id: xx.yaml
refresh: true
- data-id: xx.yaml
refresh: true
- data-id: xx.yaml
refresh: true
- data-id: xx.yaml
refresh: true
- data-id: xx.yaml
refresh: true
enabled: true # 是否使用
在配置文件
在bootstrap.yaml中读取所配置的值
在自己的项目文件中如下注解
我们在开发当中,经常会有开发,生产,测试不同的环境,那么我们命名空间新建命名空间,分别取prod,dev,test就可以了。
再在bootstrap.yaml文件中设置
spring.cloud.nacos.config.namespace=9de62e44-cd2a-4a82-bf5c-95878bd5e871
其中的Id为配置空间
其中的每一个配置可以用在不同的空间,相当于空间是一个数据集,只是用在不同的服务中,也可以分组区别。
这样可以做到每个微服务,每个环境下的配置文件,还可以把不同配置类型的文件分开,比如数据库配置,mybatis配置,其他配置,项目配置nacos地址,连接不上时会默认到本地去找
原文地址:https://blog.csdn.net/qq_38784203/article/details/121658730
标签:服务,配置,Nacos,nacos,yaml,注册,使用 From: https://www.cnblogs.com/2393920029-qq/p/17276592.html