

SpringCloud Alibaba核心组件Nacos【服务多级存储模型&配置集群】第2章
source link: https://blog.51cto.com/u_15747763/5581944
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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集群

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集群

#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集群

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控制台可以看到集群变化:

查看一下详情:

Recommend
-
78
一:什么是微服务(Microservice) 微服务英文名称Microservice,Microservice架构模式就是将整个Web应用组织为一系列小的Web服务。这些小的Web服务可以独立地编译及部署,并通过各自暴露的API接口相互通讯。它们彼此相互协作,作为一个整体为用户提供功能,却可...
-
13
基于Element组件下动态生成多级表头以及数据 ...
-
14
SpringCloud Alibaba微服务实战二十三 - Feign 性能调优 ...
-
12
SpringCloud Alibaba微服务实战二十七 使用SpringCloud架构后我们希望所有的请求...
-
6
前面文章咱们对比过网关授权与微服务授权的区别,文章也提到了,如果要实现微服务授权,一般会构建一个独立的资源服务器配置模块,否则每个后端业务都需要进行资源服务器的配置,那本节内容我们就来完成此功能。 由于间隔时间...
-
5
SpringCloud Alibaba微服务实战三十二 大家好,我是飘渺Jam,一名来自三流城市三流公司的三流程序员,这是我们的第159篇原创文章,如果你喜欢请记得给我一个点赞与转发。 这篇文章来源于粉丝...
-
4
系列文章还在持续更新,如有喜欢的小伙伴可以关注微信公众号 三友的java日记 一、Ribbon的核心组件 1、Server 这是个很简单的东西,就是服务实例数据的封装,里面封装了服务实例的ip和端口之类的,一个服务有很多台机器,...
-
6
SpringCloud-Alibaba致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用服务的必需组件,方便开发者通过 Spring Cloud编程模型轻松使用这些组件来开发分布式应用服务。 依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将 S...
-
7
SpringCloud-Alibaba致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用服务的必需组件,方便开发者通过 Spring Cloud编程模型轻松使用这些组件来开发分布式应用服务。依托 Spring Cloud Alibaba,您只需要添加一些注解和少量配置,就可以将 Sp...
-
3
1. 效果:
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK