1.安装与部署
Nacos是阿里巴巴开源的服务注册与发现、配置管理的组件,相当于是Eureka+Config的组合。 Nacos服务器是单独安装部署的,需要下载Nacos服务端程序,下载地址https://github.com/alibaba/nacos。
window下双击startup.cmd
登录Nacos,默认账号密码都是nacos
点击shutdown.cmd可关闭。
在idea中配置nacos服务
细节可直接搜索idea配置nacos

直接启动

2.实现服务注册与发现
导入依赖

子项目中引入依赖,以图书服务为例。

和注册到Eureka一样,需要配置文件中配置Nacos注册中心的地址

启动Nacos和bookservice服务,Nacos服务器上已经有book-service服务

将borrow-service和user-service同样导入依赖,然后配置application.yml。



启动user-service和borrow-service,查看服务配置。

使用OpenFeign实现服务发现远程调用以及负载均衡,先在子服务user,book,borrow导入依赖。三个都是同样的依赖。

编写访问接口




重启borrow-service,可以正常访问

验证Nacos的负载均衡。建立两个book-service和user-service




添加完需要将user和book服务配置文件中的port去掉

bookController打印日志


调用,刷新三次

bookController打印


临时和非临时实例



例如将borrow-service给关闭,那么nacos服务上就没有borrow-service了,若将borrow-service设置为非临时实例,那么关闭后,nacos服务上还有borrow-service。
将borrow-service设置为非临时实例,更改配置文件。

重启borrow-service

此时关闭borrow-service

3.集群注册与分区


将两个user-service和两个book-service分别集群到ChongQing和ChengDu。




此时已经有了两个地区的服务,但是目前没有按照区域优先进行调用。

在borrow-service加入集群地区,如Chengdu

此时重启borrow-service,然后访问借阅服务,但是仍采用轮询的方式调用book-service,并没有对Chengdu的book-service进行优先调用,因此需要配置。配置后重启borrow-service

此时一直刷新调用服务,发现优先调用了集群分区为Chengdu的book-service,即配置成功,如下图。



此时若关闭Chengdu地区的book服务,则会访问Chongqing的book服务。
除了不同区域的实例,同一区域内的多个服务也可以指定优先级。可在Nacos中配置,也可在applicaiton.yml配置。
4.Nacos配置中心
在Nacos中新建配置文件



发布后

然后在对应的user服务导入依赖

然后在user服务中添加bootstrap.yml配置文件


配置好重启user的两个服务,验证是否能访问数据库。

Nacos支持热部署
对user-service配置文件进行修改。

修改后发布,然后在控制层监听是否有新增的配置文件的值

重启user服务。进行调用

出现配置的test的值

再次在Nacos修改test的值并发布


此时若不重启user服务再去访问发现test的值还是hot,没有发生改变,此时可添加注解@RefreshScope表示修改配置文件test的值可实施刷新,添加后重启user服务,若test值进行改变,则user服务不需要再重启即可更新test的值。

6.Nacos命名空间
开发时区分开发环境、生产环境或引用归属类。
新增命名空间


然后将book服务和user服务配置到dev空间,修改配置文件


重启user和book服务,此时发现borrow服务在public,user和book服务在dev


此时访问http://localhost:8201/borrow/1,发现没有找到user-service。说明不在一个命名空间则是隔离的,不能进行访问的。

7.Nacos实现高可用




新建nacos数据库,将nacos安装文件中conf下的nacos-mysql.sql导入。
给nacos数据添加一个用户,账号密码都是nacos,赋予所有权限。



登录Nacos,默认账号密码都是nacos



















