【SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】
一个服务可以有多个实例,例如我们的user-service,可以有:
假如这些实例分布于全国各地的不同机房,例如:
Nacos就将同一机房内的实例 划分为一个集群。
也就是说,user-service是服务,一个服务可以包含多个集群,如杭州、上海,每个集群下可以有多个实例,形成分级模型,如图:
【为什么Nacos 要引入这样一个服务分级模型呢?】
这就涉及到了服务跨集群调用问题
假设现在有杭州和上海两个地方的机房
现在杭州的一个order-service 想要访问user-service
就出现了两种选择【哪种更好呢?当然是杭州本地机房】
【原因】
服务调用尽可能选择本地集群的服务,跨集群调用延迟较高
本地集群不可访问时,再去访问其它集群
∴ 杭州机房内的order-service应该优先访问同机房的user-service。
查看Nacos 控制台
order-service 有个默认 的DEFAULT集群【其实也就是没有集群】
① 修改application.yml,添加如下内容
再来一个user-service 服务
先把服务都停掉
discovery:
cluster-name: HZ # 集群名称,HZ→杭州
OK,先启动1、2俩
这样这两个,就属于HZ,杭州集群了
现在改成上海,之后,再启动3
OK
② 在Nacos控制台可以看到集群变化
可以看到,现在有两个集群,3个 实例
查看详情
OK, 这样就修改好了实例的集群属性
Nacos服务分级存储模型
如何设置实例的集群属性