【【5.2】Nacos注册中心--服务多级存储模型
- 1 Nacos服务多级存储模型
- 2 服务跨集群调用问题
- 3 配置集群属性
- 4 总结
1 Nacos服务多级存储模型
之前有服务的概念:
例如:提供用户查询的use-service和提供订单查询的order-service,它们都叫服务。
我们还部署了多个实例,如图:
即一个服务可以包含多个实例。
不过随着业务规模的扩大,需要考虑更多的问题:
例如,我们现在将所有的实例部署在一个机房,就像将鸡蛋装在同一个篮子里。
如果一天篮子翻了那所有鸡蛋都会被打碎。
为解决这一问题:
需要将一个服务的多个实例部署到多个机房。
像阿里京东会将实例部署到不同的地方:
这就像将鸡蛋放在不同的篮子里。这样就能做到 容灾。
Nacos服务分级存储模型就是引入了这样一个“机房”。
它将同在一个“机房”的多个实例称为集群。
所以在Nacos服务分级存储模型中,一级是服务,下一级是集群,再下是实例。
- 为什么Nacos要引入这样一个服务分级存储模型呢?每个服务直接找实例不好吗?
2 服务跨集群调用问题
设想这样一种情况:
比如说,这里有一个杭州机房和上海机房,里面都有order-service集群和user-service集群。
现在order-service需要访问user-service,它有两种选择:
- 本地局域网内访问;
- 去另一个机房访问。
这时肯定选本地访问。
- 服务调用尽可能选择本地集群的服务,跨集群调用延迟较高;
- 本地集群不可访问时,再去访问其它集群。
3 配置集群属性
点进Nacos控制台服务详情可以看到:
它的集群名称是DEFAULT 默认,也就是没有集群。
接下来学习配置实例的集群属性:
- 修改user-service的application.yml文件,添加集群配置:
我们将UserApplication和UserApplication2实例设置到杭州集群,将UserApplication3设置到上海集群来模拟跨集群部署的方式。
打开user-service的yml文件,添加集群配置:
spring:
cloud:
nacos:
server-addr: localhost:8848
discovery:
cluster-name: HZ # 集群名称
重启两个user-service实例后,
再将上面配置中的HZ改为SH重启第三个user-service实例之后:
我们可以在nacos控制台看到下面结果:
4 总结
By --Suki 2023/2/2
知识内容来自于黑马程序员视频教学和百度百科。