Hyperledger Fabric 2.5.4开发之生产部署篇
  iwbGD3gmtxyT 2023年11月02日 43 0

Hyperledger Fabric 2.5.4开发之生产部署篇_Fabric

简介

本文意在归纳部署生产环境中Fabric网络组件的正确顺序,此外还将提供部署时需要牢记的最佳实践和一些注意事项。

请注意,本文将仅从单个个体组织的角度讨论“搭建Fabric网络”作为一个整体过程。更有可能的是,现实世界中的Fabric生产网络不是由单个个体设置的,而是由几个个体(例如,一组银行各自设置自己的组件)共同完成的——因为Fabric是一个联盟区块链网络。

因此,部署Fabric网络的过程很复杂,需要了解:(1)公钥基础设施(PKI);(2)管理分布式系统。当然,如果读者是智能合约或应用程序开发人员,在部署生产级Fabric网络时不需要这两项专业知识(但是,了解还是非常必要的!)。此外,您可能还需要了解Fabric网络是如何部署的,以便开发出更为高效的智能合约和应用程序。

另外,如果您只需要一个开发环境来测试链码、智能合约和应用程序,那么只需要阅读官方文档“使用 Fabric 测试网络”即可。还需要说明的是,我们将介绍要部署的Fabric网络将包括两个组织,每个组织拥有一个Peer节点,还有一个拥有单个排序节点的单个排序服务组织。这个测试性质的网络并非旨在提供部署生产组件的蓝图,也不应如此使用,因为它做出了生产部署不会做出的假设和决定。

先总体说明一下,本文将向您概述设置生产组件和生产网络的如下关键步骤:

  • 第一步:确定您的网络配置
  • 第二步:为你的资源建立一个集群
  • 第三步:设置您的CA
  • 第四步:使用CA创建身份和MSP
  • 第五步:部署Peer节点和订单节点
  • 创建一个Peer节点
  • 创建排序节点

第一步:设计生产网络的网络配置¶

Fabric区块链网络的结构将由其所服务的具体场景决定。有太多的选择可以在每一点上给出明确的指导,但是不妨让我们考虑几个可能的场景。

与开发环境或概念验证相比,在生产中操作时,安全性、资源管理和高可用性成为优先考虑的事项:


  • 您需要多少个节点才能满足高可用性
  • 您希望在哪些数据中心部署这些节点以同时满足灾难恢复和数据驻留的需要?
  • 您将如何确保您的私钥和信任根保持安全?

除上述内容外,以下是部署组件之前需要做出的决策举例。

证书颁发机构配置

作为您必须做出的关于Peer节点(有多少,每个通道上有多少,等等)和排序服务(有多少节点,谁将拥有它们)的总体决策的一部分,您还必须决定如何部署组织的CA。生产网络应该使用传输层安全性(TLS),这将需要设置TLS CA并使用它来生成TLS证书。此TLS CA需要在您注册CA之前部署。我们将在第三步中对此进行详细讨论。

是否使用组织单位?

一些组织可能会发现有必要建立组织单位,以便在特定身份和由单个CA创建的MSP之间建立分离(例如,制造商可能希望一个组织单位用于其运输部门,另一个组织单位用于其质量控制部门)。请注意,这与“节点组织单位”的概念是分开的,在“节点组织单位”中,身份可以有角色编码(例如,“admin”或“peer”)。

Fabric网络中的组织单位(Organization Unit)是指参与区块链网络的实体,可以是企业、组织或个人,代表了区块链网络中的企业、机构等实体1

在Fabric中,一个组织单位可以拥有多个成员,这些成员可以是节点管理员、通道成员或系统中指定角色的所有者。组织单位通过共享的分布式账本来实现交互和合作主(Leader,也称“领导”)节点是Fabric网络中的重要角色,负责维护区块链的一致性和安全性。在Fabric中,主节点由组织内的一组特定节点组成,它们共同参与共识过程,并负责验证和提交交易。主节点选举是指在每个组织内选举出一组节点作为主节点,以确保网络的稳定运行和数据一致性。


