• 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,北京
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    第二个修改了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,江苏
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    第三个修改了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,江苏
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    注意:

    在这里插入图片描述

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

    -Dspring.profiles.active=8081

    2.1.2:在Nacos控制台可以看到集群变化:

    查看一下详情:

  • 相关阅读:
    矩阵可交换的定义和性质
    【数据结构】链表详解
    网络编程、广播、组播、数据库sqlite3
    Ubuntu 22.04 安装 Docker Engine
    杰理强制升级工具4.0使用和原理解析
    C++基础知识要点--变量和基本类型
    腾讯云GPU云服务器使用Docker 安装 TensorFlow 并设置 GPU/CPU 支持!
    【机器学习】《机器学习建模基础》笔记
    彻底搞懂Spring的循环依赖
    基于java的创意项目众筹平台的设计与开发计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
  • 原文地址:https://blog.csdn.net/band_mmbx/article/details/126364972