Nacos
由Alibaba推出的集成于SpringCloudAlibaba中的一款开源注册中心框架
主要功能:
注册中心
配置管理
nacos的安装和部署
nacos默认访问端口8848
shell
docker pull nacos/nacos-server:1.2.0
docker run --env MODE=standalone --name nacos --restart=always -d -p 8848:8848 nacos/nacos-server:1.2.0
服务的注册和发现
微服务远程调用的过程中,包含两个角色
服务提供者:提供接口供其他微服务
一个服务可能存在多个实例
服务消费者:调用其他微服务提供的接口
所以在大型微服务项目中为了管理多个服务实例,引入注册中心概念,三者关系如下所示
调用者调用服务时,从注册中心获取实例列表自己进行负载均衡,挑选一个实例进行远程调用
注册中心的实时更新
提供者会定时向注册中心报告,实现心跳检测
新实例启动时会在注册中心中进行注册
注册中心的服务列表变更时,主动通知微服务更新服务列表
nacos的文件配置
需要新建配置文件设置mysql地址:MYSQL_SERVICE_HOST=你的mysql地址,在部署时指定文件为配置文件
nacos引入依赖
这个依赖同时包含了服务注册发现和负载均衡的功能
xml
<!--nacos 服务注册发现-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
nacos配置
yml
spring:
application:
name: cfjg-service # 服务名称
cloud:
nacos:
server-addr: 192.168.150.101:8848 # nacos地址
nacos配置管理
微服务共享的配置可以统一交由nacos保存管理,在控制台修改后,会变更配置推送到对应微服务,实现配置热更新
nacos拉取配置
因为读取nacos配置会在SpringCloud上下文初始化时处理,此时application.yml尚未被读取
所以我们需要在bootstrap.yaml引导文件中进行nacos地址配置
bootstrap中内容如下
yml
spring:
application:
name: cart-service # 服务名称
cloud:
nacos:
server-addr: 192.168.150.101 # nacos地址
config:
file-extension: yaml # 文件后缀名
shared-configs: # 共享配置
- dataId: shared-jdbc.yaml # 共享mybatis配置
- dataId: shared-log.yaml # 共享日志配置
- dataId: shared-swagger.yaml # 共享日志配置