8.Nacos
9.Nacos
9.1.SpringCloudAlibaba简介
SpringCloudAlibaba
致力于提供微服务开发的一站式解决方案。
此项目包含开发分布式应用微服务的必需组件,方便开发者通过SpringCloud
编程模型轻松使用这些组件来开发分布式应用服务。
依托SpringCloudAlibaba
,只需要添加一些注解和少量配置,就可以将SpringCloud
应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统
SpringCloudAlibaba开发的组件
SpringCloudAlibaba的版本依赖
9.2.简介
Nacos
致力于发现、配置和管理微服务。
Nacos
提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
Nacos
帮助您更敏捷和容易地构建、交付和管理微服务平台。
Nacos
是构建以“服务”为中心 的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
下面是nacos的一些核心概念
9.2.1.服务(Service)
服务是指一个或一组软件功能(例如特定信息的检索或一组操作的执行),其目的是不同的客 户端可以为不同的目的重用(例如通过跨进程的网络调用)。
Nacos
支持主流的服务生态, 如KubernetesService
、 gRPC|DubboRPCService
或者SpringCloudRESTfulService
。
9.2.2.服务注册中心(ServiceRegistry)
服务注册中心是服务实例及元数据的数据库。
服务实例在启动时注册到服务注册表,并在关闭时注销。
服务和路由器的客户端查询服务注册表以查找服务的可用实例。
服务注册中心可能会调用服务实例的健康检查API来验证它是否能够处理请求。
9.2.3.服务元数据(ServiceMetadata)
服务元数据是指包括服务端点(endpoints)、服务标签、服务版本号、服务实例权重、路由规 则、安全策略等描述服务的数据。
9.2.4.服务提供方(ServiceProvider)
服务提供方是指提供可复用和可调用服务的应用方。
9.2.5.服务消费方(ServiceConsumer)
服务消费方是指会发起对某个服务调用的应用方。
9.2.6.配置文件中心(Configuration)
在系统开发过程中通常会将一些需要变更的参数、变量等从代码中分离出来独立管理,以独立 的配置文件的形式存在。目的是让静态的系统工件或者交付物(如 WAR,JAR 包等)更好地 和实际的物理运行环境进行适配。
配置管理一般包含在系统部署的过程中,由系统管理员或者 运维人员完成这个步骤。配置变更是调整系统运行时的行为的有效手段之一。
9.2.7.配置管理(ConfigurationManagement)
在数据中心中,系统中所有配置的编辑、存储、分发、变更管理、历史版本管理、变更审计等所有与配置相关的活动统称为配置管理。
9.2.8.名字服务(NamingService)
提供分布式系统中所有对象(Object)、实体(Entity)的“名字”到关联的元数据之间的映射管理服务,例如 ServiceName -> Endpoints Info, Distributed Lock Name -> Lock Owner/Status Info, DNS Domain Name -> IP List, 服务发现和 DNS 就是名字服务的 2 大场景。
9.2.9.配置服务(ConfigurationService)
在服务或者应用运行过程中,提供动态配置或者元数据以及配置管理的服务提供者。
9.3.安装与启动
9.3.1.版本选择
9.3.2.下载
1.打开网址之后选择版本
2.点击进去之后选择Windows/Linux版本的压缩包即可
9.3.3.解压以及目录说明
bin:可执行文件夹目录,包含:启动、停止命令等
conf:配置文件目录
target:存放naocs-server.jar
LICENSE:授权信息,Nacos 使用 Apache License Version 2.0 授权
NOTICE:公告信息
9.3.4.修改配置文件
打开conf目录下的application.properties文件
9.3.5.数据导入
以后nacos的所有配置信息、命名空间、配置中心、注册中心等信息都回保存在数据库中对应的表里面。
新建一个数据库:名字为刚才设置的数据库名字,默认为nacos
运行SQL文件:文件在conf目录下,运行名为nacos-mysql.sql的SQL文件
9.3.6.启动
运行bin目录下的startup.cmd文件即可
默认的运行方式为集群(cluster)模式,可以修改里面的文件改为单机(standalone)模式
也可以使用带参数的方式运行为单机模式:startup.cmd -m standalone
9.3.7.访问测试
http://localhost:8848/nacos/#/login
默认的账号密码都是:nacos
可以在user表里面查看/修改,密码加密规则为BcryptPasswordEncoder
9.4.使用Nacos做注册中心
9.4.1.新建命名空间
9.4.2.搭建Nacos-client-a与Nacos-client-b
①创建项目
这里修改为:start.aliyun.com
②选择依赖
NacosServiceDiscovery为nacos的注册中心依赖
③修改启动类
④修改配置
9.4.3.访问测试
http://localhost:8848/nacos/#/serviceManagement
9.4.4.服务发现
创建一个controller类
serviceId为要访问的服务名称
依次进行修改访问测试:http://localhost:8001/test
先不修改命名空间进行访问,结果为instance是空,说明不能跨命名空间
修改命名空间和b的一样,但组名不一样,结果为instance是空,说明不能跨组
修改命名空间、组和b的一样,结果为instance是1,说明在同一个命名空间和一个组内可以进行服务发现
9.4.5.集成Feign做远程调用
①修改Nacos-client-b
添加一个controller
②修改Nacos-client-a
修改pom.xml
修改启动类
添加feign类
修改controller类
③访问测试
http://localhost:8001/test,出现张三访问成功即为成功
9.4.6.集成Gateway做网关
搭建gateway
①选择依赖
②修改配置文件
③修改启动类
④访问测试
http://localhost/nacos-client-a/test,出现张三访问成功即为成功
9.4.7.更多配置项
9.5.Nacos配置文件中心
使用SpringCloudAlibabaNacosConfig
,可基于SpringCloud
的编程模型快速接 入Nacos
配置管理功能。
9.5.1.新建配置中心
9.5.2.搭建nacos-config
①选择依赖
nacosConfiguration为配置中心依赖
②创建controller
③修改配置文件
将配置文件改为bootstrap.yml,必须叫这个名字
④访问测试
注意:配置中心和注册中心的命名空间要一直才能获取到信息
9.5.3. 测试配置文件的动态刷新
修改配置中心中的配置
直接访问测试,不需要重新启动项目:http://localhost:8003/config
9.5.4.配置文件回滚
最上面的是最新的
选择回滚的配置,确定回滚
直接访问测试,不需要重新启动项目:http://localhost:8003/config
数据库中的历史版本,会保存30天
9.5.5.配置文件的读取方式
nacos
配置中心通过namespace、dataId和group来唯一确定一条配置。
Namespace:命名空间,默认的命名空间为public
,可以在Nacos
控制台中新建命名空间;
dataId:配置文件名称,格式为
-
${prefix} - ${spring.profiles.active} . ${file-extension}
-
prefix :默认为
spring.application.name
的值,也可以通过配置项spring.cloud.nacos.config.prefix
配置spring.profiles.active:当前环境对应的
profile
。- 当
spring.profiles.active
为空时,对应的连接符-也将不存在,dataId
的拼接格式变成${prefix}.${file-extension}
;
file-extension:配置内容的数据格式,可以通过配置项
spring.cloud.nacos.config.file-extension
配置。 - 当
group:配置分组,默认为DEFAULT_GROUP
,可以通过spring.cloud.nacos.config.group
配置。
在写 dataId 的时候一定要添加文件类型后缀,否则会出现访问不到的问题
9.5.6.读取多个配置文件
Nacos
配置中心的namespace
、dataId
和group
可以方便灵活地划分配置。
①新建两个配置
②修改配置文件
③修改controller
④访问测试
⑤测试动态刷新
修改nacos-config-a.yml
、nacos-config-b.yml
访问测试:http://localhost:8003/config
9.5.7.常用配置
9.5.8.本地和远端的配置文件需要写什么
本地(bootstrap.yml
)
- 应用名称
- 注册中心地址
- 读取的配置文件名称信息
远端(配置中心)
- 端口
- 数据源
- redis
- mq
- mybatis
- Swagger......
为了方便去动态刷新和修改
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术