Nacos-Controller 2.0:使用 Nacos 高效管理你的 K8s 配置

news2025/4/16 14:49:14

作者:濯光、翼严

Kubernetes 配置管理的局限

目前,在 Kubernetes 集群中,配置管理主要通过 ConfigMap 和 Secret 来实现。这两种资源允许用户将配置信息通过环境变量或者文件等方式,注入到 Pod 中。尽管 Kubernetes 提供了这些强大的工具,但在实际应用中仍存在一些挑战:

1. 历史版本管理缺失:Kubernetes 中的 ConfigMap 和 Secret 本身并不直接支持历史版本管理,更新后旧版本的配置将被覆盖,且无法直接恢复到之前的版本。如果配置更新后出现问题,无法快速回滚到之前的版本,可能导致系统不稳定或服务中断,也不利于故障排查和合规性审计。

2. 缺乏动态性:Kubernetes 原生的配置管理机制不支持实时推送配置变更,这意味着更改后的配置不会立即在应用中生效,除非重启 Pod,这导致系统的响应速度慢,灵活性差。

3. 没有灰度能力:Kubernetes 原生的配置管理机制(如 ConfigMap 和 Secret)不直接支持灰度发布。配置变更通常需要手动更新,并且会立即应用到所有相关的 Pod。

4. 安全性问题:虽然 Secret 可以用来存储敏感信息,但其安全性和访问控制仍有待加强。

Nacos 配置管理的优势

Nacos(Dynamic Naming and Configuration Service)是一个动态服务发现、配置管理和服务管理平台。它旨在帮助开发者更容易地构建云原生应用,提供了一套简单易用的特性来简化微服务架构中的服务发现、配置管理和服务管理。Nacos 在配置管理方面提供了许多高阶的管理功能,能够有效解决上述问题:

  • 历史版本管理: Nacos 支持配置的历史版本管理,您可以轻松查看和恢复到之前的配置版本。这使得回滚配置变得更加简单和可靠。
  • 统一配置管理: Nacos 提供了一个集中式的配置管理中心,可以将所有环境下的配置信息统一管理,简化了配置管理流程。通过一个直观的 Web 界面,用户可以轻松查看、编辑和管理配置
  • 动态配置更新: Nacos 支持实时推送配置变更,无需重启 Pod 即可使新的配置生效,大大提升了系统的灵活性和响应速度。
  • 灰度发布支持: Nacos 支持配置灰度发布功能,可以针对特定的服务实例或环境推送配置变更。通过 Nacos 的灰度发布功能,可以在部分实例上测试新的配置,确保其稳定后再逐步推广到所有实例。
  • 敏感信息安全存储: Nacos 提供了多层次的安全机制,包括配置加密、安全传输等,确保敏感信息的安全性。
  • 丰富的多语言支持: Nacos 提供了丰富的多语言支持,涵盖了 Java\Go\Python 无论您的微服务架构基于何种技术栈,只要它们能够接入 Nacos,就可以享受到一致性的配置管理体验。

最近,伴随着 Nacos 3.0-Beta 版本的发布,Nacos 社区发布了 Nacos-Controller 2.0 版本,它可以帮助同步 K8s 的 Service 到 Nacos,同时也支持 K8s 的 Configmap、Secret 与 Nacos 配置的双向同步。基于 Nacos-Controller 2.0,可以实现 Nacos 一键托管 K8s 配置,使用 Nacos 赋能 K8s 配置管理。接下来就让我们来看看如何使用 Nacos 来管理 K8s 配置吧。

使用 Nacos-Controller 一键托管 K8s 配置

Nacos Controller 2.0 支持 Kubernetes 集群配置和 Nacos 配置的双向同步,支持将 Kubernetes 集群特定命名空间下的 ConfigMap 以及 Secret 同步到 Nacos 指定命名空间下中。用户可以通过 Nacos 实现对于 Kubernetes 集群配置的动态修改和管理。Nacos 配置和 Kubernetes 配置的映射关系如下表所示:

ConfigMap/SecretNacos Config
Namespace用户指定的命名空间
NameGroup
KeyDataId
ValueContent

目前主要支持两种配置同步的策略:

  • 全量同步:Kubernetes 集群特定命名空间下的所有 ConfigMap 以及 Secret 自动同步至 Nacos,Nacos Controller 会自动同步所有新建的 ConfigMap 和 Secret
  • 部分同步:只同步用户指定的 ConfigMap 和 Secret 至 Nacos

