Nacos环境隔离

110 篇文章 1 订阅
104 篇文章 1 订阅

本篇主要记录Nacos环境隔离的知识以及Naocs与Eureka服务注册中心的区别。希望能加深自己的印象以及帮助到大家??

文章目录

Nacos环境隔离

通常,企业研发的流程是这样的:先在测试环境开发和测试功能,然后灰度,最后发布到产环境。并且,为了产环境的稳定,需要将测试环境和产环境进隔离,此时,必然会遇到问题是多环境问题,即:

多个环境的数据如何隔离?

如何优雅的隔离?(不需要户做任何改动)

本将就 Nacos 环境隔离,向家介绍阿在这的实践经验。

什么是环境?

说到环境隔离,先应该定义好什么是环境。

环境这个词前还没有个较统的定义,有些公司叫环境,在阿云上叫 region,在 Kubernetes 架构中叫 namespace。本认为,环境是逻辑上或物理上独的整套系统,这套系统中包含了处理户请求的全部组件,例如关、服务框架、微服务注册中、配置中、消息系统、缓存、数据库等,可以处理指定类别的请求。

举个例,很多站都会有户 ID 的概念,可以按照户 ID 划分,户 ID 以偶数结尾的请求全部由套系统处理,奇数结尾的请求由另套系统处理。如下图所。 我们这说的环境隔离是指物理隔离,即不同环境是指不同的机器集群。

环境隔离有什么

本节跟家讨论下环境隔离有哪些好处。从概念的定义可以看出,环境隔离少有三个的好处:故障隔离、故障恢复、灰度测试;

故障隔离

先,因为环境是能够处理户请求的独组件单元,也就是说户请求的处理链路有多长,都不会跳出指定的机器集群。即使这部分机器故障了,也只是会影响部分户,从把故障隔离在指定的范围内。如果我们按照户id把全部机器分为个环境,那么个环境出问题,对户的影响会降低为分之,提系统可性。

故障恢复

环境隔离的另个重要优势是可以快速恢复故障。当某个环境的服务出现问题之后,可以快速通过下发配置,改变户请求的路由向,把请求路由到另套环境,实现秒级故障恢复。当然,这需要个强的分布式系统持,尤其是个强的配置中(如Nacos),需要快速把路由规则配置数据推送到全的应进程。

灰度测试

灰度测试是研发流程中不可或缺的个环节。传统的研发流程中,测试和灰度环节,需要测试同学做各种各样的配置,如绑定host、配置jvm参数、环境变量等等,较烦。经过多年的实践,阿巴巴内部的测试和灰度对开发和测试常友好,通过环境隔离功能来保证请求在指定的机器集群处理,开发和测试不需要做任何做任何配置,提了研发效率。

Nacos提供了namespace来实现环境隔离功能。

  • nacos中可以有多个namespace
  • namespace下可以有group、service等
  • 不同namespace之间相互隔离,例如不同namespace的服务互相不可见

在这里插入图片描述

创建namespace

默认情况下,所有service、data、group都在同一个namespace,名为public:

在这里插入图片描述

我们可以点击页面新增按钮,添加一个namespace:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ii6ZyBTo-1656243628443)(assets/image-20210714000440143.png)]

然后,填写表单:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cj2kKxUd-1656243628443)(assets/image-20210714000505928.png)]

就能在页面看到一个新的namespace:

在这里插入图片描述

配置namespace

给微服务配置namespace只能通过修改配置来实现。

例如,修改order-service的application.yml文件:

spring:
  cloud:
    nacos:
      server-addr: localhost:8848
      discovery:
        cluster-name: HZ
        namespace: 492a7d5d-237b-46a1-a99a-fa8e98e4b0f9 

重启order-service后,访问控制台,可以看到下面的结果:

在这里插入图片描述
在这里插入图片描述

Nacos与Eureka的区别

Nacos的服务实例分为两种类型:

  • 临时实例:如果实例宕机超过一定时间,会从服务列表剔除,默认的类型。

  • 非临时实例:如果实例宕机,不会从服务列表剔除,也可以叫永久实例。

Nacos与eureka的共同点:
都支持服务注册和服务拉取
都支持服务提供者心跳方式做健康检测

Nacos与Eureka的不同点 :
Nacos支持服务端主动检测提供者状态:临时实例采用心跳模式,非临时实例采用主动检测模式
临时实例心跳不正常会被剔除,非临时实例则不会被剔除 Nacos支持服务列表变更的消息推送模式,服务列表更新更及时
Nacos集群默认采用AP方式,当集群中存在非临时实例时,采用CP模式;Eureka采用AP方式

本篇文章到这里就结束了,感谢各位小伙伴儿们的支持??

先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值