-
各位亲爱的版主们,大家好!经过大家一个月的努力角逐,7月外部版主激励评比结果已出炉,数据公示如下,请查看!(在新标签页打开图片可查看清晰大图/见附件)·外部版主激励规则:点击了解更多转正礼/基础任务/额外任务(在线时长15小时+,主题帖15+,回帖30+,技术长文5+/原创技术干货1+,合集1+,有效回复问题求助帖10+,话题互动1+,完成这4项指标可获对应价值的代金券/实物礼品)请完成任务获得激励的版主,点击填写激励发放意愿统计问卷反馈截止时间:2025年8月17日,以便小编进行相应的激励发放。注:在线时长数据达标后,才会再去考察达标版主的三项任务完成情况;主题数+回帖数达标后,才会再去考察达标版主的技术长文数量情况。
-
友友们因为华为 USG 系列防火墙不支持传统意义上的堆叠(Stacking)技术,但咱们可以通过其他技术方案来替代一下,去实现高可用性和扩展性一、堆叠技术的定义与 USG 的局限性堆叠技术的核心特性:堆叠(如华为交换机的 iStack/CSS)是将多台物理设备虚拟化为一个逻辑设备,实现统一管理、跨设备链路聚合、冗余备份。其核心优势是简化网络拓扑、提升扩展性和可靠性。USG 设备的定位:USG 系列作为专业防火墙,设计上更注重安全功能的深度整合(如 IPS、VPN、反病毒等),而非网络层的扩展能力。其架构更倾向于单设备高性能或双机热备,而非多设备物理聚合。硬件限制:USG 设备(如 USG6000 系列)的主控板、交换网板等硬件设计未预留堆叠专用接口或协议支持,无法通过线缆直接连接多台设备形成堆叠系统。 二、USG 实现高可用性的替代方案尽管咱USG不支持堆叠,USG 提供了以下技术方案实现可靠性和扩展性:1. 双机热备(HRP)原理:两台 USG 设备组成主备集群,通过心跳线(如专用接口或业务接口)同步配置和会话状态。主设备故障时,备设备自动接管业务,实现毫秒级切换应用的场景:适用于园区网出口、数据中心边界等需要高可靠防护的场景。配置示例: hrp enable // 启用HRPhrp interface GigabitEthernet0/0/3 remote 192.168.1.1 // 指定心跳接口hrp track interface GigabitEthernet0/0/1 // 监测上行链路状态2. 虚拟系统(VSYS)原理:在单台 USG 设备上划分多个逻辑防火墙(虚拟系统),每个 VSYS 独立配置策略、路由和资源,实现多租户隔离或业务分区优势:硬件资源共享,降低成本。逻辑隔离提升安全性,适用于云计算中心、大型企业多部门场景。配置示例: vsys name finance // 创建虚拟系统assign interface GigabitEthernet0/0/1 // 分配接口3. VRRP 与负载分担VRRP(虚拟路由冗余协议):多台 USG 设备通过 VRRP 共享虚拟 IP 地址,实现网关冗余。流量根据优先级分配到主设备,故障时自动切换负载分担:结合 OSPF/BGP 路由协议,通过调整路由 Cost 值或等价路由,使多台 USG 设备同时分担流量,提升整体吞吐量三、USG替换方案和堆叠技术的对比一下下特性堆叠(交换机)USG 高可用性方案管理方式单台逻辑设备,统一配置多台独立设备或虚拟系统,需分别管理链路聚合跨设备 Eth-Trunk,带宽叠加单设备链路聚合,无跨设备能力配置同步自动同步,无需手动干预HRP 需手动配置同步策略适用场景核心层 / 汇聚层网络扩展安全防护、多业务隔离 四、注意哦USG6000 系列的限制:低端型号(如 USG6300)仅支持基本双机热备,高端型号(如 USG6650、USG12000)支持更复杂的 VRRP+VSYS 组合虚拟系统间通信需通过根系统中转,可能增加延迟。替代方案的选择建议:若需物理扩展(如端口数量、带宽),可选择华为 NE 系列路由器或 S 系列交换机堆叠。若需安全功能整合,USG 的双机热备 + VSYS 组合已能满足多数场景需求。总结一下下华为 USG 系列防火墙不支持传统堆叠技术,但其通过双机热备(HRP)、虚拟系统(VSYS)和VRRP 负载分担等方案,实现了高可用性、多租户隔离和流量分担。这些技术更贴合防火墙的安全功能定位,适用于需要深度防护的网络场景。若需物理扩展能力,建议结合华为交换机堆叠方案(如 S12700+CSS)构建混合网络架构。
-
1.背景说明随着越来越多的企业选择多云环境,如何有效地管理不同类型的云成为云管平台的必备能力:不同厂商的云使用方式不一样,企业IT人员需要熟悉每一种云的使用方法,学习成本随着云的数量增多而增加,多云管理平台要致力于屏蔽各种云的差异。不同厂商的云接口不一样,多云管理平台需要逐一对接每种云的接口,这实际上是一种确定性的重复劳动,如果多云管理平台每种云都以自有人力去实现,则需要消耗大量人力和时间,多云管理平台应支持通过合作伙伴来扩展多云对接的能力。不同厂商的云模型也有差异,多云管理平台需要适配多种模型,提供统一的监控视图,便于企业IT人员从单一视图就能监控所有云的运行情况。2.特性介绍ManageOne基于同一云服务接入规范,实现一朵云管理 2.1 云联邦华为云云联邦华为云通过联邦认证,把华为云Stack和华为公有云结成一个联邦体系,ManageOne的VDC用户既能访问华为云Stack,也能访问华为公有云,可以集成华为公有云基础服务、数据库服务、容器服务、大数据服务、EI服务(无需每个服务API进行对接),支持如下功能:统一权限管理、统一服务目录、统一组织管理、统一服务流程、统一配额、统一计量、统一资源中心、统一租户资源监控监控 2.2 云联邦HCS企业早期建设HCS资源池的时候,由于规划等原因,建设了多朵HCS;在使用高阶服务之后,希望统一建设高阶服务资源池,如大数据资源池集中建设(以大数据举例,其他高阶服务类似),发挥大数据规模效应的优势,不再分散建设,其他资源池要使用大数据时,统一到大数据资源池申请使用。常规做法是多云合一,使用工程方案,把多朵云合成一朵云,但是多云合一比较复杂,不同的HCS版本均需要ManageOne、云服务适配,工作量比较大;云联邦HCS可以低成本的方式实现跨HCS的资源共享。云联邦HCS支持跨HCS资源共享,VDC用户可以通过云联邦方式使用另一个HCS的云服务资源,以低成本的方式实现跨HCS的资源共享,支持统一服务目录、统一组织管理、统一服务流程、统一配额、统一计量、统一资源中心、统一租户资源监控。 2.3 异构纳管ManageOne提供多云适配框架,按照十统一接入规范,适配插件N2One开发三方云服务在ManageOne上的前台页面和适配程序后台,并调用第三方系统的API实现ManageOne统一运营运维管理三方云服务能力。
-
GaussDB 兼容 Activiti 5.14 需要从数据库兼容性配置、Activiti 配置调整、SQL 语法适配等方面入手,核心是让 Activiti 5.14 的数据库操作(表结构初始化、CRUD、事务等)能在 GaussDB 上正常运行。 一、前提:确认 GaussDB 的兼容性模式Activiti 5.14 原生支持 PostgreSQL、MySQL 等主流数据库,而 GaussDB(尤其是 GaussDB 100/200)通常兼容 PostgreSQL 协议和语法。建议把GaussDB 配置为PostgreSQL 兼容模式(默认可能已开启,可以去通过show server_version;确认兼容的 PostgreSQL 版本),为 Activiti 提供基础兼容性。 二、核心配置步骤1. 调整 Activiti 5.14 的数据库连接配置Activiti 通过activiti.cfg.xml(或 Spring 配置)指定数据库连接信息,需修改为 GaussDB 的连接参数: 替换 JDBC 驱动:使用 GaussDB 的 JDBC 驱动(如com.huawei.gauss200.jdbc.Driver,需根据 GaussDB 版本下载对应驱动包,放入项目依赖)。修改连接串:按 GaussDB 的 JDBC 格式配置(参考之前的连接串配置)。指定数据库类型:告知 Activiti 使用 PostgreSQL 的适配策略(因 GaussDB 兼容 PostgreSQL)。 修改一下activiti.cfg.xml文件 <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"> <!-- 数据库连接配置 --> <property name="jdbcUrl" value="jdbc:gaussdb://192.168.1.100:8000/activiti_db?currentSchema=activiti" /> <property name="jdbcDriver" value="com.huawei.gauss200.jdbc.Driver" /> <property name="jdbcUsername" value="username" /> <property name="jdbcPassword" value="password" /> <!-- 数据库类型:指定为postgresql(GaussDB兼容PostgreSQL) --> <property name="databaseType" value="postgresql" /> <!-- 初始化策略:自动创建表结构(首次运行时) --> <property name="databaseSchemaUpdate" value="true" /> <!-- 其他配置(如事务、连接池等) --> <property name="transactionManager" ref="transactionManager" /></bean> 2. 适配 Activiti 的表结构初始化语句Activiti 5.14 启动时会自动创建一系列表(如ACT_RE_PROCDEF、ACT_RU_EXECUTION等)自增主键:Activiti 对 PostgreSQL 使用SERIAL类型作为自增主键,GaussDB 兼容SERIAL(本质是integer+ 自增序列),通常无需修改;若出现问题,可替换为BIGSERIAL(对应bigint)。字符集与排序规则:GaussDB 默认字符集可能为UTF8,需确保与 Activiti 表的字符集一致,可在建表时指定ENCODING 'UTF8'。约束与索引:GaussDB 对某些约束(如外键、唯一索引)的语法可能略有差异,若初始化失败,需提取 Activiti 的建表脚本(可从activiti-engine-x.x.x.jar的org/activiti/db/create目录中找到postgresql脚本),手动修改后在 GaussDB 中执行。 比如:调整后的建表语句(我以 ACT_RE_DEPLOYMENT 为例): CREATE TABLE ACT_RE_DEPLOYMENT ( ID_ VARCHAR(64) NOT NULL, NAME_ VARCHAR(255), DEPLOY_TIME_ TIMESTAMP, PRIMARY KEY (ID_)) WITH (ORIENTATION = ROW, COMPRESSION = NO); -- GaussDB的表存储参数 3. 处理 SQL 语法与函数差异Activiti 5.14 的内部 SQL 操作可能依赖 PostgreSQL 的特定函数(如日期函数、字符串处理函数),若 GaussDB 存在兼容差异,需针对性修改: 日期函数:例如 PostgreSQL 的NOW()在 GaussDB 中可直接使用(兼容);若涉及DATE_PART等函数,GaussDB 通常也支持,无需修改。字符串函数:如SUBSTRING、CONCAT等函数在 GaussDB 中与 PostgreSQL 兼容,一般无需调整。分页语法:Activiti 使用LIMIT ? OFFSET ?进行分页,GaussDB 完全支持该语法,无需修改。 若出现特定 SQL 报错,可通过以下方式解决: 开启 Activiti 的 SQL 日志(<property name="jpaHandleTransaction" value="true" /> + 日志级别DEBUG),定位报错 SQL。自定义 Activiti 的SqlSession,替换兼容 GaussDB 的 SQL 语句(需继承org.activiti.engine.impl.db.DbSqlSession并重写对应方法)。4. 事务与连接池适配事务隔离级别:GaussDB 支持常见的事务隔离级别(如READ COMMITTED),与 Activiti 默认要求一致,无需额外配置。连接池配置:若使用 Druid、Hikari 等连接池,需确保连接池参数适配 GaussDB(如maxPoolSize、idleTimeout),避免连接超时或资源耗尽。 比如(Druid 连接池配置): <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"> <property name="url" value="jdbc:gaussdb://192.168.1.100:8000/activiti_db" /> <property name="driverClassName" value="com.huawei.gauss200.jdbc.Driver" /> <property name="username" value="username" /> <property name="password" value="password" /> <property name="maxActive" value="20" /> <property name="minIdle" value="5" /> <property name="validationQuery" value="SELECT 1" /> <!-- GaussDB支持的验证语句 --></bean> 三、测试和验证一下表结构初始化:启动 Activiti 引擎,检查是否成功创建所有表(共 23 张左右,前缀为ACT_)。流程部署:部署一个简单的 BPMN 流程,验证ACT_RE_PROCDEF、ACT_GE_BYTEARRAY等表是否正确插入数据。流程运行:启动流程实例,检查ACT_RU_EXECUTION、ACT_RU_TASK等运行时表是否正常记录数据,任务完成后是否正确更新到历史表(ACT_HI_*)。异常场景:模拟流程中断、并发操作,验证事务回滚和数据一致性是否正常。 四、常见的问题和一些简单的解决方法推荐问题 1:如果表创建失败,提示 “不支持的类型 SERIAL”解决:将建表语句中的SERIAL替换为BIGINT+ 手动创建序列(如CREATE SEQUENCE ACT_GE_PROPERTY_SEQ START WITH 1 INCREMENT BY 1),并在插入时使用nextval('序列名')。问题 2:如果SQL 报错 “函数 xxx 不存在”解决:确认 GaussDB 是否支持该函数,若不支持,修改 Activiti 的 SQL 脚本,替换为 GaussDB 兼容的函数(如用SUBSTR替代SUBSTRING,视具体情况而定)。问题 3:如果连接超时或频繁断开解决:调整 GaussDB 的idle_in_transaction_session_timeout参数,或在连接池配置中增加validationQuery定期验证连接。 总结一下下GaussDB 兼容 Activiti 5.14 的核心是利用其 PostgreSQL 兼容性,通过调整连接配置、适配表结构和 SQL 语法,确保 Activiti 的数据库操作在 GaussDB 上正常执行。实际操作中需结合具体报错信息逐步调试,重点关注表初始化、SQL 函数和事务处理三个环节。
-
1 .背景说明第三方系统调用HCS北向API,需要通过域名方式调用您可以参考本帖获取需要的账号、IP等信息 2.使用方法A、获取网关地址、端口号及域名1)获取网关IP:获取环境LLD(从华为Stack安装部署工具中导出的环境详情,联系华为工程师获取,如果存在多个region,则应有多个LLD导出表。)打开主region的LLD表,选择“2.1 工具生成的IP参数”页签,找到“AGW-LB-Float-IP”节点的规划值,即为API Gateway的IP。如下图,AGW-LB-Float-IP的值为160.133.4.130。选择“1.2基本参数”页签,找到“external_global_domain_name”节点的规划值。如下图,external_global_domain_name的值为manageone.cus.com。选择“1.2基本参数”页签,找到“region0_id”节点的规划值。如下图,region0_id的值为dg-dg-1。打开需要调用接口的系统的hosts文件(Windows路径为C:\Windows\System32\drivers\etc\hosts,linux路径为/etc/hosts),在其中添加如下内容。{AGW-LB-Float-IP} iam-apigateway-proxy.{external_global_domain_name}{AGW-LB-Float-IP} sc.{external_global_domain_name}{AGW-LB-Float-IP} oc.{region0_id}.{external_global_domain_name} #6.5.X版本为oc.{external_global_domain_name}{AGW-LB-Float-IP} vpc.{region0_id}.{external_global_domain_name}{AGW-LB-Float-IP} ecs.{region0_id}.{external_global_domain_name{AGW-LB-Float-IP} ims.{region0_id}.{external_global_domain_name}{AGW-LB-Float-IP} evs.{region0_id}.{external_global_domain_name}{AGW-LB-Float-IP} ccs.{region0_id}.{external_global_domain_name}我们上面获取到了AGW-LB-Float-IP的值为160.133.4.130,external_global_domain_name的值为manageone.cus.com,region0_id的值为dg-dg-1。将相应的值填入上面的模板中,得到hosts如下:160.133.4.130 iam-apigateway-proxy.manageone.cus.com160.133.4.130 sc.manageone.cus.com160.133.4.130 oc.dg-dg-1.manageone.cus.com #6.5.X版本为oc.manageone.cus.com160.133.4.130 vpc.dg-dg-1.manageone.cus.com160.133.4.130 ecs.dg-dg-1.manageone.cus.com160.133.4.130 ims.dg-dg-1.manageone.cus.com160.133.4.130 evs.dg-dg-1.manageone.cus.com160.133.4.130 ccs.dg-dg-1.manageone.cus.com(可选)如果存在从region,则需要打开从region的LLD文件,重复步骤2~5。配置好的hosts示例如下:160.133.5.170 vpc.xa-xa-1.manageone.cus.com160.133.5.170 ecs.xa-xa-1.manageone.cus.com160.133.5.170 ims.xa-xa-1.manageone.cus.com160.133.5.170 evs.xa-xa-1.manageone.cus.com160.133.5.170 ccs.xa-xa-1.manageone.cus.com(注:MangeOne仅部署在主region上,从region不包含ManageOne,配置的域名前缀无需再包含"iam-apigateway-proxy"、“sc”、"oc"。)B、网络打通要求如果现网中,第三方系统与华为云Stack 系统中间有防火墙隔离,需要做防火墙策略,则网络打通要求如下: 访问IP 被访问IP 被访问端口 访问诉求 备注 第三方系统 API Gateway浮动IP 443 单向,第三方系统-->API Gateway浮动IP 防火墙策略放通后,如果要确认是否成功,可通过telnet命令进行测试,如下(此处以80端口为例,请根据实际环境修改):C、获取对接账号进行正式对接前,需要获取对接账户,请联系华为现场工程师,获取一个ManageOne运营侧租户管理员(即一级VDC管理员)账号,且该租户的配额是不限的。获取到账号后,还需要获得该租户管理员所属租户的名称,以及该租户下一个project的Id或者名称,方法如下:使用租户管理员账号登录ManageOne运营侧(ManageOne运营侧的访问地址请联系现场华为工程师获取)点击右上角的用户图标,切换到“个人设置”页面,如下:8.3.1及以上版本,参考此链接创建用户:cid:link_0D、获取对接所需的SSL证书通常情况,调试接口可通过配置curl或postman忽略ssl证书验证,无需证书。在正式对接场景下需要配置SSL证书,获取证书的方法请参考此链接:cid:link_1由于不通编程语言、不同http客户端配置证书的方法均不相同,相关配置方法需用户自行查找,本文不再介绍。 附:服务、域名,文档关系说明注意:北向接口的域名与ManageOne页面使用的域名不相同,严禁使用“auth.xxx.xxx.xxx”等非标准方案的域名进行接口调用,非标方案无法确保升级兼容。更多云服务的域名请参考服务对应的API文档服务类型使用域名(样例)接口调用示例(样例)对应接口文档(以8.0.0接口文档为例)弹性云服务器(ECS)ecs.sa-fb-1.demo.comhttps://ecs.sa-fb-1.demo.com/v2/{tenant_id}/servers弹性云服务器(ECS) 8.x API参考(for 华为云Stack 8.x)裸金属服务(BMS)bms.sa-fb-1.demo.comhttps://bms.sa-fb-1.demo.com/v1/{project_id}/baremetalservers裸金属服务器(BMS) 8.x API参考(for 华为云Stack 8.x)镜像服务(IMS)ims.sa-fb-1.demo.comhttps://ims.sa-fb-1.demo.com/v2/images镜像服务(IMS) 8.x API参考(for 华为云Stack 8.x)弹性伸缩服务(AS)as.sa-fb-1.demo.comhttps://as.sa-fb-1.demo.com/autoscaling-api/v1/{tenant_id}/scaling_configuration弹性伸缩(AS) 8.x API参考(for 华为云Stack 8.x)云磁盘(EVS)evs.sa-fb-1.demo.comhttps://evs.sa-fb-1.demo.com/v2/{tenant_id}/volumes云硬盘(EVS) 8.x API参考 (for 华为云Stack 8.x)虚拟私有云(VPC)vpc.sa-fb-1.demo.comhttps://vpc.sa-fb-1.demo.com/v2.0/networks虚拟私有云(VPC) 8.x API参考(for 华为云Stack 8.x)弹性IP(EIP)eip.sa-fb-1.demo.comhttps://eip.sa-fb-1.demo.com/v2.0/floatingips弹性IP(EIP) 8.x API参考(for 华为云Stack 8.x)弹性负载均衡(ELB)vpc.sa-fb-1.demo.comhttps://vpc.sa-fb-1.demo.com/v2.0/lbaas/loadbalancers弹性负载均衡(ELB) 8.x API参考(for 华为云Stack 8.x)网络ACl(虚拟防火墙、VFW)acl.sa-fb-1.demo.comhttps://acl.sa-fb-1.demo.com/v2.0/fwaas/firewall_policies网络ACL(Network ACL) 8.x API参考(for 华为云Stack 8.x)身份认证服务(IAM)iam-apigateway-proxy.demo.comhttps://iam-apigateway-proxy.demo.com/v3/auth/tokensManageOne 8.x OTenantSecurity服务API参考运营管理服务(ManageOne运营面)sc.demo.comhttps://sc.demo.com/rest/vdc/v3.0/usersManageOne 8.x 运营面API参考云配置服务(CCS)ccs.sa-fb-1.demo.comhttps://ccs.sa-fb-1.demo.com/v1.0/resource-tags华为云Stack 8.x API接口参考-->公共组件-->CCS
-
Oracle 和 GaussDB 中的 VARCHAR2 类型在定义、存储机制和功能上存在显著差异 1. 长度定义与单位Oracle支持显式指定单位:BYTE(字节)或 CHAR(字符),例如 VARCHAR2(100 BYTE) 或 VARCHAR2(100 CHAR)。多字节字符集(如 UTF-8)下,CHAR 单位按字符数计算存储空间(例如 VARCHAR2(10 CHAR) 可存储 10 个中文字符)。最大长度:标准模式:4000 字节(受行大小限制)扩展模式(12c+):32767 字节(需开启参数 max_string_size=EXTENDED)。GaussDB仅支持 BYTE 单位:定义如 VARCHAR2(n) 时,n 固定为字节长度(例如 VARCHAR2(100) 表示 100 字节)。不支持 CHAR 单位,多字节字符需手动计算字节占用(如 UTF-8 中文字符需预留 3-4 字节)。 2. 最大容量限制Oracle受 MAX_STRING_SIZE 参数控制:STANDARD 模式:4000 字节EXTENDED 模式:32767 字节(实际受数据库块大小限制)。GaussDB固定最大长度:10 MB(10485760 字节),远大于 Oracle 的扩展模式上限。 3. 存储机制与校验Oracle严格校验输入长度:插入超过定义长度的数据直接报错(除非显式截断)。存储变长数据,仅占用实际字节空间(无填充)。GaussDB长度定义仅为建议值:实际插入时不校验字节长度是否超限(例如定义 VARCHAR2(5) 仍可插入 'tooooo_long',仅警告不报错)。超长数据自动截断至定义长度(如 'too long'::VARCHAR2(5) 存储为 'too l')。 4. 空字符串的处理Oracle空字符串 '' 自动转换为 NULL,即 VARCHAR2 字段不允许存储空字符串。GaussDB在 A 兼容模式下行为与 Oracle 一致(空字符串转为 NULL)。其他模式下支持存储空字符串(非 NULL)。 5. 多字节字符集支持Oracle通过 CHAR 单位规避字符集影响:例如 VARCHAR2(10 CHAR) 在 UTF-8 下可存储 10 个中文(约 30–40 字节)。GaussDB仅按字节计算长度:若使用 UTF-8 字符集,VARCHAR2(10) 仅能存储约 3 个中文字符(每个汉字占 3–4 字节),需预留更大空间。 6. 别名和兼容性OracleVARCHAR2 是主力字符串类型,VARCHAR 仅为兼容标准 SQL 的别名(实际行为一致)。GaussDBVARCHAR2 是 VARCHAR 的别名,两者功能完全相同(例如 VARCHAR2(10) 等价于 VARCHAR(10))。 对比总结表一下下特性OracleGaussDB长度单位支持 BYTE 或 CHAR仅支持 BYTE最大长度4000 字节(标准) / 32767 字节(扩展)10 MB(10485760 字节)超长数据处理直接报错自动截断(不报错)空字符串视为 NULLA 兼容模式下视为 NULL多字节支持按字符定义(CHAR 单位)需手动计算字节占用类型本质独立类型VARCHAR 的别名 迁移建议长度单位转换:若 Oracle 使用 CHAR 单位,迁移到 GaussDB 时需按字符集重新计算字节长度(如 UTF-8 中文需 原长度 × 3)。空值处理:在 GaussDB 中启用 A 兼容模式(sql_compatibility='A')以保持与 Oracle 的空字符串行为一致。超长数据:依赖应用层校验长度,避免依赖数据库自动截断导致数据丢失。大文本存储:超过 10 MB 的数据需改用 TEXT 或 CLOB 类型。
-
1 背景介绍第三方系统对接华为云Stack时,需要对接实现的功能不同,需要使用的账号角色也不同,获取token时,也需要指定权限范围,才能正确的调用接口。这里给出几种常见权限的token,方便开发者对号入座,使用正确的token调用接口。2 用户角色介绍首先,我们介绍一下ManageOne运营面的几类用户角色,ManageOne运营面默认提供运营管理员、VDC管理员、VDC业务员、VDC只读管理员四类角色,同时还支持自定义角色,不同的角色拥有的权限不同,如下表所示:角色权限权限解读运营管理员具有运营管理类的所有权限。具备资源池接入、租户管理、产品管理、审批流程管理等权限,不具备申请使用资源的权限VDC管理员具有所属VDC及下级VDC的管理权限,以及对所有资源具有管理权限。具备管理VDC内部project、用户、产品、审批流程以及子级VDC的权限,同时具备申请、使用资源的权限VDC业务员VDC业务员在其关联的项目内,对所有资源具有管理权限。仅具备申请、使用资源的权限,不具备管理用户、project的权限VDC只读管理员VDC只读管理员对本VDC及其下级VDC中资源、用户、项目、自运维等具有查看权限。对VDC、project、用户、资源、产品等具备查看权限,无修改、删除、创建权限自定义角色在自定义时为该角色赋予相应的操作权限。自定义角色权限集为VDC管理员权限集的子集3 权限各异的token这里主要给出两种权限的token的获取方法,如下表所示:token类别权限范围适用的对接场景具有云服务管理员权限的token具备一级VDC、资源池管理权限和云服务管理权限,支持创建规格,不能申请云资源第三方系统对接华为云Stack时,需要自定义规格时使用该token具有VDC管理员权限的token(常见场景)内部project、用户、产品、审批流程以及子级VDC的权限,具备资源申请、使用权限,不具备创建规格权限第三方系统对接华为云Stack时,需要管理project,用户,并在project中申请、使用资源时使用3.1 具有云服务管理员权限的token适用场景:第三方云管对接华为云Stack时,需要支持在第三方云管上创建规格,此时需要获取管理员权限的token;该token也可用于创建一级VDC,一级VDC管理员调用准备:1、获得运营管理员账号密码.2、正式调用接口前,您需要获取对应的IP、IAM对外域名,请参考:cid:link_0调用步骤:1、获得scope权限范围为domain的运营管理员token,运营管理员的domain为固定值,mo_bss_admin,示例如下:请求URL:https://{IAM对外访问域名}/v3/auth/tokens请求方法:POST请求头:Accept:application/jsonContent-Type:application/json;charset=UTF-8请求体:{ "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "domain": { "name": "mo_bss_admin" }, "name": "XXXXXX", "password": "XXXXXX" } } }, "scope": { "domain": { "name": "mo_bss_admin" } } }}返回的token在响应头中,示例如下:HTTP/1.1 201 CreatedDate: Wed, 12 Feb 2020 07:14:47 GMTContent-Type: application/json; charset=utf-8Transfer-Encoding: chunkedConnection: keep-aliveX-Subject-Token: MIIECwYxxxxxxxxxxxxxxxxxxSQ3G2RAj89N+t9GECHGnnGUgkKj7vMesUZ2jEW6EiVYA==X-IAM-Trace-Id: df659e8ff4feecf1adfffe72f7335d40ETag: W/"259-Qgmz1aPq7XYjfweWaVCVmseNMls"X-Request-Id: df659e8ff4feecf1adfffe72f7335d40Server: api-gatewayX-Subject-Token的值即为我们所需要的token使用curl调用接口示例如下:curl -X POST -d '{"auth":{"identity":{"methods":["password"],"password":{"user":{"domain":{"name":"mo_bss_admin"},"name":"xxxxx","password":"xxxxx"}}},"scope":{"domain":{"name":"mo_bss_admin"}}}}' -k -i -H "Content-Type: application/json" https://{IAM对外访问域名}/v3/auth/tokens2、使用上一步中获取的token,查询运营管理员管理的默认Project,示例如下:请求URL:https://{IAM对外访问域名}/v3/auth/projects请求方法:GET请求头:Accept:application/jsonContent-Type:application/json;charset=UTF-8X-Auth-Token:MIIECwYxxxxxxxxxxxxxxxxxxSQ3G2RAj89N+t9GECHGnnGUgkKj7vMesUZ2jEW6EiVYA== 请求体:无响应体:{ "projects": [ { "id": "a2a6e4500b614249afdc0d463971de91", "name": "STD_test-region-1_mo_bss_project", "domain_id": "c386760daaad424ca00ef0044d14eca5", "description": "", "enabled": true, "parent_id": "c386760daaad424ca00ef0044d14eca5", "is_domain": false, "links": { "self": "None/v3/projects/a2a6e4500b614249afdc0d463971de91" } } ], "links": { "next": null, "self": "None/v3/auth/projects", "previous": null }}这样,我们就拿到了运营管理员的project,STD_test-region-1_mo_bss_project注意:如果查询到多个项目,优先使用项目名称后缀为mo_bss_project的项目3、使用运营管理员账号密码,domain name和project name,重新获得token,示例如下:1、获得scope权限范围为domain的运营管理员token,运营管理员的domain为固定值,mo_bss_admin,示例如下:请求URL:https://{IAM对外访问域名}/v3/auth/tokens请求方法:POST请求头:Accept:application/jsonContent-Type:application/json;charset=UTF-8请求体(请注意scope部分的变化):{ "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "domain": { "name": "mo_bss_admin" }, "name": "XXXXX", "password": "XXXXXX" } } }, "scope": { "project": { "domain": { "name": "mo_bss_admin" }, "name": "STD_test-region-1_mo_bss_project" } } }}返回的token在响应头中,示例如下:HTTP/1.1 201 CreatedDate: Wed, 12 Feb 2020 07:14:47 GMTContent-Type: application/json; charset=utf-8Transfer-Encoding: chunkedConnection: keep-aliveX-Subject-Token: MIASQCwYxxxxxxxxxxxxxxxxxxSQ3G2RAj89N+t9GECHGnnGUgkKj7vMesUZ2jEW6XCVSDASAX-IAM-Trace-Id: df659e8ff4feecf1adfffe72f7335d40ETag: W/"259-Qgmz1aPq7XYjfweWaVCVmseNMls"X-Request-Id: df659e8ff4feecf1adfffe72f7335d40Server: api-gateway此处获得的token即可用于调用云服务接口创建规格(【POST】/v2.1/{project_id}/flavors,project_id即为第2步中查询到的project的Id),注意,创建规格时,需要指定规格的可见范围为公用,否则其他租户无法使用该规格,即设置:"os-flavor-access:is_public": true3.2 具有VDC管理员权限的token适用场景:第三方云管对接华为云Stack时,需要调用准备:1、正式调用接口前,您需要获取对应的IP、IAM对外访问域名,请参考:cid:link_02、获得VDC管理员账号密码.3、获取到账号后,还需要获得该租户管理员所属租户的名称,以及该租户下一个project的Id或者名称,方法如下:· 使用租户管理员账号登录ManageOne运营侧(ManageOne运营侧的访问地址请联系现场华为工程师获取)· 点击右上角的用户图标,切换到“个人设置”页面,如下:可以看到,租户名称为xssvdc,我们选择的project为xssvdc,下面我们来获取token调用示例:请求URL:https://{IAM对外访问域名}/v3/auth/tokens请求方法:POST请求头:Accept:application/jsonContent-Type:application/json;charset=UTF-8请求体:{ "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "domain": { "name": "用户所属的租户名称" }, "name": "用户名", "password": "密码" } } }, "scope": { "project": { "domain": { "name": "用户所属的租户名称" }, "name": "用户关联的项目名称" } } }}返回的token在响应头中,示例如下:HTTP/1.1 201 CreatedDate: Wed, 12 Feb 2020 07:14:47 GMTContent-Type: application/json; charset=utf-8Transfer-Encoding: chunkedConnection: keep-aliveX-Subject-Token: MIAIIIQSDSwYxxxxxxxxxxxxxxxxxxSQ3G2RAj89N+t9GECHGnnGUgkKj7vMesU3FGESDVSDMASWQX-IAM-Trace-Id: df659e8ff4feecf1adfffe72f7335d40ETag: W/"259-Qgmz1aPq7XYjfweWaVCVmseNMls"X-Request-Id: df659e8ff4feecf1adfffe72f7335d40Server: api-gateway这里我们就获得了VDC管理员在指定domain,project内的权限,可以用这个token去创建子级VDC、project、用户,也可以在指定的project内创建、操作资源。说明:如果获取token时,仅指定了domain,这个token可以用于创建子级VDC、project、用户,但不能创建、操作具体资源,因为所有的资源都分配在指定的project下。例如下面的请求体示例,获取的token就不能用于创建、操作资源:{ "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "domain": { "name": "用户所属的租户名称" }, "name": "用户名", "password": "密码" } } }, "scope": { "domain": { "name": "用户所属的租户名称" } } }}
-
1、场景说明ManageOne运营面支持记录租户操作日志,使得用户可以了解本人或他人的操作信息,便于定位问题和排除故障等。为方便第三方审计系统获取ManageOne运营面租户日志(租户申请资源,创建用户等操作相关的日志),ManageOne开放了租户查询日志接口,该接口支持查询所有租户操作日志,也支持查询指定租户操作日志。同时ManageOne运维面支持通过Syslog协议将运维面系统日志和操作日志上报给第三方平台。2、使用流程 1. 接口列表&准备工作1.1 获取租户操作日志准备工作查询租户操作日志涉及到的接口如下:序号URL说明1【POST】/v3/auth/tokens获取token2【GET】/rest/octrace/v3.0/traces查询租户操作日志,该接口未做分权分域,所有用户均可调用该接口,且能够查询所有的租户操作日志正式调用接口前,需要获取接口文档,账号,域名和对接账号,请参考:https://bbs.huaweicloud.com/forum/thread-41849-1-1.html1.2 获取运维面日志准备工作运维面操作日志采用Syslog协议上报,需要的准备工作如下:需要获取Syslog服务端的IP地址和端口,如,192.168.1.2, 8895;且需要确保ManageOne运维面后台节点可访问Syslog服务端,网络访问要求如下:节点名称被访问节点访问要求ManageOne-Service01Syslog服务端指定端口ManageOne-Service01可访问Syslog服务端指定端口ManageOne-Service02Syslog服务端指定端口ManageOne-Service02可访问Syslog服务端指定端口ManageOne-Deploy01Syslog服务端指定端口ManageOne-Deploy01可访问Syslog服务端指定端口ManageOne-Deploy02Syslog服务端指定端口ManageOne-Deploy02可访问Syslog服务端指定端口2. 对接步骤2.1获取租户操作日志步骤1 获取token获得scope权限范围为domain的VDC管理员token,VDC管理员的domain为VDC名称,示例如下:请求URL:https://{运营侧北向接口对外域名}/v3/auth/tokens请求方法:POST请求头示例:Accept:application/jsonContent-Type:application/json;charset=UTF-8请求体示例:{ "auth": { "identity": { "methods": ["password"], "password": { "user": { "name": "XXXXXX", "password": "XXXXXX", "domain": { "name": "sfy_vdc" } } } }, "scope": { "domain": { "name": "sfy_vdc" } } }} 返回的token在响应头中,示例如下:Content-Type: application/json; charset=utf-8Connection: keep-aliveX-Subject-Token: MIIECwYxxxxxxxxxxxxxxxxxxSQ3G2RAj89N+t9GECHGnnGUgkKj7vMesUZ2jEW6EiVYA==X-Subject-Token的值即为我们所需要的token步骤2 查询租户操作日志请求URL:https://{运营侧北向接口对外域名}/rest/octrace/v3.0/traces?limit=3&start=0&language=zh-cn (8.0以上版本需使用运维侧北向接口对外域名)说明:URL路径参数支持操作日志过滤,具体过滤条件和参数详细信息及说明参考《ManageOne 运营面API参考 .docx》(8.0以上版本为《ManageOne 运维面API参考 .docx》)文档中的“查询操作日志接口”章节。请求方法:GET请求头示例:Content-Type: application/json Accept: application/json X-Auth-Token: MIIECwYxxxxxxxxxxxxxxxxxxSQ3G2RAj89N+t9GECHGnnGUgkKj7vMesUZ2jEW6EiVYA==请求体:无响应体示例:{ "total": 102619, "traces": [ { "user_name": "vdc_admin", "trace_message": "修改服务成功。", "source_ip": "160.133.65.30", "domain_id": "b6ff69d6703748bebd7b3075cf97059b", "domain_name": "op_service", "trace_type": "ConsoleAction", "project_id": "system", "httpCode": 200, "invoke_trace_id": "7eb520a8f82bff147eb520a8f82bff14", "trace_id": "806f2152-2c24-4b02-9405-9a31c42cb2cd", "trace_result": "successed", "trace_name": "修改服务", "resource_type": "Product", "end_time": 1594024617416, "trace_rating": "normal", "api_version": "v2", "start_time": "1594024617416", "service_type": "MOProduct", "user_id": "32cb5a3c9de44bcf9696db98c1db828a", "resource_id": "e02dd4ad12aa46e997bbce03ab00dc43", "resource_name": "安装Nginx服务", "record_time": 1594024617431, "request_id": "RouteID-movappservice-15-0-200706163657-451712" }, { "user_name": "vdc_admin", "trace_message": "修改服务成功。", "source_ip": "160.133.65.30", "domain_id": "b6ff69d6703748bebd7b3075cf97059b", "domain_name": "op_service", "trace_type": "ConsoleAction", "project_id": "system", "httpCode": 200, "invoke_trace_id": "7eb520a8f82bff147eb520a8f82bff14", "trace_id": "59907ba2-2852-4ce1-bb54-8d0cba1d302f", "trace_result": "successed", "trace_name": "修改服务", "resource_type": "Product", "end_time": 1594024617225, "trace_rating": "normal", "api_version": "v2", "start_time": "1594024617225", "service_type": "MOProduct", "user_id": "32cb5a3c9de44bcf9696db98c1db828a", "resource_id": "c5b9faa868364c1fb94a117abfd39e56", "resource_name": "安装Kafka集群", "record_time": 1594024617235, "request_id": "RouteID-movappservice-15-0-200706163657-451707" }, { "user_name": "vdc_admin", "trace_message": "修改服务成功。", "source_ip": "160.133.65.30", "domain_id": "b6ff69d6703748bebd7b3075cf97059b", "domain_name": "op_service", "trace_type": "ConsoleAction", "project_id": "system", "httpCode": 200, "invoke_trace_id": "7eb520a8f82bff147eb520a8f82bff14", "trace_id": "d97c05a4-8991-4a16-8d63-312d84e16c4b", "trace_result": "successed", "trace_name": "修改服务", "resource_type": "Product", "end_time": 1594024616965, "trace_rating": "normal", "api_version": "v2", "start_time": "1594024616965", "service_type": "MOProduct", "user_id": "32cb5a3c9de44bcf9696db98c1db828a", "resource_id": "48b119eb0feb459698ffa16a545e2527", "resource_name": "安装Kafka服务", "record_time": 1594024616974, "request_id": "RouteID-movappservice-15-0-200706163656-451702" } ]}2.2 配置运维面日志上报首先参考2.2章节,获取到第三方Syslog服务端的IP和端口信息,并确认网络可达,然后执行以下操作(适用于6.5.1和8.0.0版本)步骤1 使用管理员账户,登录ManageOne运维面步骤2 依次点击"系统管理"-->"日志管理"-->"日志转发设置",进入日志转发配置页面,如下图所示:步骤3 点击“创建”,进入日志转发服务器配置页面,如下图所示:填写正确的IP地址和端口号,根据需要配置协议类型和日志级别,完成配置后,点击“确定”即可。接下来,可以在运维面上执行一些操作,然后与Syslog服务端确认是否能正常收到日志,如果不能收到,建议现排查网络是否可达。
-
1、场景说明ManageOne分为运营侧/运维侧支持对接到第三方的SSO Server,通过第三方认证中心完成登录授权。 2、使用流程约束条件:8.0.3及以下版本,运维侧作为SSO客户端对接第三方SSO Server后,只有运维侧本身支持单点登录功能,已经与运维侧单点登录集成的系统不支持直接登录,比如ServiceOM、CPS、eSight等。8.2.1及以上版本,ManageOne运维侧与IAM集成,实现统一登录,运维侧不再单独作为客户端与第三方SSO Server对接。用户只需将运营面与第三方SSO Server对接,运维面可同步实现对接。 demo地址:运营面:cid:link_0 功能扩展:1、运营侧作为SSO Client使用原生页面登录:cid:link_1
-
1、场景说明ManageOne是基于CAS 2.0协议提供SSO Server服务,第三方系统对接后可实现单点登录功能。 2、使用流程CAS基本原理图: CAS Client与受信任的第三方系统部署在一起,以Filter的方式保护Web应用系统的资源,过滤从浏览器发送的每一个web请求。 约束条件:ManageOne 6.5.0 及以上版本 步骤如下:1.用户访问受信系统被CAS Client拦截。2.重定向到CAS Server登录页面。3.用户认证过程,如果用户提供了正确的认证信息,CAS Server随机产生一个不可伪造的(Service Ticket)ST,并缓存以待将来验证。4.CAS Server携带ST重定向到受信客户端系统,并为客户端浏览器设置一个(Ticket Granted Cookie)TGC。5.CAS Client提取ST到CAS Server验证。6.CAS Client得到合法用户信息,完成单点登录。 demo地址(需登录):cid:link_0
-
1、场景说明ManageOne运维侧已经支持直接对接多种常见协议的短信网关,比如CMPP2_x,CMPP3_x,SMGP,SGIP,SMPP3_4,SMPP3_3等。但部分客户有专属的短信网关,需要通过特定的接口进行对接,比如可能是restful/webservice/soap等协议,因此可以通过开发适配程序,先以ManageOne支持的协议接收短信内容,然后再调用第三方的接口发送短信。 2、使用流程详细开发指导参考附件,demo选择smpp3_4协议接收告警,打印短信内容,开发者拿到短信内容后再根据项目实际情况调用第三方短信接口。 主要步骤如下:1、引用smpp组件,封装了具体通信相关的功能添加Maven引用 <dependency> <groupId>org.jsmpp</groupId> <artifactId>jsmpp</artifactId> <version>2.3.10</version></dependency>2、启动smpp服务端SMPPServerSessionListener sessionListener = new SMPPServerSessionListener(port);LOGGER.info("Start SMPP server... sessionListenerPort -> {}", port);while (true) { SMPPServerSession serverSession = sessionListener.accept(); LOGGER.info("Accepting connection for session:{}", serverSession.getSessionId()); serverSession.setMessageReceiverListener(this); Future<Boolean> bindResult = execService.submit(new WaitBindTask(serverSession, systemId, password)); try { boolean bound = bindResult.get(60000, TimeUnit.MILLISECONDS); if (bound) { LOGGER.info("The session is now in state:{}", serverSession.getSessionState()); } } catch (InterruptedException e) { LOGGER.error("Interrupted WaitBind task:{}", e.getMessage()); } catch (ExecutionException e) { LOGGER.error("Exception on execute WaitBind task:{}", e.getMessage()); } catch (TimeoutException e) { LOGGER.error("Timeout on bind result:{}", e.getMessage()); }}3、重写消息接收事件,获取短信内容public MessageId onAcceptSubmitSm(SubmitSm submitSm, SMPPServerSession smppServerSession) throws ProcessRequestException { MessageId messageId = messageIDGenerator.newMessageId(); String sourceAddr = submitSm.getSourceAddr(); String destAddress = submitSm.getDestAddress(); String shortMessage = new String(submitSm.getShortMessage(), StandardCharsets.UTF_16); LOGGER.info("Receiving submit_sm, sourceAddr:{},destAddress:{},shortMessage:'{}', and return message id:{}", sourceAddr,destAddress,shortMessage,messageId.getValue()); return messageId;}4、页面配置对接协议,验证消息发送内容5、示例程序(Java):cid:link_0
-
1、场景说明ManageOne运营侧支持与第三方审批流程系统对接,实现用户提交云资源申请订单后,审批人在第三方审批系统进行流程审批,审批完成后,ManageOne进行云资源的在线发放。开发者可通过定制的方式对接常见的流程审批系统,如ESOP、K2、HPSM等。 客户价值:1、方便客户对业务审批流程进行统一管理。2、保持审批人一致的审批体验,不同业务的审批在一个审批系统中完成,不需要登录不同的系统进行审批,不需要适应不同审批风格的系统,减少学习成本。 2、使用流程约束条件:ManageOne 6.5.0 及以上版本通过开发定制适配程序实现,主要实现功能如下图所示: demo地址:cid:link_0 FAQ:1、配置对接页面连通性测试失败--a、检查网络是否开通--b、检查适配程序接口是否被ManageOne调用,打印返回报文检查格式是否正确2、流程管理页面没有显示第三方外部流程--a、检查查询流程定义接口是否被ManageOne调用--b、检查返回报文格式,注意approval_user_id不能重复,格式为数字类型的字符串,如“10001”。
-
为了更便捷的实现CentOS系统迁移到国产openEuler系统 ,具备批量化原地升级能力,提升迁移能效,搭建x2openEuler平台是一个不错的方案。而大家知道吗,x2openEuler工具的HTTPS默认端口号很特殊哦:它居然是——18082核心依据:安装过程中的默认配置在部署x2openEuler工具时,启动Web服务会提示设置HTTPS端口,默认值为18082。用户可直接按回车键采用此默认值,无需手动修改。# 安装过程中提示的默认端口配置Please enter HTTPS port(default: 18082):The HTTPS port 18082 is valid. Set the HTTPS port to 18082 (y/n default: y)实际访问地址通过浏览器访问x2openEuler的Web管理界面时,需使用 https://<服务器IP>:18082 的格式(例如 https://192.168.31.221:18082/x2openEuler/#/login),进一步验证18082是HTTPS服务的默认端口。 443:443是标准HTTPS服务的默认端口(如网站加密访问),但x2openEuler作为独立迁移工具,未使用此通用端口。 8443:8443常用于其他管理控制台(如Kubernetes Dashboard),未被x2openEuler采用。 18080:18080是x2openEuler中Gunicorn应用服务的默认端口(用于内部通信),而非面向用户的HTTPS端口。 注意哦自定义可能性:虽然18082是默认值,但用户可在安装过程中手动指定其他端口(如改为8443或更高端口),需根据实际配置确认。防火墙规则:若无法访问x2openEuler界面,需检查防火墙是否放行18082端口:sudo firewall-cmd --zone=public --add-port=18082/tcp --permanentsudo firewall-cmd --reload此操作确保端口可被外部访问。
-
华为云学堂专为AI初学者打造的人工智能入门级开发者认证学习路径,带你从零开始,系统掌握AI基础理论与华为云EI服务实战技能,轻松拿下权威认证,抢占智能时代的入场券。 这套学习路径堪称AI入门者的 “成长加速器”,从理论到实践层层递进,让零基础也能稳步进阶。第一阶段课程涵盖人工智能全景知识:从AI发展历程、核心技术原理,到华为云EI服务的图像识别、语音交互等API功能解析,再到大模型与检索增强生成(RAG)等前沿技术的深度讲解。你将明白如何拆解AI应用需求,如何用华为云ModelArts平台快速搭建模型,更能掌握AI产品测试的全流程方法,为实战打下坚实基础。 第二阶段的8个在线沙箱实验,让你在真实云环境中动手实操:从本地部署热门大模型DeepSeek,到调用华为云API实现图像搜索、文字识别、语音交互;从用ModelArts识别商超商品、chatglm2-6b-int4模型推理部署,到开发交通领域RAG问答系统、搭建发票验真综合应用 —— 每个实验都对应真实业务场景,让你在8个学时内练就 “即学即用” 的开发能力。 通过一站式学练考体系,你将最终冲击HCCDA-AI认证。这份由华为云颁发的权威证书,不仅是对你AI技能的认可,更是敲开企业大门的金钥匙。无论你是想转行进入AI领域的职场人,还是希望提升竞争力的学生,这条路径都能让你在短时间内构建完整知识体系,掌握企业急需的华为云AI开发技能。 现在加入学习,你将获得三大核心价值:系统知识框架帮你避开自学误区,实战项目经验让简历脱颖而出,权威认证背书为职业发展保驾护航。人工智能的浪潮已至,与其观望徘徊,不如主动出击→cid:link_0 从这套入门级认证学习路径开始,让华为云的技术生态成为你成长的跳板,快速蜕变为能独立开发AI应用的实战型人才,在智能时代的竞争中抢占先机!
-
在 GaussDB 中,可以通过多种系统视图和工具精准定位锁阻塞的源头。 一、查询实时锁阻塞信息使用专用锁冲突视图(推荐)适用版本:8.1.x 及以上集群。操作命令:SELECT * FROM pgxc_lock_conflicts;输出内容:直接显示冲突的锁类型、持有/等待会话的线程 ID(pid)、查询语句(query)、锁模式(mode)及是否已授予(granted),快速定位阻塞源头会话。多表关联查询(兼容旧版本)适用版本:8.0.x 及之前版本。操作命令:SELECT w.query AS waiting_query, w.pid AS w_pid, w.usename AS w_user, l.query AS locking_query, l.pid AS l_pid, l.usename AS l_user, n.nspname || '.' || c.relname AS tablenameFROM pg_stat_activity wJOIN pg_locks l1 ON w.pid = l1.pid AND NOT l1.grantedJOIN pg_locks l2 ON l1.relation = l2.relation AND l2.grantedJOIN pg_stat_activity l ON l2.pid = l.pidJOIN pg_class c ON c.oid = l1.relationJOIN pg_namespace n ON n.oid = c.relnamespaceWHERE w.waiting;输出内容:明确展示被阻塞查询(waiting_query)、阻塞查询(locking_query)、阻塞表及会话线程 ID。二、分析历史锁阻塞(事后诊断)通过 Active Session Profile (gs_asp) 视图回溯历史等待事件:SELECT wait_status, event, count(*) FROM gs_asp WHERE sample_time BETWEEN '开始时间' AND '结束时间'GROUP BY 1,2 ORDER BY 3 DESC;作用:统计指定时间段内高频等待事件(如 acquire lock),若发现大量表级锁(relation)或行级锁(tuple),表明存在锁阻塞问题。 三、关键锁超时参数排查lockwait_timeout:表锁等待超时时间(默认 20 分钟)。update_lockwait_timeout:行锁(记录锁)等待超时时间(默认 2 分钟)。检查方法:SHOW lockwait_timeout;SHOW update_lockwait_timeout;若频繁超时,需结合业务调整参数或优化事务逻辑。 四、终止阻塞会话(紧急处理)定位到阻塞源头的线程 ID(pid)后,终止会话:-- 终止指定会话SELECT PG_TERMINATE_BACKEND(阻塞_pid);-- 分布式集群中定向终止EXECUTE DIRECT ON(cn_name) 'SELECT PG_TERMINATE_BACKEND(阻塞_pid)';注意:此操作会强制中断会话,可能导致事务回滚。 五、锁冲突场景深度分析并发更新冲突行存表:并发更新同一行数据时,后更新会话被阻塞直至超时。列存表:并发更新同一 CU(压缩单元) 导致阻塞(需更新相同 CU 才会触发)。DDL 与查询冲突例如:TRUNCATE(持有 AccessExclusiveLock)阻塞 SELECT(需 AccessShareLock),因两者互斥。排查工具对比总结方法适用场景优势限制pgxc_lock_conflicts实时锁冲突(新版本)直接输出冲突链,无需复杂关联仅 8.1.x+ 支持多表关联查询实时锁冲突(旧版本)兼容低版本SQL 较复杂gs_asp 历史分析事后诊断追溯历史阻塞事件需提前开启 ASP 采样锁超时参数调整预防性优化减少业务中断风险需结合业务逻辑评估 结论一下下GaussDB 可通过实时视图(pgxc_lock_conflicts/多表关联)、历史分析(gs_asp)及参数监控精准定位锁阻塞源头。紧急情况下终止阻塞会话可快速恢复业务,长期需结合锁冲突场景优化事务设计(如避免长事务、分离 DDL 窗口)。
上滑加载中
推荐直播
-
码道新技能,AI 新生产力——从自动视频生成到开源项目解析2026/04/08 周三 19:00-21:00
童得力-华为云开发者生态运营总监/何文强-无人机企业AI提效负责人
本次华为云码道 Skill 实战活动,聚焦两大 AI 开发场景:通过实战教学,带你打造 AI 编程自动生成视频 Skill,并实现对 GitHub 热门开源项目的智能知识抽取,手把手掌握 Skill 开发全流程,用 AI 提升研发效率与内容生产力。
回顾中 -
华为云码道:零代码股票智能决策平台全功能实战2026/04/18 周六 10:00-12:00
秦拳德-中软国际教育卓越研究院研究员、华为云金牌讲师、云原生技术专家
利用Tushare接口获取实时行情数据,采用Transformer算法进行时序预测与涨跌分析,并集成DeepSeek API提供智能解读。同时,项目深度结合华为云CodeArts(码道)的代码智能体能力,实现代码一键推送至云端代码仓库,建立起高效、可协作的团队开发新范式。开发者可快速上手,从零打造功能完整的个股筛选、智能分析与风险管控产品。
回顾中 -
华为云码道全新升级,多会话并行与多智能体协作2026/05/08 周五 19:00-21:00
王一男-华为云码道产品专家;张嘉冉-华为云码道工程师;胡琦-华为云HCDE;程诗杰-华为云HCDG
华为云码道4月份版本全新升级,此次直播深度解读4月份产品特性,通过“特性解读+实操演示+实战案例+设计创新”的组合,全方位展现码道在多会话并行与多智能体协作方面的能力,赋能开发者提升效率
正在直播
热门标签