部署 Nacos Controller

  1. 安装 helm,参考文档【1】

  2. 安装 Nacos Controller 到对应的 kubernetes 集群中

git clone https://github.com/nacos-group/nacos-controller.git
cd nacos-controller/charts/nacos-controller

export KUBECONFIG=/你的K8s集群/访问凭证/文件路径
kubectl create ns nacos
helm install -n nacos nacos-controller .

快速开始

通过以下的命令,你可以快速将 kubernetes 集群中当前命名空间的配置全量同步到 Nacos 中。

cd nacos-controller
chmod +x configQuicStart.sh 

./configQuicStart.sh <nacos-addr> <nacos-namespace-id>

除此之外,你还可以参照以下说明:根据自己的需要编写 DynamicConfiguration yaml 文件,并部署到 K8s 集群中。

K8s 集群命名空间配置全量同步 Nacos

  1. 编写 DynamicConfiguration yaml 文件:
apiVersion: nacos.io/v1
kind: DynamicConfiguration
metadata:
   name: dc-demo
spec:
   nacosServer:
      # endpoint: nacos地址服务器,与serverAddr互斥,优先级高于serverAddr,与serverAddr二选一即可
      endpoint: <your-nacos-server-endpoint>
      # serverAddr: nacos地址,与endpoint二选一即可
      serverAddr: <your-nacos-server-addr>
      # namespace: 用户指定的命名空间
      namespace: <your-nacos-namespace-id>
      # authRef: 引用存放Nacos 客户端鉴权信息的Secret,支持用户名/密码 和 AK/SK, Nacos服务端未开启鉴权可忽略
      authRef:
         apiVersion: v1
         kind: Secret
         name: nacos-auth
   strategy:
      # scope: 同步策略,full 表示全量同步,partial 表示部分同步
      scope: full
      # 是否同步配置删除操作
      syncDeletion: true
      # conflictPolicy: 同步冲突策略,preferCluster 表示初次同步内容冲突时以Kubernetes集群配置为准,preferServer 表示以Nacos配置为准
      conflictPolicy: preferCluster
---
apiVersion: v1
kind: Secret
metadata:
    name: nacos-auth
data:
    #阿里云Mse Nacos采用AK SK进行鉴权
    accessKey: <base64 ak>
    secretKey: <base64 sk>
    #开源Nacos采用用户名密码进行鉴权
    username: <base64 your-nacos-username>
    password: <base64 your-nacos-password>
  1. 执行命令部署 DynamicConfiguration 到需要全量同步的 Kubernetes 集群命名空间下, 即可实现配置的全量同步
kubectl apply -f dc-demo.yaml -n <namespace>

K8s 集群命名空间配置部分同步 Nacos

  1. 编写 DynamicConfiguration yaml 文件,和全量同步的区别主要在于 strategy 部分,并且要指定需要同步的 ConfigMap 和 Secret:
apiVersion: nacos.io/v1
kind: DynamicConfiguration
metadata:
   name: dc-demo
spec:
   nacosServer:
      # endpoint: nacos地址服务器,与serverAddr互斥,优先级高于serverAddr,与serverAddr二选一即可
      endpoint: <your-nacos-server-endpoint>
      # serverAddr: nacos地址,与endpoint二选一即可
      serverAddr: <your-nacos-server-addr>
      # namespace: 用户指定的命名空间
      namespace: <your-nacos-namespace-id>
      # authRef: 引用存放Nacos 客户端鉴权信息的Secret,支持用户名/密码 和 AK/SK, Nacos服务端未开启鉴权可忽略
      authRef:
         apiVersion: v1
         kind: Secret
         name: nacos-auth
   strategy:
      # scope: 同步策略,full 表示全量同步,partial 表示部分同步
      scope: partial
      # 是否同步配置删除操作
      syncDeletion: true
      # conflictPolicy: 同步冲突策略,preferCluster 表示初次同步内容冲突时以Kubernetes集群配置为准,preferServer 表示以Nacos配置为准
      conflictPolicy: preferCluster
   # 需要同步的ConfigMap和Secret
   objectRefs:
      - apiVersion: v1
        kind: ConfigMap
        name: nacos-config-cm
      - apiVersion: v1
        kind: Secret
        name: nacos-config-secret