Fabric网络中的节点根据其功能主要分为以下四种类型:

  • 客户端节点(Client Node)。客户端必须连接到某一个Peer节点或排序服务节点上才能与区块链网络进行通信。客户端向背书节点提交交易提案,当收集到足够背书后,向排序服务节点广播交易提案,进行排序,生成区块。
  • 普通节点(Peer Node)。是Fabric网络中的核心节点之一。根据所承担的角色又可以分为:(1)记账节点(Committer)、(2)背书节点(Endorser)、(3)主节点(Leader)和(4)锚节点(Anchor)。记账节点负责验证排序服务节点区块里的交易,维护状态和总账的副本。
  • 排序服务节点(Orderer Node)。负责保持系统区块链的一致性。
  • CA节点。负责证书的签发与撤销。

Q:Fabric网络中组织和组织单位是什么关系?

A:在Hyperledger Fabric网络中,组织(Organization)和组织单位(Organization Unit)是两个不同的概念。

组织是代表区块链网络中的企业、机构等实体,可以是一个组织、联盟或机构等。组织可以是Fabric网络中的成员,并拥有自己的成员身份和权限。组织可以创建和管理多个组织单位,并将这些组织单位加入到不同的通道中,以实现特定的业务需求和安全策略。

组织单位则是Fabric网络中的一种成员身份,代表着一个具体的实体或参与者,例如一个企业或机构下的一个部门等。组织单位可以被分配到一个或多个通道中,并具有相应的权限和访问控制。组织单位可以由组织创建和管理,也可以由网络管理员直接分配给相应的实体或参与者。

因此,组织与组织单位之间是包含关系,即一个组织可以包含多个组织单位,而一个组织单位只能属于一个组织。这种关系可以用于管理和控制网络的操作和访问权限,以及实现特定的业务逻辑和安全策略。

数据库类型

Fabric区块链网络中的一些通道可能需要以CouchDB(作为状态数据库)可以理解的方式对所有数据进行建模,而其他网络可能会优先考虑速度,决定所有Peer节点都将使用LevelDB。

请注意,通道上不应该同时使用CouchDB和LevelDB的Peer节点,因为CouchDB对键和值施加了一些数据限制。LevelDB中有效的键和值在CouchDB中可能无效。

是否创建系统通道?

在Fabric V2.2-版本中,排序节点可以使用被称为“系统通道”(可以从中创建应用程序通道)的管理通道的配置块进行引导,也可以根据需要简单地启动并加入应用程序通道。推荐的方法(也是V2.2+以后版本)是在没有配置块的情况下引导,这是本文部署假设您将采用的方法。

有关创建系统通道生成块并用它引导订购节点的更多信息,在新版本中已经过时。有兴致的朋友,请参阅官方Fabric v2.2文档中的部署生产网络

通道和私人数据问题

一些网络部署可能认为通道是确保某些交易的隐私和隔离的最佳方式。而还有其他一些网络部署可能会使用较少数量的通道,辅助以私人数据收集,这样可以更好地满足他们的隐私需求。

容器编排问题

不同的用户可能也会对其容器编排方案做出不同的决定,为其Peer节点进程、日志记录、CouchDB、gRPC通信和链代码创建单独的容器,而其他一些用户可能会决定组合使用这其中一些进程。

链码的部署方法

用户可以自行选择使用:(1)内置的生成和运行支持,这是一种使用外部生成器和启动器的自定义生成和运行方案,或使用:(2)作为外部服务的运行链代码来部署链代码。

防火墙方案

在生产部署中,属于一个组织的组件可能需要访问其他组织的组件,因此需要使用防火墙和高级网络配置。例如,使用Fabric SDK的应用程序需要访问来自所有组织的所有经批准的Peer节点以及所有通道的排序服务。类似地,Peer节点需要访问它们从中接收新块的信道上的排序服务。

然而,无论您的组件部署在哪里,您都需要在您选择的管理系统(如Kubernetes)方面拥有高度的专业知识,才能有效地运行网络。同样,网络的结构必须设计为适合商业使用场景以及网络将在其中发挥作用的行业政府的任何相关法律法规


第二步:为资源设置集群¶

一般来说,Fabric不知道用于部署和管理它的方法。例如,可以在笔记本电脑上部署和管理Peer节点设备。出于多种原因,这可能是不可取的,但Fabric文档中没有任何内容明确禁止这种方式。

