乐趣区

关于前端:SpringCloud-Alibaba核心组件Nacos服务多级存储模型配置集群第2章

目录

1.1:nacos 分级存储是什么

1.3:为什么 nacos 要引入这么一个服务分级

1.3.1:服务跨集群调用问题

2.1.1:批改文件 yml,增加如下内容:

2.1.2:在 Nacos 控制台能够看到集群变动:

1,服务分级存储模型

这个服务分级存储模型概念听起来很高级,上面咱们仔细分析一波!!!

1.1:nacos 分级存储是什么

服务:之前有服务的概念, 之前有 user-service 用户服务,和 order-service 的订单服务,这些都称之为服务。

问题呈现:

一个服务能够蕴含多个实例,不过随着业务规模越来越大那么咱们就会思考更多的问题,比如说你把所有的实例都部署在一个机房,就像鸡蛋放在篮子外面,哪天篮子打翻了,鸡蛋不也就完了,由小比大,把多个实例都放在一个机房,万一机房失火了,断电了,等等因素导致机房罢工了,那么全副的实例都进行,这个服务不也就挂机了嘛!

解决问题:

为了解决这个问题,咱们会将多个实例部署到多个机房,像阿里,京东,这些有钱了,在北京,上海等等几个中央安排几个机房调配几个实例过来,就算一个中央的机房挂机了,我还有好几个机房失常进行。

而咱们 nacos 分级存储模型就是引入了这样一个机房或者说地区的概念

为此也部署了多个实例,像 8081,8082,8083,等等,便于下文演示

1.2:什么又是集群

 而什么又是集群呢! 如下图,在上海部署了两个实例,在杭州部署有两个实例,而 nacos 把同在一个机房中的多个实例称之为:集群,在杭州那就被称之为杭州的 user-service 集群,在北京的就称之为北京的 user-service 集群。

所以在 nacos 的分级模型中,一级是服务,二级是集群,三级是实例

1.3:为什么 nacos 要引入这么一个服务分级

那么问题有来了,为什么 nacos 要引入这么一个服务分级?为什么非要多加个集群的概念,我间接服务找实例不好嘛?

比方说有个杭州机房,外面有 user-service 集群,order-service 集群,在上海,北京的机房中也同样有这种配置,当初 order-service 须要拜访 user-service,那么当初有两种形式拜访:第一种拜访本地局域网的,另外一种拜访,上海或者北京的机房的 user-service,那必定选本地集群,因为局域网内的拜访呢!速度快,提早低,而逾越集群的拜访比方拜访上海的集群,那必定提早就要高了。

所以用集群的形式,把上海的实例,演绎为上海集群,把北京的实例,演绎为北京集群,优先拜访同一个集群中的实例

杭州机房内的 order-service 应该优先拜访同机房的 user-service。

nacos 引入这个分级概念就是为了避免跨集群进行拜访或者说是尽可能的防止

1.3.1:服务跨集群调用问题

微服务相互拜访时,应该尽可能拜访同集群实例,因为本地访问速度更快。当本集群内不可用时,才拜访其它集群。

2,服务集群属性

如图这边我开启三个实例

查看一下服务中实例的详情信息,能够发现集群默认为 DEFAULT

上面给三个实例,别离设为(北京集群),SH(上海集群)

2.1 给实例配置集群

2.1.1:批改文件 yml,增加如下内容:

第一个批改了 application.yml 文件的集群配置:设置该实例在 BJ 集群


#端口号
server:
 port: 8888

spring:
 application:
 name: service-provider          #服务名
 cloud:
 nacos:
 discovery:
 server-addr: 127.0.0.1:8848   #nacos 服务地址
 cluster-name: BJ   #配置集群名称,也就是机房地位,例如:BJ,北京 

第二个批改了 application-8081.yml 文件的集群配置:设置该实例在 JS 集群

#server.port=8070
#spring.application.name=service-provider
#spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
#端口号
server:
 port: 8170

spring:
 application:
 name: service-provider          #服务名
 cloud:
 nacos:
 discovery:
 server-addr: 127.0.0.1:8848   #nacos 服务地址
 cluster-name: JS          #配置集群名称,也就是机房地位,例如:JS,江苏 

第三个批改了 application-8082.yml 文件的集群配置:设置该实例在 JS 集群

server:
 port: 8270

spring:
 application:
 name: service-provider          #服务名
 cloud:
 nacos:
 discovery:
 server-addr: 127.0.0.1:8848   #nacos 服务地址
 cluster-name: JS          #配置集群名称,也就是机房地位,例如:JS,江苏 

留神:

这两个 yml 文件的激活,批改启动项

-Dspring.profiles.active=8081

2.1.2:在 Nacos 控制台能够看到集群变动:

查看一下详情:

退出移动版