---
apiVersion: v1
kind: Secret
metadata:
    name: nacos-auth
data:
    accessKey: <base64 ak>
    secretKey: <base64 sk>
    username: <base64 your-nacos-username>
    password: <base64 your-nacos-password>
  1. 执行命令部署 DynamicConfiguration 到需要同步的 Kubernetes 集群命名空间下,即可实现配置的部分同步
kubectl apply -f dc-demo.yaml -n <namespace>

通过以上的步骤,Nacos Controller 就会根据我们提供的 DynamicConfiguration 配置信息,自动实现 K8s 集群配置和 Nacos 配置之间的全量同步或者部分同步,让我们来看看具体效果吧!

效果演示

以全量同步为例,在完成 Nacos-controller 的部署后,我们执行以下命令,查看当前 K8s 集群中默认命名空间下的 ConfigMap:

% kubectl get configmap
NAME               DATA   AGE
kube-root-ca.crt   1      63m

可以发现当前只有 kube-root-ca.crt 一个配置。

编写 DynamicConfiguration yaml 文件,选择全量同步模式,并执行命令部署:

apiVersion: nacos.io/v1
kind: DynamicConfiguration
metadata:
    name: dc-demo
spec:
  nacosServer:
    endpoint: nacos-serverAddr
    serverAddr: nacos-serverAddr
    namespace: xxxxxxxxxxxxxxxxx #选择要同步到的nacos命名空间
  strategy:
    scope: full
    syncDeletion: true
    conflictPolicy: preferCluster
kubectl apply -f dc-demo.yaml

查看对应的 Nacos 控制台:

可以发现对应的命名空间下面已经多了一条分组为 configmap.kube-root-ca.crt,dataId 为 ca.crt 的 Nacos 配置,对应的 K8s 配置已经同步到了 Nacos 中。

此时我们通过 kubectl 命令在 K8s 中再创建一个 ConfigMap:

apiVersion: v1
kind: ConfigMap
metadata:
    name: testconfig
    namespace: default
data:
    test.properties: "Hello, World"
kubectl apply -f test.yaml

查看 Nacos 控制台,可以发现命名空间下已经也多了一条对应的 Nacos 配置,dataId 为 ConfigMap 中的 Key,分组为 ConfigMap的Name:

在 Nacos 控制台上编辑对应的配置内容并发布:

通过 kubectl 查看对应的 ConfigMap 内容:

kubectl describe configmap testconfig

Name:         testconfig
Namespace:    default
Labels:       <none>
Annotations:  <none>

Data
====
test.properties:
----
Hi, World


BinaryData
====

Events:  <none>

可以发现对应的配置内容产生了更改,Nacos 上对于配置内容的变更同步到了 K8s 集群中。

同时,通过 Nacos 的历史版本功能,还可以对历史变更操作进行溯源定位,比较每个版本之间的内容差异,并在故障发生时及时回滚:

通过 Nacos-Controller 将 K8s 集群配置托管至 Nacos,用户可以使用 Nacos 控制台对 K8s 配置进行白屏化管理,避免使用 kubectl 进行的黑屏操作。同时,在 Nacos 上可以对不同环境的配置(开发、线上、测试)进行统一的管理,历史版本功能也能帮助用户进行审计、溯源和恢复。目前,Nacos-Controller 2.0 已经和 Nacos 3.0-BETA 版本同步发布,快来体验下吧。

接入 Nacos 高阶配置管理能力

Nacos-Controller 2.0 支持将 K8s 集群配置托管至 Nacos 进行双向同步,让 K8s 配置拥有了历史版本,白屏化操作以及配置集中化管理等能力。

而如果你希望能够更加高效的对应用配置进行管理,对配置管理还有以下的更高的要求:

  • 动态配置生效: 配置的更改能够直接在应用中生效,无需重启。
  • 配置灰度发布: 配置更新上线时,先在小部分节点进行灰度验证,确认无风险后再全量推送。
  • 敏感配置安全存储: 我的配置中存储了密钥等敏感机密的信息,要保证这些信息不会泄露。
  • 配置监听查询: 我希望直观的了解有哪些节点在使用这份配置。

那我们建议你采用第二种方式:在应用中接入 Nacos sdk,即可轻松享受 Nacos 提供的以上高阶配置管理能力:

配置灰度