其实,只要您能够部署容器,无论是在本地(或在防火墙后面)还是在云中,都应该可以建立组件并将它们相互连接。然而,Kubernetes提供了许多有用的工具,使其成为部署和管理Fabric网络的流行容器管理平台。有关Kubernetes的更多信息,请查看Kubernete文档。本文主要将其范围限制在二进制文件中,并提供在使用Docker部署或Kubernetes时可以应用的说明。

然而,无论您选择在哪里部署组件,都需要确保您有足够的资源使组件有效运行。您需要的大小在很大程度上取决于具体的使用场景。

如果您计划将一个Peer节点连接到多个高容量通道,则与只计划连接到单个通道相比,它将需要更多的CPU和内存。粗略估计,计划将大约三倍于您计划分配给单个排序节点的资源分配给Peer节点(建议在排序服务中至少部署三个节点,最好部署五个节点)。类似地,CA所需的资源应该是Peer节点CA所需资源的十分之一。您还需要将存储添加到集群中(某些云提供商可能提供存储),因为如果不首先使用云提供商设置存储,则无法配置持久卷和持久卷声明。持久存储的使用确保了MSP、分类账和已安装链代码等数据不会存储在容器文件系统中,从而防止在容器被销毁时被销毁。

通过部署概念验证网络并在负载下进行测试,您将更好地了解所需的资源。

实战中需要借助一些流行的压力测试工具进行测试,以验证生产网络的资源配置是否满足实际需求,并根据测试结果调整资源配置。很多云提供商都提供商业化的压力测试工具,例如阿里云的PTS(性能测试服务)或者腾讯的WeTest平台,也可以选择使用LoadRunner或者JMeter等压力测试工具。


性能测试工具LoadRunner和JMeter哪个更好用

1、LoadRunner是性能测试领域的王者,标准制定者; JMeter后起之秀,因其免费开源被众多人喜爱。

2、LoadRunner可以指定每个负载生成器运行不同数量的并发用户,而目前JMeter不行

3、LoadRunner 主要由C语言开发,支持Java、VB、C#; JMeter 是纯Java开发,支持多种Java脚本语言。

4、LoadRunner 拥有强大的录制功能,省事、效率高、门槛低,JMeter相对来说学习资料会少一些,而且也没有录制功能。

5、LoadRunner的结果分析器十分强大,JMeter 需要借助第三方插件的扩展才能有这方面的体验。

6、LoadRunner自带IP欺骗,Jmeter不支持IP欺骗。

7、Jmeter比较小巧不需要安装,LoadRunner安装包较大。

管理基础设施¶

您用于管理后端的确切方法和工具将取决于您选择的后端。然而,这里有一些值得注意的因素。

使用秘密对象在集群中安全地存储重要的配置文件

有关Kubernetes机密的信息,请查看Kubernetes secrets。您还可以选择使用硬件安全模块(HSM)或加密的永久卷(PV)。类似地,在部署Fabric组件后,您可能希望连接到自己后端的容器,例如在Docker Hub等服务中使用私有代码仓库。在这种情况下,您需要以Kubernetes机密的形式对登录信息进行编码,并在部署组件时将其包含在YAML文件中。

集群注意事项和节点大小

在上面介绍中,我们讨论了如何考虑节点大小的一般概述。其实,您的实际应用环境以及健壮的开发周期才是真正确定Peer节点、排序节点和CA需要多大容量的唯一途径。

如何选择装载卷

最佳做法是将与节点相关的卷装载到部署节点的外部。这将允许您稍后引用这些卷(例如,重新启动已崩溃的节点或容器),而无需重新部署或重新生成加密材料。

如何监控您的资源

至关重要的是,要制定一种策略和方法来监控各个节点使用的资源以及部署到集群中的资源。随着您把更多的Peer节点加入到通道中,您可能需要增加其CPU和内存分配。同样,你需要确保你有足够的存储空间来存放你的状态数据库和区块链。


第三步:设置CA

Q:Fabric网络中一个节点最多拥有多少个CA证书?

A:在Hyperledger Fabric网络中,一个节点可以拥有多个CA证书,但并没有明确规定一个节点可以拥有多少个CA证书的上限。CA证书的数量通常取决于具体业务需求和网络架构。

在Fabric网络中,一个节点可以有以下类型的CA证书:

  • 登记证书(Enrollment Certificate):代表网络中的身份,一般长期有效。
  • 交易证书(Transaction Certificate):控制每个交易的权限,不同交易可以不同,实现匿名性,短期有效。
  • 通信证书(TLSCert):控制对网络层的接入访问,可以对远端实体身份进行校验,防止偷听。

