nacos 概念功能介绍

基本概念

Namespace:比较好理解,主要用于环境隔离,如dev、pro等,nacos中对应数据模型:
com.alibaba.nacos.console.model.Namespace;

Group:nacos注册中心中没有Group的数据模型,我觉得这是个逻辑概念,处于同一个Namespace下的服务还可以以Group进行隔离,可以在Namespace的基础上提供更小粒度的隔离;
Service:服务信息,可以对照具体的微服务(如帐号服务、订单服务)来理解,里面封装了集群列表,而集群又封装了实例列表,nacos中对应数据模型:com.alibaba.nacos.naming.core.Service;
Cluster:集群信息,每个服务可以部署多个集群(如多机房部署,一个机房就是一个集群),nacos中对应数据模型:com.alibaba.nacos.naming.core.Cluster;

Instance:具体的服务实例信息,如果单个账号服务实例,如果是单集群部署,就会对应一个实例列表,一个实例列表都处于一个Cluster中;如果是多集群部署,那么就会存在多个Cluster,每个Cluster都会存储这样一个实例列表。nacos中对应实例的数据模型:com.alibaba.nacos.naming.core.Instance;

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

服务发现

在这里插入图片描述

1)在每个服务启动时会向服务发现中心上报自己的网络位置。这样,在服务发现中心内部会形成一个服务注册表,服务注册表是服务发现的核心部分,是包含所有服务实例的网络地址的数据库。

2)服务发现客户端会定期从服务发现中心同步服务注册表,并缓存在客户端。

3)当需要对某服务进行请求时,服务实例通过该注册表,定位目标服务网络地址。若目标服务存在多个网络地址,则使用负载均衡算法从多个服务实例中选择出一个,然后发出请求。

总结一下,在微服务环境中,由于服务运行实例的网络地址是不断动态变化的,服务实例数量的动态变化,因此无法使用固定的配置文件来记录服务提供方的网络地址,必须使用动态的服务发现机制用于实现微服务间的相互感知。各服务实例会上报自己的网络地址,这样服务中心就形成了一个完整的服务注册表,各服务实例会通过服务发现中心来获取访问目标服务的网络地址,从而实现服务发现的机制

2 权重管理

先分析为何要用权重设置:
Nacos有同集群优先访问的负载均衡,不过呢,我们部署的时候啊,可能会存在这么一种情况,因为企业里服务器设备啊,会更新迭代,有一些机器呢,性能比较好,还有一些属于是祖传设备了,性能非常的差,可以说是老弱病残,这个时候呢,我们肯定是希望这些性能好的机器,它承担更多的用户请求,而那些性能差一点的,自然是承担少一点的请求,正所谓能者多劳嘛。但是我们目前看来,NacosRule做到的是集群优先,而后做随机,当用户请求来了以后,它可不管你是性格好的还是差,这个身强力壮的还是老弱病残拉过来就一顿造,那这个时候那些性能差的肯定就会出问题。那么我们该怎样去控制不同服务它的一个请求量呢?哎,Nacos,给我们提供了一个权重的配置,通过修改服务实力的权重,可以控制访问频率,权重越大,访问到的频率就越高,那我们就可以把性能好的机器全都设得大一点,性能差一些呢,设置的小一点。

在这里插入图片描述
权重设置为0时,该实例就不会被访问了,也就是说权重调整0时,它压根儿就不会被访问。

那设置权重为0有什么作用?
我们以前一个服务,我们想要对它做一个版本的升级,我们该怎么办?我们是不是要把它重启啊,但是你光天化日之下,你去重启个服务器,是不好的,因为用户都还在访问,你一重启别人就反应不了“哎,你这服务怎么挂了?”,就有问题了!对不对,所以说呢,我们是不能随便重启的。往往呀,每次版本升级都是搞得跟那个什么谍战片一样,要找一个月黑风高无人之夜是吧,然后等用户都下线儿了,我们偷偷的把服务停机,然后呢,去做版本的一个升级。但是你想看,如果现在有了这个权重,我可不可以这么做?我有多个服务器,8081、8082、8083各自部署,我先将8081这个服务的权重调成零。然后呢,大白天也没事儿啊,这个时候呢,渐渐的8081就不承担用户请求了,那这个时候我对它做停机,用户就不会有感知了,那么这个时候对8081停机完了以后,就可以去做一些这个版本的升级,升级完成以后我再重启,我给它权重先不着急调太大,先调小一点,调到零点多,0.01什么之类的,这个时候呢,我们放出少数用户进来做个测试,看看行不行,如果没什么问题,我们就可以逐渐扩大比例,一次升级,这个时候用户是无感知的,你可以做到平滑升级。非常优雅,那么这样呢,这种升级方式啊,其实就是比较比较顺滑这种方式了,你就不用去大半夜去加班的去搞了。所以呢,这是我们这个权重的一些作
实例的权重控制

  • Nacos控制台可以设置实例的权重值,0~1之间 同集群内的多个实例,权重越高被访问的频率越高
  • 权重设置为0侧完全不会被访问