Nacos 支持基于 IP 的灰度发布:

正式节点监听到的内容:

receive:Hi, World

IP=192.168.255.254 的灰度节点监听到的内容:

receive:Hi, World Gray

阿里云企业版 Mse Nacos 还额外提供了更强大的多版本标签灰度的能力,欢迎了解。

配置监听查询

在 Nacos 控制台上可以轻松查看有哪些客户端监听了对应的配置

敏感信息安全传输和存储

如果敏感信息以明文形式存储或传输,容易成为黑客攻击的目标,导致数据泄露或系统被滥用。这些信息一旦泄露,可能对用户隐私、企业安全和系统稳定性造成严重影响。Nacos 配置中心支持配置加密功能,并支持 TLS 传输加密,建设了完善的零信任安全体系,可以对存放在 Nacos 上的敏感信息从存储到传输的全链路加密,大大提高安全性:

MSE Nacos 更进一步,和阿里云秘钥管理服务 KMS 合作,支持对配置进行安全等级更高的非对称加密。针对数据安全隐患,MSE Nacos 可为敏感配置提供满足国家三级等保中数据安全要求的解决方案。

应用接入 Nacos SDK

以 Java 为例,当用户没有接入 Nacos,直接通过环境变量或者文件方式去 K8s 配置变化时,一般采用轮训的方式:

String ENV_VARIABLE_NAME = "YOUR_ENV_VARIABLE_NAME"; // 替换为您的环境变量名称
String lastValue = System.getenv(ENV_VARIABLE_NAME);
ScheduledExecutorService executorService = Executors.newScheduledThreadPool(1);

// 每5秒检查一次环境变量的变化
executorService.scheduleAtFixedRate(() -> {
    String currentValue = System.getenv(ENV_VARIABLE_NAME);
    if (currentValue != null && !currentValue.equals(lastValue)) {
        System.out.println("环境变量 " + ENV_VARIABLE_NAME + " 发生变化: 从 " + lastValue + " 变为 " + currentValue);
        lastValue = currentValue;
    }
}, 0, 5, TimeUnit.SECONDS);

而只修改几行代码,就可以接入 Nacos Java sdk,享受到 Nacos 配置管理的高阶功能:

String serverAddr = "{serverAddr}";
String dataId = "{dataId}";
String group = "{group}";
Properties properties = new Properties();
# 指定Nacos的地址
properties.put("serverAddr", serverAddr);
ConfigService configService = NacosFactory.createConfigService(properties);
# 查询Nacos的配置
String content = configService.getConfig(dataId, group, 5000);
# 监听Nacos的配置
configService.addListener(dataId, group, new Listener() {
    @Override
    public void receiveConfigInfo(String configInfo) {
        System.out.println("recieve1:" + configInfo);
    }
    @Override
    public Executor getExecutor() {
        return null;
    }
});

而除了 Java 之外,Nacos 还提供了丰富的多语言支持,覆盖了 Go/Python 等热门编程语言,对应的开源社区也非常活跃,无论您的应用使用的是以上什么类型的编程语言,都可以采用类似的方式轻松接入,享受到 Nacos 高阶的配置管理能力。

结语

无论是使用 Nacos-Controller 实现配置的双向同步,还是直接在应用中接入 Nacos SDK 以获得更高级的配置管理特性,都能显著提升配置管理的灵活性、安全性和可维护性。使用 Nacos,您能够更好地管理和优化您的应用配置,从而提高系统的稳定性和可靠性。此外,Nacos-Controller 2.0 还支持 Nacos 服务和 K8S Service 的同步。近期,Nacos 3.0-BETA 版本也已经重磅发布,在安全性方面显著提升,同时增加了分布式锁,模糊订阅等新特性,欢迎各位体验使用。

安装 helm,参考文档https://helm.sh/docs/intro/install/

相关链接

[1] Nacos 官网

https://nacos.io

[2] Nacos Github 主仓库

https://github.com/alibaba/nacos

[3] 生态组仓库

https://github.com/nacos-group

[4] MSE 配置灰度发布

https://help.aliyun.com/zh/mse/user-guide/configure-canary-release

Nacos 多语言生态仓库:

[1] Nacos-GO-SDK

https://github.com/nacos-group/nacos-sdk-go

[2] Nacos-Python-SDK

https://github.com/nacos-group/nacos-sdk-python