对于一个节点来说,可以根据业务需求和安全策略来决定需要拥有多少个CA证书。例如,一个节点可能需要拥有多个交易证书来控制不同交易的权限,同时还需要拥有一个通信证书来保证网络通信的安全性。因此,一个节点可以拥有多个不同类型的CA证书,但具体数量取决于业务需求和网络架构。

Fabric网络中必须部署的第一个组件是CA。这是因为在部署节点本身之前,必须创建与节点相关的证书(不仅是节点本身的证书,还有标识谁可以管理节点的证书)。虽然不需要使用Fabric CA来创建这些证书,但Fabric CA也会创建正确定义组件和组织所需的MSP结构。如果用户选择使用Fabric CA以外的CA,则必须自己创建MSP文件夹。

根据CA的作用,可以将其他分为两种类型:

  • 一种CA(或多个,如果您使用的是中间CA,请参阅下面的中间CA)用于生成(通过一个称为“注册”的过程)组织管理员、该组织的MSP以及该组织拥有的任何节点的证书。此CA还将为任何其他用户生成证书。由于其在“注册”身份中的作用,此CA有时被称为“注册CA”或“ecert CA”。
  • 另一种CA生成用于在传输层安全性(TLS)上保护通信的证书。因此,此CA通常被称为“TLS CA”。这些TLS证书附加到操作中,作为防止“中间人”破坏的一种方式。请注意,TLS CA仅用于为节点颁发证书,并且可以在该活动完成后关闭。用户可以选择使用单向(仅限客户端)TLS和双向(服务器和客户端)TLS,后者也称为“双向TLS”。因为指定您的网络将使用TLS(建议使用)应该在部署“注册”CA之前决定(指定此CA配置的YAML文件有一个用于启用TLS的字段),所以您应该首先部署TLS CA,并在引导注册CA时使用其根证书。当连接到注册ca以注册用户和节点的身份时,结构ca客户端也将使用此TLS证书。

虽然与组织关联的所有非TLS证书都可以由单个“根”CA(即作为其自身信任根的CA)创建,但对于添加的安全性,组织可以决定使用证书由根CA(或最终返回根CA的另一个中间CA)创建的“中间”CA。因为根CA中的折衷会导致其整个信任域(管理员、节点和为其生成证书的任何CA的证书)崩溃,所以中间CA是限制根CA暴露的有用方法。是否选择使用中间CA将取决于您的用例需要。它们不是强制性的。请注意,对于那些已经实现了轻量级目录访问协议(LDAP)并且不想在现有基础结构中添加身份管理层的企业,也可以配置LDAP来管理结构网络上的身份。LDAP有效地预注册了目录的所有成员,并允许他们根据给定的条件进行注册。

  • Q:Fabric网络中组织与CA机构是什么关系?
  • A:在Hyperledger Fabric网络中,组织与CA机构是依赖关系。
  • Fabric网络中的每个组织都可以拥有一个或多个CA机构为其节点和用户颁发证书,以标识和验证其身份。这些CA机构可以是组织内部的,也可以是组织外部的。此外,Fabric网络中的每个节点也需要拥有一个或多个CA证书来标识其身份,并与其他节点进行通信和交互。这些CA证书由相应的CA机构颁发,并用于保证节点之间的通信安全和数据完整性。总之,在Fabric网络中,组织与CA机构之间存在依赖关系,组织需要CA机构为其节点和用户颁发证书,而节点也需要拥有相应的CA证书来标识其身份并与其他节点进行交互。

在生产网络中,建议每个组织至少部署一个CA用于登记,另一个用于TLS通信。例如,如果部署与同一个组织关联的三个Peer节点以及一个与排序组织B关联的一个排序节点的话,则至少需要四个CA。

请注意,用户通常只向登记CA注册和登记,而节点要向登记CA(节点将在尝试对其操作进行签名时获得用于识别它的签名证书)和TLS CA(它将在其中获得用于验证其通信的TLS证书)注册和登记。

Q:在Fabric网络中,register和enroll是不是相同意思?

A:在Hyperledger Fabric网络中,register和enroll的意思并不相同。

register的意思是:记录;登记;注册。在Fabric网络中,register操作一般指实体的ID、密码、类型等属性被注册到CA Server,并保存在Server的数据库中。

