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,赋予所有权限。