[3] Nacos-Rust-SDK

https://github.com/nacos-group/nacos-sdk-rust

[4] Nacos C# SDK

https://github.com/nacos-group/nacos-sdk-csharp

[5] Nacos C++ SDK

https://github.com/nacos-group/nacos-sdk-cpp

[6] Nacos PHP-SDK

https://github.com/nacos-group/nacos-sdk-php

[7] Rust Nacos Server

https://github.com/nacos-group/r-nacos

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2336028.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【BUG】Redis RDB快照持久化及写操作禁止问题排查与解决

1 问题描述 在使用Redis 的过程中&#xff0c;遇到如下报错&#xff0c;错误信息是 “MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk...”&#xff0c;记录下问题排查过程。 2 问题排查与解决 该错误提示表明&#…

java分页实例

引言 在现代Web应用和移动应用中&#xff0c;面对大量数据的展示&#xff0c;分页技术成为了提升用户体验和优化数据加载效率的关键手段。尤其是在MySQL数据库环境中&#xff0c;合理运用分页查询不仅能显著减少服务器负载&#xff0c;还能提升数据访问速度&#xff0c;为用户提…

【Linux篇】ELF文件及其加载与动态链接机制

ELF文件及其加载与动态链接机制 一. EFL文件1.1 ELF文件结构二. ELF文件形成与加载2.1 ELF形成可执行2.2 ELF控制性文件的加载2.2.1总结 三. ELF加载与进程地址空间3.1 动态链接与动态库加载3.1.1 进程如何看到动态库 3.2 全局偏移量表GOT(global offset table&#xff09;3.2.…

经典算法 判断一个图中是否有环

判断一个图中是否有环 问题描述 给一个以0 0结尾的整数对列表&#xff0c;除0 0外的每两个整数表示一条连接了这两个节点的边。假设节点编号不超过100000大于0。你只要判断由这些节点和边构成的图中是否存在环。存在输出YES&#xff0c;不存在输出NO。 输入样例1 6 8 5 3 …

AI与深度伪造技术:如何识别和防范AI生成的假视频和假音频?

引言&#xff1a;深度伪造的崛起 近年来&#xff0c;人工智能技术迅猛发展&#xff0c;其中深度伪造&#xff08;Deepfake&#xff09; 技术尤为引人注目。这项技术利用深度学习和神经网络&#xff0c;可以轻松生成高度逼真的假视频和假音频&#xff0c;使人物的面部表情、语音…

ESP32驱动读取ADXL345三轴加速度传感器实时数据

ESP32读取ADXL345三轴加速度传感器实时数据 ADXL345三轴加速度传感器简介ADXL345模块原理图与引脚说明ESP32读取ADXL345程序实验结果 ADXL345三轴加速度传感器简介 ADXL345是一款由Analog Devices公司推出的三轴数字加速度计&#xff0c;分辨率高(13位)&#xff0c;测量范围达…

【Linux】系统入门

【Linux】系统初识 起源开源 闭源版本内核内核编号 Linux的安装双系统(不推荐)WindowsLinuxvmware虚拟机vitualbox操作系统的镜像centos 7/ubuntu云服务器租用 Linux的操作lsmkdir 文件名pwdadduser userdel -rrm文件名cat /proc/cpuinfolinux支持编程vim code.c./a.out 运行程…

github配置ssh,全程CV

1)随便找一个文件夹右键进入git bash 2)验证是否已有公私钥文件 cd ~/.ssh ls如果不存在则生成然后获取 生成时一直回车 ssh-keygen -t rsa -C "xxxxxx.com" cd ~/.ssh cat id_rsa.pub如果存在则直接获取 cd ~/.ssh cat id_rsa.pub3&#xff09;复制 4&#xf…

Dify简介:从架构到部署与应用解析

Dify 是一个开源的生成式 AI 应用开发平台&#xff0c;融合了后端即服务&#xff08;Backend as a Service, BaaS&#xff09;和 LLMOps 的理念&#xff0c;旨在帮助开发者快速搭建生产级的生成式 AI 应用。本文将详细解析 Dify 的技术架构、部署流程以及实际应用场景&#xff…

碳化硅(SiC)功率模块方案对工商业储能变流器PCS市场格局的重构