enroll的意思是:登记。在Fabric网络中,enroll操作通常指最终实体用注册过的ID、密码等属性进行证书申请,并从CA接收证书的过程。

有关如何设置组织CA和TLS CA并注册其管理员身份的示例,请参阅Fabric CA Deployment Guide。部署指南使用Fabric CA客户端来注册和注册设置CA时所需的标识。

关于部署生产环境CA的官方指导文档如下:

第四步:使用CA创建身份和MSP¶

创建CA后,您可以使用它们为与您的组织相关的标识和组件(由MSP表示)创建证书。对于每个组织,您至少需要:

  • 注册并注册管理员身份并创建MSP。创建将与组织关联的CA后,它可以用于首先注册用户,然后注册身份(生成网络上所有实体使用的证书对)。在第一步中,身份的用户名和密码由CA的管理员分配。还可以为身份指定属性和附属关系(例如,管理员角色,这是组织管理员所必需的)。注册身份后,可以使用用户名和密码进行注册。CA将为该身份生成两个证书——一个是网络其他成员已知的公共证书(也称为“signcert”或“public cert”),另一个是用于对该身份采取的操作进行签名的私钥(存储在keystore文件夹中)。CA还将生成一组名为“MSP”的文件夹,其中包含颁发证书的CA的公共证书和CA的信任根(这可能是也可能不是同一个CA)。该MSP可以被认为是定义与管理员身份相关联的组织。如果组织的管理员也是节点的管理员(这将是典型的),则必须在创建节点的本地MSP之前创建组织管理员身份,因为在创建本地MSP时必须使用节点管理员的证书。
  • 注册和注册节点标识。正如组织管理员身份被注册和注册一样,节点的身份必须同时向注册CA和TLS CA注册和注册(后者生成用于确保通信安全的证书)。在向注册CA注册节点时,不要赋予节点admin或user的角色,而是赋予节点peer或orderer的角色。与管理员一样,也可以分配此身份的属性和附属关系。节点的MSP结构被称为“本地MSP”,因为分配给标识的权限仅在本地(节点)级别相关。此MSP是在创建节点标识时创建的,并在引导节点时使用。

有关基于Fabric的区块链网络中的身份和权限的更多概念信息,请参阅官方文档身份和会员服务提供商(MSP)

有关如何使用CA注册和注册身份(包括示例命令)的更多信息,请参阅官方文档“向CA注册和登记身份


第五步:部署Peer节点和排序节点¶

一旦收集了所需的所有证书和MSP,就可以创建节点了。如上所述,有许多有效的方法来部署节点。

在部署任何节点之前,必须定制其配置文件。对于Peer节点来说,配置文件称为core.yaml,而用于排序节点的配置文件称为orderer.yaml

调整配置有三个主要选项:

  1. 编辑与二进制文件捆绑在一起的YAML文件。
  2. 部署时使用环境变量重写。
  3. 在CLI命令上指定标志。

选项1的优点是,无论何时关闭和恢复节点,都可以持久化更改。不利的一面是,当升级到新的二进制版本时,您将不得不将自定义的选项移植到新的YAML(升级到新版本时,应使用最新的YAML)。

注意:您可以使用所有大写字母、相关短语之间的下划线和前缀,从相关YAML文件中的参数推断环境变量。例如,core.yaml中名为peer.localMSPid的对等配置变量(它是对等配置部分中的localMSPid变量)将被呈现为名为core_peer_LOCALMPID的环境变量,而orderer.yaml配置文件的General部分中的订购服务环境变量General.LocalMSPID将被呈现为名为ORDER_General_LocalMSPID的环境变量。

创建Peer节点¶

如果你已经了Peer节点相关的关键概念,你应该对Peer节点在Fabric网络中扮演的角色以及他们与其他网络组件交互的性质有一个很好的了解。Peer节点组织由作为通道成员的组织所有(因此,这些组织有时被称为“对等组织”)。它们连接到排序服务和其他Peer节点,上面安装了智能合约,并且是存储账本的地方。

在创建Peer节点之前,了解这些角色非常重要,因为它们会影响您的定制和部署决策。要了解您需要做出的各种决策,可以参考官方文档Planning for a production peer