3 打标管理

服务分类和组织:通过给服务实例打标签,可以将它们按照功能、业务类型或环境等进行分类和组织。例如,你可以给微服务实例打上"用户服务"、“支付服务”、"开发环境"等标签,方便在Nacos中对它们进行搜索、过滤和管理。

1 灰度发布和流量控制:你可以使用标签来控制服务实例的流量分发和灰度发布。例如,你可以为某个新版本的服务实例打上"灰度发布"标签,并将只有这些实例能够接收一部分流量,以便进行验证和测试。

综上所述,Nacos的在线编辑功能为用户提供了一种简化和加速配置管理的方式。通过实时生效、精确修改、版本控制和可视化界面等特性,用户可以更方便地修改和管理配置信息,提高了系统的灵活性和可维护性。:通过为服务实例打上标签,可以在系统出现故障或问题时,更容易地进行故障隔离和容错处理。例如,你可以给同一应用的不同实例打上不同的标签,然后在Nacos中进行故障排查时,可以根据标签来定位具体的实例并采取相应的措施。

3 环境管理:如果你的应用在多个环境中运行(例如开发、测试和生产环境),你可以使用标签来标识和管理不同环境中的服务实例。这样可以更容易地在不同环境之间切换和管理配置。

4 监控和报警:通过为服务实例打标签,可以更好地组织和管理监控指标和报警规则。你可以为特定类型的服务实例打上相应的标签,然后在监控系统中配置对应的监控指标和报警规则,以便更精确地监控和管理服务的健康状态。

这些只是标签功能的一些常见应用场景,实际上,标签功能非常灵活,你可以根据具体的需求和场景进行创新和扩展。

4 优雅上下线

在Nacos中,有几种方法可以实现服务的优雅上下线:

1 注册和注销服务实例:在将服务实例上线时,使用Nacos提供的API或SDK,将该实例注册到Nacos服务注册中心。注册后,其他服务和客户端可以通过Nacos进行发现和调用该服务。当需要将服务实例下线时,使用相应的API或SDK,将该实例从Nacos中注销,确保不再接收流量。

2 健康检查:为了确保只有健康的服务实例接收流量,可以实现健康检查机制。Nacos提供了健康检查的功能,可以定期向Nacos发送心跳,报告自己的健康状态。如果某个服务实例的健康状态异常或超时,Nacos会将其标记为不可用,停止将流量转发给该实例。

3 权重调整:当需要逐渐上线或下线服务实例时,可以通过调整实例的权重来实现平滑的过渡。Nacos允许为每个服务实例设置权重,权重越高,接收的流量越多。逐步增加或减少权重,可以实现服务实例的渐进性上线或下线,避免对系统稳定性和可用性产生冲击。

4 动态配置更新:在服务实例上线后,使用Nacos的动态配置功能来更新服务的配置信息,而无需重启实例。通过动态配置,可以灵活调整服务的行为和参数,包括连接超时时间、数据库连接池大小等。这样可以避免服务下线或重启,减少对用户的影响。

通过以上方法,可以在Nacos中实现服务的优雅上下线和管理,确保系统的稳定性、可用性和灵活性。具体的实施方法可以根据你的具体需求和架构进行调整和扩展。

5 在线编辑

以下是Nacos在线编辑的介绍和作用:
1 简化配置管理:Nacos的在线编辑功能提供了一个集中的位置,让用户可以方便地管理和修改配置信息,无需依赖其他编辑器或工具。通过直接在Nacos控制台中进行配置的编辑,用户可以更快速、更简便地修改配置,从而简化了配置管理的过程。

2 实时生效:在线编辑功能允许用户在修改配置后立即生效,无需重启应用程序或重新加载配置文件。这意味着用户可以即时查看和应用配置更改,节省了配置更新所需的时间,提高了系统的灵活性和响应能力。

3 精确修改:Nacos的在线编辑功能允许用户对配置进行精确的修改。用户可以针对特定的配置项或配置部分进行编辑,而无需修改整个配置文件。这使得配置的修改更加准确和可控,避免了不必要的配置更改和潜在的错误。

4 版本控制:Nacos的在线编辑功能与版本控制功能结合使用,可以帮助用户跟踪和管理配置的更改历史。每次对配置的编辑都可以被记录和保存,用户可以轻松地回溯到以前的版本,并进行比较和还原操作。这有助于确保配置的可追溯性和安全性。