碳化硅&#xff08;SiC&#xff09;模块方案&#xff08;如BMF240R12E2G3&#xff09;对工商业储能变流器PCS市场格局产生颠覆性的重构&#xff1a; 2025年&#xff0c;SiC模块方案&#xff08;如BMF240R12E2G3&#xff09;凭借效率、成本和政策支持的三重优势&#xff0c;将重…

Redis入门(Java中操作Redis)

目录 一 基础概念 1. Redis 核心特点 2. Redis 与 MySQL 的对比 3. Redis的开启与使用 二 Redis的常用数据类型 1 基础概念 2 数据结构的特点 三 Redis基础操作命令 1 字符串操作命令 2 哈希操作命令 3 列表操作命令 4 集合操作命令 5 有序集合操作命令 6 通用命令…

算法思想之位运算(一)

欢迎拜访&#xff1a;雾里看山-CSDN博客 本篇主题&#xff1a;算法思想之位运算(一) 发布时间&#xff1a;2025.4.12 隶属专栏&#xff1a;算法 目录 算法介绍六大基础位运算符常用模板总结 例题位1的个数题目链接题目描述算法思路代码实现 比特位计数题目链接题目描述算法思路…

【基于Servlet技术处理表单】

文章目录 一、实验背景与目的二、实验设计与实现思路1. 功能架构2. 核心代码实现3. 测试用例 总结 一、实验背景与目的 本次实验旨在深入理解Servlet工作原理&#xff0c;掌握JSP与Servlet的协同开发&#xff0c;实现前端表单与后端数据处理的交互。具体目标包括&#xff1a;设…

[OS] mmap | fd是什么 | inode机制 | vfs封装

Linux 下一切皆文件 * 统统抽象为文件&#xff0c;系统封装一层结构体之后&#xff0c;通过指针来访问 * 文章后面的 几个思考题都挺好的 * 后面涉及到的inode 机制&#xff0c;去年暑假的这篇文章&#xff0c;有详细的记录到过 【Linux】(26) 详解磁盘与文件系统&#xff1a;从…

STL详解 - vector的模拟实现

目录 一、整体设计 1.1 核心结构 1.2 迭代器实现 二、核心接口实现 2.1 构造函数系列 &#x1f334;默认构造 &#x1f334;迭代器范围构造 &#x1f334;元素填充构造 2.2 拷贝控制 &#x1f335;拷贝构造函数 &#x1f335;赋值运算符&#xff08;现代写法&#xf…

C++第三方库【JSON】nlohman/json

文章目录 优势使用API从文件中读取json从json文本创建json对象直接创建并操作json对象字符串 <> json对象文件流 <> json对象从迭代器读取像使用STL一样的访问STL容器转化为 json数组STL容器 转 json对象自定义类型转化为 json对象 限制 优势 直观的语法&#xff…

超细的ollama下载以及本地部署deepseek项目

Ollama 是一个开源的本地化大语言模型&#xff08;LLM&#xff09;运行和部署工具&#xff0c;专注于让开发者能够快速、高效地在本地运行和管理各种开源大语言模型&#xff08;如 LLaMA、Mistral、GPT 系列等&#xff09;。它提供了一个统一的接口&#xff0c;简化了模型下载、…

【Sequelize】关联模型和孤儿记录

一、关联模型的核心机制 1. 关联类型与组合规则 • 基础四类型&#xff1a; • hasOne&#xff1a;外键存储于目标模型&#xff08;如用户档案表存储用户ID&#xff09; • belongsTo&#xff1a;外键存储于源模型&#xff08;如订单表存储用户ID&#xff09; • hasMany&…

Sentinel实战教程:流量控制与Spring Boot集成

Sentinel实战教程:流量控制与Spring Boot集成 1. Sentinel简介与核心概念 1.1 什么是Sentinel? Sentinel是阿里巴巴开源的流量控制组件,主要用于微服务架构中的流量防护。它通过限流、熔断、热点防护等机制,帮助系统在高并发场景下保持稳定运行。 1.2 核心功能与术语 流…

循环神经网络 - 扩展到图结构之递归神经网络

本文我们来学习递归神经网络(Recursive Neural Network&#xff0c;RecNN)&#xff0c;其是循环神经网络在有向无循环图上的扩展 。 递归神经网络是一类专门设计来处理具有层次结构或树形结构的数据的神经网络模型。它与更常见的循环神经网络&#xff08;Recurrent Neural Net…