Peer节点的core.yaml文件中的配置值必须自定义或用环境变量重写。您可以在Hyperledger Fabric的sampleconfig目录中找到默认的core.yaml配置文件。该配置文件与Peer节点映像捆绑在一起,也包含在可下载的二进制文件中。有关如何下载production core.yaml以及Peer节点映像的信息,请参阅Deploy the peer

虽然默认的core.yaml中有很多参数,但您只需要自定义其中的一小部分。通常,如果不需要更改调整值,请保留默认值。

归纳起来,core.yaml中的参数包括:

  • 标识符(Identifiers):这些标识符不仅包括到相关本地MSP和传输层安全(TLS)证书的路径,还包括Peer节点的名称(称为“Peer节点ID”)和拥有该Peer节点的组织的MSP ID。
  • 地址和路径:因为Peer节点本身不是实体,而是与其他Peer节点和组件交互的,所以必须在配置中指定一系列地址。其中包括其他组件可以找到Peer节点本身的地址,以及可以找到链代码的地址(如果使用外部链代码)。同样,您需要指定您的分类账的位置(以及您的状态数据库类型)和外部构建器的路径(同样,如果您打算使用外部链代码)。其中包括操作和指标,允许您设置方法,通过配置端点来监控Peer节点设备的运行状况和性能。
  • Gossip协议:Fabric网络中的组件使用“gossip”协议相互通信。通过该协议,它们可以被发现服务发现,并相互传播块和私有数据。请注意,gossip通信是使用TLS保护的。

当您对Peer节点的配置方式、卷的装载方式以及后端配置感到满意时,您可以运行该命令来启动Peer节点(该命令将取决于后端配置)。

更多有关细节,请参考官方文档:

部署生产级Peer节点

  • 生产环境Peer节点部署规划
  • 生产环境Peer节点计划检查表
  • 部署Peer节点

创建排序节点¶

如果你已经阅读了排序服务的关键概念,你应该很清楚排序服务在网络中扮演的角色,以及它与其他网络组件交互的性质。排序服务负责将认可的交易“排序”成块,然后Peer节点验证并提交到他们的账本中。

在创建排序服务之前,了解这些角色非常重要,因为它会影响您的定制和部署决策。Peer节点和排序服务之间的主要区别在于:在生产网络中,多个排序节点协同工作,形成一个通道的“排序服务”(这些节点也称为“共识集”)。这创建了一系列需要在节点级别和集群级别做出的重要决策。其中一些集群决策不是在单独的排序节点orderer.yaml文件中做出的,而是在用于为应用程序通道生成创世区块的configtx.yaml文件。

排序节点的orderer.yaml文件中的配置值必须自定义或用环境变量重写。您可以在Hyperledger Fabric的sampleconfig目录中找到默认的orderer.yaml配置文件。

此配置文件与排序节点映像捆绑在一起,也包含在可下载的二进制文件中。

虽然默认orderer.yaml中有许多参数,但您只需要自定义其中的一小部分。通常,如果不需要更改调整值,请保留默认值。

orderer.yaml中的参数包括:

  • 标识符:这些标识符不仅包括到相关本地MSP和传输层安全性(TLS)证书的路径,还包括拥有排序节点的组织的MSP ID。
  • 地址和路径:因为排序节点与其他组件交互,所以必须在配置中指定一系列地址。其中包括其他组件可以找到排序节点本身的地址,以及操作和度量,允许您设置通过配置端点来监控排序节点的运行状况和性能的方法。

有关orderer.yaml及其特定参数的更多信息,请查看官方提供的生产环境排序节点的核对表。

更详细参考:

部署生产级排序节点

  • 排序服务计划
  • 生产环境中排序节点的检查表
  • 部署排序服务



接下来的步骤¶

区块链网络都是关于连接的,所以一旦你部署了节点,你显然会想把它们连接到其他节点!如果你有一个peer节点组织和一个peer节点,你会想把你的peer节点组织加入一个联盟,加入或创建一个通道。如果您有一个排序节点,您将希望将peer节点组织添加到您的联盟中。

连接节点和创建通道的部分过程将涉及修改策略以适应业务网络的用例。有关策略的详细信息,请查看官方文档“策略”。Fabric中的常见任务之一是编辑现有通道。有关该过程的教程,我们将在“更新通道配置”有关文章中作更详细介绍。

参考文献

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
iwbGD3gmtxyT