5 可视化界面:Nacos的控制台提供了直观的可视化界面,用户可以通过图形化界面清晰地查看和编辑配置信息。这使得用户能够更容易地浏览和理解配置的结构和内容,提高了配置管理的效率和准确性。

综上所述,Nacos的在线编辑功能为用户提供了一种简化和加速配置管理的方式。通过实时生效、精确修改、版本控制和可视化界面等特性,用户可以更方便地修改和管理配置信息,提高了系统的灵活性和可维护性。

6 一键回滚

1 版本控制:Nacos通过记录每次配置更新的历史版本来实现版本控制。每当配置发生更改时,Nacos会为该配置生成一个新的版本号,并将新的配置内容存储在版本历史中。

2 存储机制:Nacos使用存储系统(如数据库)来保存配置的历史版本和相关元数据。每个配置的版本历史记录包含配置内容、版本号、修改时间等信息。

3 一键回滚操作:当用户选择进行一键回滚时,Nacos会根据用户指定的目标版本号,将对应版本的配置内容恢复到当前配置中。它会检索并加载目标版本的配置内容,并覆盖当前的配置信息。

4 配置更新通知:一键回滚操作完成后,Nacos会通知相关的应用程序,以便它们可以重新加载最新的配置内容。

通过版本控制和存储机制,Nacos能够管理和维护配置的历史版本,并通过一键回滚功能使得用户可以轻松地回滚到之前的配置状态。这为用户提供了灵活性和可靠性,使得配置管理更加可控和可靠。

7 灰度发布

**灰度发布(Gray Release)**是一种软件发布策略,用于逐步将新版本的软件或功能发布给一部分用户或实例,以便在真实环境中进行验证和测试。在灰度发布期间,只有一小部分用户或实例能够访问和使用新版本,而其他用户或实例仍然使用旧版本。

灰度发布的目的是降低发布风险和减少对整个系统的影响。通过逐步引入新版本,可以在真实环境中进行更全面的测试和验证,避免一次性将新版本应用于全部用户或实例可能引发的潜在问题。

7 推送轨迹

Nacos中的推送轨迹(Push Trace)是指在进行灰度发布时,记录配置变更的推送路径和相关信息的机制。推送轨迹的原理和作用如下:

原理:

1 配置变更:当进行配置变更时,Nacos会根据配置的灰度发布规则和策略,确定需要接收新配置的实例或用户。
2 推送通知:Nacos会通过实时推送的方式将新配置通知到目标实例或用户。推送通知可以基于长连接或短连接等方式实现。
3 推送轨迹记录:在配置变更的过程中,Nacos会记录每个实例或用户接收到的配置变更信息,包括配置的内容、推送时间等。这些记录构成了推送轨迹。

作用:

1 配置追踪:推送轨迹可以追踪每个实例或用户接收到的配置变更情况。通过查看推送轨迹,可以了解到每个实例或用户的配置状态,以及配置变更的时间和内容。
2 故障排查:如果某个实例或用户在灰度发布过程中出现了问题,推送轨迹可以提供历史记录,便于进行故障排查。可以通过对比不同实例或用户的推送轨迹,找出问题所在,并及时进行处理。
3 配置回滚:推送轨迹记录了每个实例或用户接收到的配置变更历史。如果需要回滚配置,可以根据推送轨迹找到之前的配置状态,并进行相应的回滚操作。
4 性能评估:通过推送轨迹可以评估不同配置对系统性能的影响。可以分析和比较不同配置的推送轨迹,了解它们对系统性能的影响程度,从而进行性能优化和调整。

推送轨迹的原理和作用帮助Nacos实现了对灰度发布过程的可追踪性和可控性,提供了灵活而可靠的配置管理和灰度发布机制。

7 路由规则

在Nacos中,路由规则是一种配置规则,用于定义服务请求的路由方式和规则。它可以根据不同的条件将请求路由到不同的服务实例或群组,从而实现对服务请求的灵活控制和管理。路由规则的原理和作用如下:

原理:

1 条件匹配:路由规则定义了一系列的条件,如请求路径、请求参数、请求头等。Nacos会根据这些条件对传入的请求进行匹配。

2 路由策略:一旦请求匹配了路由规则的条件,Nacos会根据配置的路由策略进行路由决策。常见的路由策略包括轮询、权重、哈希等。

3 路由目标:根据路由策略的决策结果,Nacos会将请求路由到指定的服务实例或群组,以处理该请求。路由目标可以是具体的实例,也可以是特定的群组。

作用:

1 动态路由:通过路由规则,可以实现服务请求的动态路由。根据不同的条件,将请求路由到不同的实例或群组。这使得服务能够根据需求实时调整路由策略,灵活适应不同的场景和业务需求。

2 负载均衡:路由规则可以用于负载均衡,将请求平均分配到多个服务实例上。常见的负载均衡策略包括轮询、权重、哈希等。通过路由规则的设置,可以实现对请求的合理分发,提高系统的性能和可靠性。

3 灰度发布:路由规则可以用于实现灰度发布,将部分请求路由到新版本的服务实例上,进行验证和测试。通过路由规则的灵活配置,可以控制灰度发布的范围和流量,减小发布风险,逐步验证新版本的稳定性和性能。

4 故障处理:路由规则可以根据实例的健康状态或性能指标,将请求路由到健康的实例上,避免向故障或性能较差的实例发送请求。这有助于提高系统的稳定性和可用性,减少对故障实例的依赖。

总之,Nacos的路由规则提供了对服务请求的灵活路由控制,使得服务能够根据条件和策略进行动态路由和负载均衡。它在灰度发布、故障处理和性能优化等方面具有重要作用。

7 限流规则

在Nacos中,限流规则用于控制服务的请求流量,防止系统过载和资源耗尽。限流规则的原理和作用如下:

原理:

1 流量监控:限流规则基于实时的流量监控数据。Nacos会收集和统计服务的请求流量情况,包括请求频率、并发数、响应时间等指标。

2 限流策略:根据限流规则定义的策略,Nacos会对流量监控数据进行判断和比较。常见的限流策略包括令牌桶算法、漏桶算法、固定窗口算法等。

3 限流处理:一旦请求的流量超过了限流规则的设定阈值,Nacos会对请求进行限制和处理。可以采取拒绝请求、延迟处理、排队等方式进行限流操作。

作用:

1 保护系统稳定:限流规则可以防止系统过载,确保系统在合理的负载范围内运行。通过限制请求流量,避免系统资源被过度占用,保护系统的稳定性和可靠性。

2 防止雪崩效应:限流规则可以防止由于某个服务故障或异常引起的连锁反应。通过控制请求流量,避免大量请求涌入故障服务,从而避免雪崩效应的发生。

3 保障公平性:限流规则可以对请求进行公平分配。通过限制每个请求的处理速率和并发数,确保每个请求都能得到适当的处理,避免少数请求占用过多资源。

4 资源优化:限流规则可以对资源进行合理利用和分配。通过限制请求的频率和并发数,减少资源的浪费和滥用,优化系统的性能和资源利用率。

限流规则在Nacos中起到了重要的作用,通过对请求流量进行控制和管理,保护系统的稳定性、可靠性和性能。它是实现服务治理和提高系统可用性的重要手段之一。

7 动态数据源

Nacos的动态数据源功能允许应用程序在运行时动态地获取和切换数据源,而无需停止或重启应用。动态数据源的原理和作用如下:

原理:

1 数据源配置:Nacos作为配置中心,可以存储和管理不同数据源的配置信息,包括数据库连接信息、认证凭证等。

2 数据源切换:应用程序通过与Nacos进行交互,获取数据源的配置信息。根据配置信息,应用程序能够动态地切换当前使用的数据源。

3 运行时生效:动态数据源的切换是在应用程序运行时生效的。一旦应用程序获取到新的数据源配置,它可以立即切换到新的数据源,而无需重启或停止应用。

作用:

1 多环境支持:动态数据源功能使应用程序能够在不同的环境中使用不同的数据源。通过在Nacos中配置不同环境的数据源信息,应用程序可以根据当前运行的环境动态选择合适的数据源,例如开发环境、测试环境和生产环境等。

2 故障切换:当某个数据源发生故障或不可用时,动态数据源允许应用程序切换到备用数据源,从而保证系统的可用性和稳定性。通过在Nacos中配置多个备用数据源,应用程序可以根据需要自动切换到可用的数据源。

3 动态扩展:动态数据源使应用程序能够动态地扩展数据源的数量和规模。通过在Nacos中添加新的数据源配置,应用程序可以动态地获取和切换到新的数据源,实现数据源的动态扩展和管理。

4 运维便利:动态数据源简化了数据源的管理和配置。通过将数据源的配置集中存储在Nacos中,可以集中管理和调整数据源的配置,而无需修改应用程序的代码或配置文件。

总之,Nacos的动态数据源功能为应用程序提供了灵活、可靠的数据源切换机制,使应用程序能够根据需要动态选择和切换数据源,适应不同环境和场景的需求。它简化了数据源的管理和配置,提高了系统的可用性和灵活性。

参考文档:
nacos 学习 1
参考文档 2
Nacos-服务实例的权重设置
nocas 官网

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值