Nacos注册中心
认识Nacos
Nacos是阿里巴巴的产品,现在是SpringCloud中的一个组件,相比Eureka功能更加丰富,在国内受欢迎程度较高
服务注册到Nacos
1.在cloud-demo父工程中添加spring-cloud-alibaba的管理依赖
<!-- nacos的管理依赖 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>2.2.5.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency>
2.注释掉order-service和user-service中原有的eureka依赖
<!--eureka客户端依赖--> <!-- <dependency>--> <!-- <groupId>org.springframework.cloud</groupId>--> <!-- <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>--> <!-- </dependency>-->
3.添加nacos的客户端依赖
<!-- nacos客户端依赖包 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
4.修改user-service&order-service中的application.yml文件,注释eureka地址,添加nacos地址
server:
port: 8081
spring:
datasource:
url: jdbc:mysql://localhost:3306/cloud_user?useSSL=false
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
application:
name: userserver # user服务的服务名称
cloud: #nacos服务地址
nacos:
server-addr: localhost:8848
mybatis:
type-aliases-package: cn.itcast.user.pojo
configuration:
map-underscore-to-camel-case: true
logging:
level:
cn.itcast: debug
pattern:
dateformat: MM-dd HH:mm:ss:SSS
#eureka:
# client:
# service-url: # eureka的地址信息
# defaultZone: http://127.0.0.1:10086/eureka
5.启动并测试
Nacos-服务多级存储模型
一个服务可以有多个实例,咧如我们的user-service,可以有:
-
127.0.0.1:8081
-
127.0.0.1:8082
-
127.0.0.1:8083
假如这些实例分布于全国各地的不同机房,例如:
-
127.0.0.1:8081,在上海机房
-
127.0.0.1:8082,在上海机房
-
127.0.0.1:8083,在杭州机房
Nacos 就将同一机房的实例,划分为一个集群
一个服务可以包含多个集群,如杭州、上海,每个集群下可以有多个实例,形成分级模型,如图:
配置集群
修改application.yml文件,添加集群配置:
server:
port: 8081
spring:
datasource:
url: jdbc:mysql://localhost:3306/cloud_user?useSSL=false
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
application:
name: userserver # user服务的服务名称
cloud: #nacos服务地址
nacos:
server-addr: localhost:8848
discovery:
cluster-name: HZ #集群名称
mybatis:
type-aliases-package: cn.itcast.user.pojo
configuration:
map-underscore-to-camel-case: true
logging:
level:
cn.itcast: debug
pattern:
dateformat: MM-dd HH:mm:ss:SSS
#eureka:
# client:
# service-url: # eureka的地址信息
# defaultZone: http://127.0.0.1:10086/eureka
Nacos环境隔离
Nacos中服务存储和数据存储的最外层都是一个名为namespace的东西,用来做最外层隔离
1.在Nacos控制台可以创建namespace,用来隔离不同环境
2.填写一个新命名空间信息
3.保存后会在控制台看到这个命名空间的id
4.修改application.yml,添加namespace
server:
port: 8080
spring:
datasource:
url: jdbc:mysql://localhost:3306/cloud_order?useSSL=false
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
application:
name: orderserver # order服务的服务名称
cloud: #nacos服务地址
nacos:
server-addr: localhost:8848
discovery: #nacos配置
namespace: c615e01a-d98e-440a-817a-772536ea110a #命名空间 填ID dev环境
mybatis:
type-aliases-package: cn.itcast.user.pojo
configuration:
map-underscore-to-camel-case: true
logging:
level:
cn.itcast: debug
pattern:
dateformat: MM-dd HH:mm:ss:SSS
#eureka:
# client:
# service-url: # eureka的地址信息
# defaultZone: http://127.0.0.1:10086/eureka
ribbon: # 饥饿加载
eager-load:
enabled: true #开启饥饿加载
clients: #指定饥饿加载的服务名称
- userserver