注册中心Nacos
Nacos是Spring Cloud Alibaba提供的一个软件
这个软件主要具有注册中心和配置中心(课程最后讲解)的功能
注册中心的功能
微服务中所有项目都必须注册到注册中心才能成为微服务的一部分
注册中心和企业中的人力资源管理部门有相似
当前微服务项目中所有的模块,在启动前,必须添加注册到Nacos的配置
所谓注册,就是将自己的信息,提交到Nacos来保存
Nacos的下载
https://github.com/alibaba/nacos/releases/download/1.4.3/nacos-server-1.4.3.zip
Nacos的启动
因为Nacos是java开发的,我们要启动Nacos必须保证当前系统配置了java环境变量。
简单来说就是要环境变量中,有JAVA_HOME的配置,指向安装jdk的路径,确定了支持java后,就可以启动Nacos了。
打开其中的bin目录,在当前资源管理器地址栏输入cmd
E:\nacos\bin>startup.cmd -m standalone
startup是启动文件,shutdown是停止文件
startup.cmd:windows启动nacos的命令文件
-m 表示要设置启动参数
standalone:翻译为标准的孤独的,意思是正常的使用单机模式启动
运行成功默认占用8848端口,并且在代码中提示
如果不输入standalone运行会失败。如果报了"please set JAVA_HOME…",表示当前项目没有配置java环境变量(主要是没有设置JAVA_HOME)
如果运行没有报错,打开浏览器输入地址
http://localhost:8848/nacos,如果是首次访问,会出现这个界面,登录系统
用户名:nacos,密码:nacos
登录之后可以进入后台列表,不能关闭启动nacos的dos窗口,我们要让我们编写的项目注册到Nacos,才能真正是微服务项目
注册到Nacos
一个项目要想成为微服务项目体系的一部分,必须将当前项目的信息注册到Nacos
要添加一些配置,实现某模块启动时注册到Nacos的效果
首先该模块pom文件中添加依赖
<!-- 支持项目注册到Nacos注册中心的依赖 discovery发现(微服务的发现) -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
Nacos心跳机制
心跳:周期性的操作,来表示自己是健康可用的机制,注册到Nacos的微服务项目(模块)都是会遵循这个心跳机制的
目的:
1.是表单当前微服务模块运行状态正常的手段
2.是表单当前微服务模块和Nacos保持沟通和交换信息的机制
默认情况下,服务启动开始每隔5秒会向Nacos发送一个"心跳包",这个心跳包中包含了当前服务的基本信息。
Nacos接收到这个心跳包,首先检查当前服务在不在注册列表中,如果不在按新服务的业务进行注册,如果在,表示当前这个服务是健康状态
如果一个服务连续3次心跳(默认15秒)没有和Nacos进行信息的交互,就会将当前服务标记为不健康的状态。
如果一个服务连续6次心跳(默认30秒)没有和Nacos进行信息的交互,Nacos会将这个服务从注册列表中剔除
这些时间都是可以通过配置修改的
实例类型分类
实际上Nacos的服务类型还有分类
- 临时实例(默认)
- 持久化实例(永久实例)
默认每个服务都是临时实例,如果想标记一个服务为永久实例
cloud:
nacos:
discovery:
# ephemeral设置当前项目启动时注册到nacos的类型 true(默认):临时实例 false:永久实例
ephemeral: false
持久化实例启动时向nacos注册,nacos会对这个实例进行持久化处理。
心跳包的规则和临时实例一致,只是不会将该服务从列表中剔除。
一般情况下,我们创建的服务都是临时实例,只有项目的主干业务才会设置为永久实例
配置中心
什么是配置中心
配置中心:在微服务的环境下,将项目需要的配置信息保存在配置中心,需要读取时直接从配置中心读取,方便配置管理的微服务工具
我们可以将部分yml文件的内容保存在配置中心。
一个微服务项目有很多子模块,这些子模块可能在不同的服务器上,如果有一些统一的修改,我们要逐一修改这些子模块的配置,由于它们是不同的服务器,所以修改起来很麻烦。
如果将这些子模块的配置集中在一个服务器上,我们修改这个服务器的配置信息,就相当于修改了所有子模块的信息,这个服务器就是配置中心
使用配置中心的原因就是能够达到高效的修改各模块配置的目的
配置中心的使用
Nacos既可以做注册中心,也可以做配置中心。Nacos做配置中心,支持各种格式\类型的配置文件,如properties\yaml(yml)\txt\json\xml等
Nacos数据结构
namespace:命名空间
group:分组
Service/DataId:具体数据
命名空间
namespace是Nacos提供的最大的数据结构。
一个Nacos可以创建多个命名空间,一个命名空间能够包含多个group
每一个group中又可以包含多条配置信息
在nacos中新建命名空间
在上图连接的位置可以新增命名空间,填写命名空间名称和描述即可
Nacos有默认的命名空间public不能删除和修改。
添加命名空间后,我们在Nacos中注册的服务或添加的配置就可以指定命名空间了
因为多个命名空间可以隔离项目,每个项目使用自己的命名空间,互不干扰
分组
一个命名空间中可以有多个分组,进行进一步分离
我们使用时,如果不需要进一步分组,推荐使用group名称:DEFAULT_GROUP
服务或配置
确定了命名空间和分组之后,我们就可以添加服务或配置了。
之前我们启动的各种模块都是服务,这些服务都是默认保存在public命名空间中
下面我们主要使用配置中心的功能,在命名空间中添加配置
添加配置就是设置DataId,实际在Nacos中定位一个配置的结构为
Namespace>Group>DataId
Nacos添加配置
Nacos首页->配置管理->配置列表->添加配置(右侧的大"+"号)
添加模块数据库连接配置