华为云用户手册

  • 责任共担 华为云秉承“将公司对网络和业务安全性保障的责任置于公司的商业利益之上”。针对层出不穷的 云安全 挑战和无孔不入的云安全威胁与攻击,华为云在遵从法律法规业界标准的基础上,以安全生态圈为护城河,依托华为独有的软硬件优势,构建面向不同区域和行业的完善云服务安全保障体系。 安全性是华为云与您的共同责任,如图1所示。 华为云:负责云服务自身的安全,提供安全的云。华为云的安全责任在于保障其所提供的IaaS、PaaS和SaaS类云服务自身的安全,涵盖华为云数据中心的物理环境设施和运行其上的基础服务、平台服务、应用服务等。这不仅包括华为云基础设施和各项云服务技术的安全功能和性能本身,也包括运维运营安全,以及更广义的安全合规遵从。 租户:负责云服务内部的安全,安全地使用云。华为云租户的安全责任在于对使用的IaaS、PaaS和SaaS类云服务内部的安全以及对租户定制配置进行安全有效的管理,包括但不限于虚拟网络、 虚拟主机 和访客虚拟机的操作系统,虚拟防火墙、API网关和高级安全服务,各项云服务,租户数据,以及身份账号和密钥管理等方面的安全配置。 《华为云安全白皮书》详细介绍华为云安全性的构建思路与措施,包括云安全战略、责任共担模型、合规与隐私、安全组织与人员、基础设施安全、租户服务与租户安全、工程安全、运维运营安全、生态安全。 图1 华为云安全责任共担模型 父主题: 安全
  • 审计与日志 云审计 服务(Cloud Trace Service, CTS ),是华为云安全解决方案中专业的日志审计服务,提供对各种云资源操作记录的收集、存储和查询功能,可用于支撑安全分析、合规审计、资源跟踪和问题定位等常见应用场景。 用户开通云审计服务后,CTS可记录GA的操作事件用于审计。 CTS的详细介绍和开通配置方法,请参见CTS快速入门。 GA支持审计的操作事件请参见支持审计的关键操作。 查看审计日志请参见查看审计日志。 父主题: 安全
  • 与其他服务的关系 图1 与其他服务的关系 表1 与其他服务的关系 交互功能 相关服务 位置 购买弹性公网IP关联企业后端服务器,将弹性公网IP作为全球加速服务的终端节点,全球加速实例通过监听器向终端节点分发访问请求。 弹性公网IP(Elastic IP,EIP) 购买弹性公网IP 在企业使用 域名 提供服务的场景,购买全球加速实例后,通过在云解析DNS服务里配置企业的服务域名和全球加速服务的Anycast IP之间的解析关系,将企业购买全球加速实例后获取的Anycast IP与用户应用绑定。 云解析(Domain Name Service,DNS) 云解析服务 查看全球加速实例下的带宽和连接数使用情况。 云监控 (Cloud Eye Service, CES 云监控服务
  • 加速原理 通俗来讲,GA全球骨干网相当于华为云在全球多个国家建设高速公路网,接入点就好比高速公路入口,加速区域就是指有高速公路入口的国家或地区,而Region则可以理解是高速公路网的出口站点。我们可以通过“运营商”建设的普通公路访问Region应用(EIP访问流程),也可以就近接入华为云高速公路网快速访问Region应用(GA AnycastIp访问流程)。 例如用户业务部署在上海,使用全球加速服务优化全球用户访问,此时新加坡用户访问GA AnycastIP会从新加坡接入点接入骨干网快速访问上海Region的应用,马来西亚由于没有接入点会就近通过新加坡接入点进入华为云骨干网快速访问上海Region应用。 加速云外IP也是进入全球骨干网快速访问,只是需要选择目的IP就近Region作为出口。例如用户业务部署在无锡自己的IDC机房而不在华为云机房,此时仍然可以使用华为云全球加速服务为全球用户访问加速。GA后端Region选择距离无锡最近的上海Region,此时新加坡用户访问GA AnycastIP会从新加坡接入点进入华为云骨干网快速传输到上海Region,然后出骨干网后通过公网传输到无锡。
  • 约束与限制 全球加速服务的用户默认配额信息详细请参见表1。 表1 全球加速服务资源配额 资源 默认配额 说明 每个帐户支持的全球加速实例数量 20 可以通过提交工单提高此限制。 每个全球加速实例支持的监听器数量 10 可以通过提交工单提高此限制。 每个终端节点组支持的终端节点数量 10 可以通过提交工单提高此限制。 每个全球加速实例支持的连接数 20000 单pop单实例限速20000连接数。 可以通过提交工单提高此限制。 带宽峰值 100Mbps 单pop单服务器节点限速100M。 可以通过提交工单提高此限制。 每个租户支持的IP地址组数量 50 不可更改 每个IP地址组支持添加的IP网段数量 200 不可更改 每个IP地址组关联的监听器数量 10 不可更改
  • 全球加速权限 默认情况下,管理员创建的 IAM 用户没有任何权限,需要将其加入用户组,并给用户组授予策略或角色,才能使得用户组中的用户获得对应的权限,这一过程称为授权。授权后,用户就可以基于被授予的权限对云服务进行操作。 全球加速部署时不区分物理区域,为全局级服务。授权时,在全局级服务中设置权限,访问全球加速时,不需要切换区域。 根据授权精细程度分为角色和策略。 角色:IAM最初提供的一种根据用户的工作职能定义权限的粗粒度授权机制。该机制以服务为粒度,提供有限的服务相关角色用于授权。由于华为云各服务之间存在业务依赖关系,因此给用户授予角色时,可能需要一并授予依赖的其他角色,才能正确完成业务。角色并不能满足用户对精细化授权的要求,无法完全达到企业对权限最小化的安全管控要求。 策略:IAM最新提供的一种细粒度授权的能力,可以精确到具体服务的操作、资源以及请求条件等。基于策略的授权是一种更加灵活的授权方式,能够满足企业对权限最小化的安全管控要求。例如:针对全球加速服务,管理员能够控制IAM用户仅能对某一类全球加速资源进行指定的管理操作。 如表1所示,包括了全球加速的所有系统权限。 表1 全球加速系统权限 系统角色/策略名称 描述 类别 依赖关系 GA FullAccess 操作权限:对全球加速服务的所有执行权限。 作用范围:全局级服务。 系统策略 无 GA ReadOnlyAccess 操作权限:对全球加速服务的只读权限。 作用范围:全局级服务。 系统策略 无 表2列出了全球加速常用操作与系统权限的授权关系,您可以参照该表选择合适的系统权限。 表2 常用操作与系统权限的关系 操作 GA FullAccess GA ReadOnlyAccess 创建全球加速实例 √ × 查看全球加速实例 √ √ 修改全球加速实例 √ × 删除全球加速实例 √ × 创建监听器 √ × 查看监听器 √ √ 修改监听器 √ × 删除监听器 √ × 创建终端节点组 √ × 查看终端节点组 √ √ 修改终端节点组 √ × 删除终端节点组 √ × 创建终端节点 √ × 查看终端节点 √ √ 修改终端节点 √ × 删除终端节点 √ × 配置健康检查 √ × 查看健康检查 √ √ 修改健康检查 √ × 关闭健康检查 √ × 删除健康检查 √ × 创建IP地址组 √ × 查询IP地址组列表 √ √ 查询IP地址组详情 √ √ 修改IP地址组 √ × 删除IP地址组 √ × 添加IP地址组中的IP条目 √ × 删除IP地址组中的IP条目 √ × 绑定IP地址组与监听器 √ × 解绑IP地址组与监听器 √ × 创建资源标签 √ × 查询特定资源标签 √ √ 删除资源标签 √ ×
  • 什么是区域、可用区? 区域和可用区用来描述数据中心的位置,您可以在特定的区域、可用区创建资源。 区域(Region):从地理位置和网络时延维度划分,同一个Region内共享弹性计算、块存储、对象存储、VPC网络、弹性公网IP、镜像等公共服务。Region分为通用Region和专属Region,通用Region指面向公共租户提供通用云服务的Region;专属Region指只承载同一类业务或只面向特定租户提供业务服务的专用Region。 可用区(AZ,Availability Zone):一个AZ是一个或多个物理数据中心的集合,有独立的风火水电,AZ内逻辑上再将计算、网络、存储等资源划分成多个集群。一个Region中的多个AZ间通过高速光纤相连,以满足用户跨AZ构建高可用性系统的需求。 图1阐明了区域和可用区之间的关系。 图1 区域和可用区 目前,华为云已在全球多个地域开放云服务,您可以根据需求选择适合自己的区域和可用区。更多信息请参见华为云全球站点。
  • 如何选择区域? 选择区域时,您需要考虑以下几个因素: 地理位置 一般情况下,建议就近选择靠近您或者您的目标用户的区域,这样可以减少网络时延,提高访问速度。 在除中国大陆以外的亚太地区有业务的用户,可以选择“中国-香港”、“亚太-曼谷”或“亚太-新加坡”区域。 在非洲地区有业务的用户,可以选择“非洲-约翰内斯堡”区域。 在拉丁美洲地区有业务的用户,可以选择“拉美-圣地亚哥”区域。 “拉美-圣地亚哥”区域位于智利。 资源的价格 不同区域的资源价格可能有差异,请参见华为云服务价格详情。
  • 计费项 表1 全球加速计费项 计费项 基础计费 价格 加速实例费 按照每个全球加速实例的创建时长收费。 按小时计费,创建时长不满1小时按1小时收费。 实例费=实例单价*创建时长 2.26 元/小时 数据传输费 通过全球加速服务转发的流量费用,按GB收费。 从一个全球加速接入点到一个应用部署区域之间的流量,定义流量大的方向为主方向,按照每条流量的主方向收费。 数据传输费=流量单价*使用量 请参见全球加速价格详情。 说明: 全球加速实例的终端节点为EIP类型时,EIP不会重复收取流经GA的流量费用。 接入点和Region部分正在部署中,实际支持的加速区域请参见支持的加速区域。 实际支持的终端节点组所在区域以管理控制台可选配置为准。
  • 计费样例 客户的1个应用部署在广州区域,终端用户从香港和菲律宾接入,客户需要配置1个加速实例。1小时内,客户实际产生的流量: 香港-广州 ,从用户到应用方向流量1G,从应用到用户方向流量20G,则主方向为应用到用户方向,流量为20G; 菲律宾-广州,同理算出主方向流量为5G。 则1小时内产生的总费用:加速实例费+数据传输费 = 2.26元/小时*1小时+6.98元/GB*20GB+6.98元/GB*5GB = 176.76元
  • 操作步骤 开通OrgID并创建组织 开通OrgID。 创建组织。 添加部门及成员 (可选)添加部门,完善组织架构。 添加成员 创建成员,添加只属于该组织的成员。 邀请成员,将已拥有个人华为账号的成员添加进组织。 创建并授权应用 创建应用,使用OAuth2方式进行认证集成,并为成员授权,具体操作请参见创建自建应用。 授权后,成员可访问该应用。 应用创建后,在“通用配置”页面获取Client_id、ClientSecret,如图1所示。 图1 接口认证凭证 在“登录配置”页面复制该应用的首页URL,如图2所示,并在应用的“登录配置”页面的首页URL地址中获取code(基于OAuth协议,OrgID给用户颁发的code)。 图2 首页URL 应用侧登录对接OrgID 调用获取AccessToken接口,使用code获取access_token,接口Body参数如表1所示。 表1 Body参数说明 参数名称 说明 grant_type 授权方式。该参数为固定值authorization_code。 code 授权码。使用3.c中获取的code。 client_id 创建应用后OrgID提供的client_id。使用3.b中获取的client_id。 client_secret 创建应用后OrgID提供的client_secret。使用3.b中获取的client_secret。 redirect_uri 配置code的接收地址,即创建自建应用时配置的首页URL。 调用获取用户信息接口,根据access_token获取登录用户的用户信息,其中接口Body的Authorization参数为4.a获取的access_Token。 调用/oauth/logout接口登出OrgID和应用,需要带上service参数(应用的登出地址),OrgID登出后会重定向到service地址。 调用/oauth/logout接口需在前端调用,在前端进行重定向至应用登出地址。
  • 总体开发思路 应用对接OrgID登录功能的工作流程如下: 开通OrgID并创建组织 开通OrgID并创建组织,以组织为单位对组织的成员、成员账号及应用进行管理。 添加部门及成员 通过添加部门,完善组织架构;通过创建成员添加只属于该组织的成员,也可以邀请成员,将已拥有个人华为账号的成员添加进组织。 创建并授权应用 添加自建应用并为成员授权。 应用侧登录对接OrgID 在应用侧使用接口对接OrgID登录功能。
  • 消息灰度 微服务蓝绿或灰度发布的业务场景中,灰度实例生产或消费的消息可能需要特殊处理,这时可以挂载Sermant消息灰度插件实现消息的灰度能力,灰度实例生产者或灰度流量生产灰度消息,灰度消费者消费灰度消息。 消息灰度配置: 配置项:grayscale.mq.config 作用范围:app=${service.meta.application}&environment=${service.meta.environment},即应用配置。service.meta.application、service.meta.environment的配置,默认为app=default&environment= 配置内容: # 消息灰度插件开启开关,默认为false不开启enabled: false# 灰度组信息集合,每个灰度组包含consumerGroupTag(灰度组标识)、serviceMeta(微服务实例属性标签)及trafficTag(流量标签)。grayscale: # 灰度组标签,例如基线消费组名称为basic_group,那么灰度名称为basic_group_${consumerGroupTag} - consumerGroupTag: gray serviceMeta: # ServiceMeta匹配标签,如果服务启动时service_meta_parameters设置为x_lane_tag:gray,那么当前消费者为灰度节点。 # 如果通过service_meta_version设置匹配信息,配置中的key一定要是'version',像version:1.0.1。 x_lane_tag: gray version: 1.0.1 trafficTag: # 流量标签匹配,配合sermant-tag-transmission插件一起生效,如果请求header中包含x_lane_canary=gray,并且开启标签透传插件,设置配置 # tag.transmission.config.matchRule.exact: ['x_lane_canary'],这时生产的消息为灰度消息. x_lane_canary: gray # serviceMeta与trafficTag关系如下: # 如果服务启动是service_meta_parameters设置信息x_lane_tag:gray,那么匹配为灰度实例。 # 1、如果是生产者,那么消息的property中设置属性'x_lane_canary: gray'标识为灰度消息。 # 2、如果是消费者,仅消费property包含'x_lane_canary: gray'属性的消息。# 基线消费组信息定义base: # 基线消费者消费消息模式,包含BASE/AUTO两个模式,默认值为AUTO模式 # BASE模式消费除excludeGroupTags设置的消费组标识以外的消息 # AUTO模式除excludeGroupTags设置的消费组标识及正在运行的灰度组以外的消息 consumeMode: AUTO # auto模式下,基线消费者定期检查灰度消费者时间间隔 autoCheckDelayTime: 15 # 基线消费者默认剔除的灰度组标识,对应上面consumerGroupTag设置的值,auto/base模式都会生效 excludeGroupTags: ["gray"] 消息灰度逻辑: 消息生产者 定时任务生产消息时,如果当前服务实例为灰度实例,那么生产消息时,在消息的属性中增加x_lane_canary: gray标签,如果为基线实例,不作处理。 流量触发生产消息时,如果当前流量为灰度流量(即header中含x_lane_canary: gray标签)时,那么生产消息时,在消息的属性中增加x_lane_canary: gray标签,如果为基线,则不作处理。 消息消费者 构建消息消费者时,如果当前实例为灰度实例(即满足serviceMeta的设置条件)时,消费组增加灰度标识,改为灰度组注册到RocketMq服务端,如原Group为default,那么灰度组为default_gray。 在监听消息中修改SubscriptionData中的subString为SQL92语句,从而过滤对应Topic、Group的消息。 构建SQL92过滤语句时,支持同一个服务构建RocketMq连接、Topic及Group不同组合的SQL92语句,即同一个服务支持RocketMq连接、Topic及Group不同维度组合下的消息灰度。 对于流量生产灰度消息或者消费消息,要结合Sermant的标签透传插件一起使用才能生效。 灰度逻辑中出现的灰度标签或消息属性标签信息是根据上述配置内容设置的,业务可以根据需要自定义所需标签。 版本要求: sermant-agent版本要求大于等于2.1.3。 RocketMq客户端版本:大于4.8.0。 RocketMq服务端需要支持开启消息过滤能力。 根据消息进行灰度路由调用。 很多业务场景中,在消费到消息后根据消息内容调用下游服务处理相应的业务,如果消费的是灰度消息,那么我们应该要调用下游对应的灰度实例去处理业务,反之调用基线实例处理业务,该能力需要结合标签透传插件并触发消息getBody方法才能生效。 Sermant的流量灰度可以参考Spring Cloud应用实现全链路灰度实现。 标签透传插件配置: 配置项:tag-config 作用范围:自定义标签配置group:sermant.tag-transmission-plugin 配置内容: enabled: truematchRule: exact: ["x_lane_canary"] x_lane_canary标签为上述消息灰度配置中trafficTag设置的对应标签。
  • 创建安全认证账号名和密码 为开启了安全认证的ServiceComb引擎专享版创建账号名和密码,请参考系统管理。 您可以使用关联了admin角色权限的账号创建新账号,根据实际业务需求把合适的角色同账号关联。使用该账号的用户则具有对该ServiceComb引擎的相应的访问和操作权限。 您可以使用关联了admin角色权限的账号创建自定义角色,根据业务需求把合适的ServiceComb引擎访问和操作权限赋予该角色。 父主题: 使用安全认证
  • 服务治理概述 服务治理是一个非常宽泛的概念,一般指独立于业务逻辑之外,给系统提供一些可靠运行的系统保障措施。针对微服务场景下的常用故障模式,提供的保障措施包括: 负载均衡管理:提供多实例情况下的负载均衡策略管理,比如采用轮询的方式保障流量在不同实例均衡。当一个实例发生故障的时候,能够暂时隔离这个实例,防止访问这个实例造成请求超时等。 限流:流控的主要目的是提供负载保护,防止外部流量超过系统处理能力,导致系统崩溃。流控还被用于平滑请求,让请求以均匀分布的方式到达服务,防止突发的流量对系统造成冲击。 重试:重试的主要目的是保障随机失败对业务造成影响。随机失败在微服务系统经常发生,产生随机失败的原因非常多。以Java微服务应用为例,造成请求超时这种随机失败的原因包括:网络波动和软硬件升级,可能造成随机的几秒中断;JVM垃圾回收、线程调度导致的时延增加;流量并不是均匀的,同时到来的1000个请求和1秒内到来的1000个请求平均分布对系统的冲击是不同的,前者更容易导致超时;应用程序、系统、网络的综合影响,一个应用程序突然的大流量可能会对带宽产生影响,从而影响到其他应用程序运行;其他应用程序相关的场景,比如SSL需要获取操作系统熵,如果熵值过低,会有几秒钟的延迟。 系统不可避免地面临随机故障,必须具备一定的随机故障保护能力。 隔离仓:隔离仓通常针对系统资源占用比较多的业务进行保护。比如一个业务非常耗时,如果这个业务和其他业务共享线程池,当这个业务被大量突发访问时,其他业务都会等待,造成整个系统性能下降。隔离仓通过给资源占用比较多的业务分配独立的资源池(一般通过信号量或者线程池实现),避免对其他业务造成影响。 降级:降级治理是在业务高峰期时,需要临时减少对于目标服务的访问,达到降低目标服务负载;或者屏蔽对于非关键服务的访问,保持本服务的核心处理能力的治理措施。 服务治理的复杂性在于没有任何治理措施是适用于所有场景的。对于一个应用场景工作良好的治理手段,在另外一个场景可能成为问题。在业务运行周期,根据业务运行状态和指标,动态的更新治理策略非常重要。 在业务系统中使用服务治理,通常包括下面几个步骤: 开发业务。这个过程一般比较少关注服务治理的内容,以交付业务功能为重心。微服务开发框架针对常用的系统故障,一般都默认提供了保障措施,选择合适的微服务开发框架,可以节省DFx的时间。 性能测试和故障演练。这个过程中会发现非常多的系统不稳定问题,服务治理的策略会在解决这些问题的过程中应用,并写入配置文件作为应用程序缺省值。 业务上线运行。上线运行的过程中碰到未考虑的场景,需要采用配置中心动态调整治理参数,以保障业务平稳运行。 上面的3个步骤在整个软件生命周期会不断迭代完善。描述如何使用所有的治理能力是复杂的,ServiceComb引擎针对不同的微服务开发框架,提供了一个统一的基于流量特征的服务治理能力。如果使用微服务框架开发应用,在应用托管后启动应用,微服务会自动注册到对应的ServiceComb引擎,您可以到微服务引擎控制台进行服务治理的相关操作请参考治理微服务。 本章节重点介绍如何使用基于流量特征的服务治理能力。 父主题: 使用服务治理
  • 安全认证概述 开启了安全认证的ServiceComb引擎专享版,通过微服务控制台提供了基于RBAC(Role-Based Access Control,基于角色的访问控制)的系统管理功能。权限与角色相关联,您可以使用关联了admin角色权限的账号创建新账号,根据实际业务需求把合适的角色同账号关联。使用该账号的用户则具有对该ServiceComb引擎的相应的访问和操作权限。 ServiceComb引擎专享版开启了安全认证之后,所有调用的API都需要先获取token才能调用,认证流程请参考服务中心RBAC说明。 开启了安全认证的ServiceComb引擎专享版,在使用安全认证前需要完成以下工作: 创建安全认证账号名和密码 配置微服务安全认证的账号名和密码 框架支持安全认证功能的版本要求:Spring Cloud需要集成Spring Cloud Huawei 1.6.1及以上版本,Java Chassis需要2.3.5及以上版本。 老版本未开启安全认证的ServiceComb引擎专享版,升级到新版本并开启安全认证的场景,请参考管理ServiceComb引擎专享版安全认证。 父主题: 使用安全认证
  • 什么是Mesher Mesher是Service Mesh的一个具体的实现,是一个轻量的代理服务以Sidecar的方式与微服务一起运行。 Service Mesh是由William Morgan定义: Service Mesh是一个基础设施层,用于处理服务间通信。云原生应用有着复杂的服务拓扑,Service Mesh保证请求可以在这些拓扑中可靠地传输。在实际应用当中,Service Mesh通常是由一系列轻量级的网络代理组成的,它们与应用程序部署在一起,但应用程序不需要知道它们的存在。 随着云原生应用的崛起,Service Mesh逐渐成为一个独立的基础设施层。在云原生模型里,一个应用可以由数百个服务组成,每个服务可能有数千个实例,而每个实例可能会持续地发生变化。服务间通信不仅异常复杂,而且也是运行时行为的基础。管理好服务间通信对于保证端到端的性能和可靠性来说是非常重要的。 Service Mesh实际上就是处于TCP/IP之上的一个抽象层,假设底层的L3/L4网络能够点对点地传输字节(同时,也假设网络环境是不可靠的,所以Service Mesh必须具备处理网络故障的能力)。 从某种程度上说,Service Mesh有点类似TCP/IP。TCP对网络端点间传输字节的机制进行了抽象,而Service Mesh则是对服务节点间请求的路由机制进行了抽象。Service Mesh不关心消息体是什么,也不关心它们是如何编码的。应用程序的目标是“将某些东西从A传送到B”,而Service Mesh所要做的就是实现这个目标,并处理传送过程中可能出现的任何故障。 与TCP不同的是,Service Mesh有着更高的目标:为应用运行时提供统一的、应用层面的可见性和可控性。Service Mesh将服务间通信从底层的基础设施中分离出来,让它成为整个生态系统的一等公民——它因此可以被监控、托管和控制。
  • 操作步骤 修改微服务调用的URL,将URL中的${IP:Port}修改为服务名。 例如调用一个名为“provider”的微服务,API为“/hello”,则调用URL通常为:http://${IP:Port}/hello。例如: http://127.0.0.1:80/hello 您需要将调用的URL修改为: http://provider/hello 在ServiceStage平台部署组件,绑定ServiceComb引擎,将组件接入ServiceComb引擎,可在“高级设置”中选择已绑定的ServiceComb引擎,单击,输入应用进程的监听端口号,开启多语言接入Mesher服务网格,具体操作请参考创建并部署组件 。 组件部署环境为容器场景时,支持开启多语言接入Mesher服务网格;当部署环境为虚拟机场景时,不支持开启多语言接入Mesher服务网格。
  • 本地开发工具说明 本地开发工具包含了ServiceComb引擎2.x的本地轻量化版本,提供用于本地开发的轻量服务中心、配置中心,和简单易用的界面。 使用说明请参考本地开发工具压缩包中的README.md文件。 表1 本地引擎资源配额限制 功能 资源 最大配额 微服务管理 微服务版本数量(个) 10,000 单个微服务实例数量(个) 100 单个微服务契约数量(个) 500 配置管理 配置数量(个) 600 表2 本地轻量化ServiceComb引擎版本说明 版本 对应ServiceComb引擎版本 发行时间 获取路径 2.1.8 2.x 2023.9.25 Local- CS E-2.1.8-windows-amd64.zip Local-CSE-2.1.8-linux-amd64.zip Local-CSE-2.1.8-linux-arm64.zip Local-CSE-2.1.8-darwin-amd64.zip Local-CSE-2.1.8-darwin-arm64.zip 本地轻量化ServiceComb引擎仅作为本地开发调测,请勿用于商业使用。 本地轻量化ServiceComb引擎支持在Windows、Linux和Mac系统下使用。当运行环境为Mac系统时,需要将下载的Mac包放在“Users/xxx”目录下运行,其中xxx为当前登录系统的用户名。 父主题: 附录
  • Spring Cloud Huawei历史版本及版本修复问题 spring-cloud-huawei版本 主要修复问题 1.11.6-2023.0.x snakeyaml、jackson、guava版本安全漏洞。 路由开关关闭后,微服务应用启动失败,找不到nacos/servicecomb适配实现类。 当前服务配置中心配置未变化,发布配置刷新事件,请求过程中可能出现池化配置找不到。 1.11.6-2022.0.x 1.11.6-2021.0.x 1.11.4-2022.0.x RBAC安全认证未开启,框架依然会监听认证过期事件。 gateway/webflux路由无法获取请求头设置信息。 微服务API安全认证开启后,规则未设置,所有请求不通过。 服务端熔断规则不生效。 1.11.4-2021.0.x 1.11.3-2022.0.x 指定服务名情况下,实例隔离策略不生效。 1.11.3-2021.0.x 1.11.2-2022.0.x API安全认证未设置黑、白名单策略时,空指针异常。 服务端、客户端同时设置相同请求头,key不生效。 1.11.2-2021.0.x 1.11.0-2022.0.x trace上下文配置基于动态配置不生效。 1.11.0-2021.0.x 1.10.13-2021.0.x 同时调用多个服务情况下,降级不生效。 1.10.11-2021.0.x 实例隔离治理不生效。 1.10.9-2021.0.x 指定服务名设置重试策略不生效。 服务降级错误返回“null”字符串,修改为返回null。 1.10.8-2021.0.x 负载均衡规则不生效。 1.10.8-2020.0.x 1.10.7-2021.0.x 服务注册发现开关关闭,启动失败。 1.10.7-2020.0.x 1.10.6-2021.0.x 监控信息中缺少环境信息。 1.10.6-2020.0.x 1.10.5-2021.0.x 重试次数太多导致请求长时间无响应。 1.10.5-2020.0.x 1.10.4-2021.0.x identifierRateLimiting限流上下文获取失败。 1.10.4-2020.0.x 1.10.3-2021.0.x 治理配置第一次变化时不生效。 1.10.3-2020.0.x 1.10.2-2021.0.x 调整默认配置刷新时间为15s。 实例隔离过滤器空指针异常。 1.10.2-2020.0.x 1.10.1-2021.0.x 非客户端请求上下文空指针异常。 路由客户端编译请求头失败。 灰度版本策略生效。 ClientRequest非RequestData类型下转化异常。 1.10.1-2020.0.x 1.10.0-2021.0.x 服务删除、重启无法刷新ribbon缓存,导致请求到不可用服务,报no host to route。 动态配置下灰度发布配置规则,修改配置规则不生效。 启动类application在业务包外层启动失败。 网关最大重试次数不生效。 1.10.0-2020.0.x 1.9.1-2020.0.x 某些场景下,启动类ags属性加载不正确。 网关配置最大重试次数无限重试。 灰度动态配置不生效。 1.9.0-2020.0.x instance.healthCheck.mode值为pull,自定义配置healthCheckInterval健康检查时间不生效。 1.8.0-2020.0.x 非long polling模式下大量配置查询任务,触发查询任务无间隔时间。 cse操作页面对服务实例下线后,服务实例调用依然正常。 management.server.port和server.port两个端口不一致,启动报错。 gateway查询到不同环境的实例。 1.7.0-2020.0.x webmvc与路由结合导致gateway启动失败。 gateway无法实现基于服务发现的路由定义功能。 gateway无法跨应用服务发现。 1.6.1-2020.0.x 说明: 存在重大问题,不建议使用: 非常频繁地查询配置中心。 查询到错误的配置。 1.9.4-Hoxton 当前服务配置中心配置未变化,发布配置刷新事件,请求过程中可能出现池化配置找不到。 1.9.3-Hoxton 服务删除、重启无法刷新ribbon缓存,导致请求到不可用服务,路由不到可用服务。 1.9.2-Hoxton 服务端删除实例后重新注册实例,客户端选择错误的服务端实例。 1.9.1-Hoxton 某些场景下,启动类ags属性加载不正确。 网关配置最大重试次数无限重试。 灰度动态配置不生效。 1.9.0-Hoxton instance.healthCheck.mode值为pull,自定义配置healthCheckInterval健康检查时间不生效。 1.8.0-Hoxton 非long polling模式下大量配置查询任务,触发查询任务无间隔时间。 cse操作页面对服务实例下线后,服务实例调用依然正常。 management.server.port和server.port两个端口不一致启动报错。 gateway查询到不同环境的实例。 1.7.0-Hoxton webmvc与路由结合导致gateway启动失败。 gateway无法实现基于服务发现的路由定义功能。 gateway无法跨应用服务发现。 1.6.0-Hoxton SDK针对401、403错误码,对引擎做出重试请求。 gateway默认路由规则不生效。 无法跨应用调用。 1.5.9-Hoxton RBAC鉴权功能不生效。 灰度路由时无法获取到微服务最新版本。 某些JDK版本不支持swagger循环依赖。 1.5.8-Hoxton gateway服务发现中选择错误实例。 实例状态为空时调用异常。 1.5.6-Hoxton AK/SK配置后不生效,鉴权失败。 server.env配置不生效,全部为空。 配置中心治理配置项删除后仍然能使用。 滑动窗口熔断配置属性不生效。 注册中心开启watch模式后,空指针异常。 读取环境变量PAAS_CSE_SC_ENDPOINT时只能读取第一个地址,无法读取第二个。 1.5.0-Hoxton 错误的治理规则导致空指针异常。 AK/SK未配置时启动,报空指针异常。 服务启动后首次并发请求,限流策略不生效。 governance治理选择错误服务导致请求异常。 当环境配置为production时,契约不变,服务重启会失败。 1.6.4-Greenwich 当前服务配置中心配置未变化,发布配置刷新事件,请求过程中可能出现池化配置找不到。 1.6.3-Greenwich 服务删除、重启无法刷新ribbon缓存,导致请求到不可用服务,路由不到可用服务。 1.6.1-Greenwich gateway跨应用服务发现异常。 1.6.0-Greenwich SDK针对401、403错误码,对引擎做出重试请求。 gateway路由规则不生效。 灰度路由时无法获取到微服务最新版本。 AK/SK配置不生效。 server.env配置不生效,全部为空。 Servicecenter在watch模式下启动失败。 读取环境变量PAAS_CSE_SC_ENDPOINT时只能读取第一个地址,无法读取第二个。 不支持跨应用调用。 1.5.0-Greenwich 错误的治理规则导致空指针异常。 AK/SK未配置时空指针异常。 服务启动后首次并发请求,限流策略不生效。 governance服务转发错误。 环境是production时,重复注册契约导致启动失败。 v1.3.3-Greenwich 注册中心监听不生效。 1.6.1-Finchley 服务启动后第一次并发,调用随机失败。 微服务跨应用调用失败。 1.6.0-Finchley SDK针对401、403错误码,对引擎做出重试请求。 gateway路由规则不生效。 灰度路由时无法获取到微服务最新版本。 AK/SK配置不生效。 server.env配置不生效,全部为空。 Servicecenter在watch模式下启动失败。 读取环境变量PAAS_CSE_SC_ENDPOINT时只能读取第一个地址,无法读取第二个。 不支持跨应用调用。 1.5.1-Finchley 配置中心治理配置删除后仍然可以使用。 v1.3.9 说明: 存在重大问题,不推荐使用。 governance存在服务转发严重错误。 v1.3.8 说明: 存在重大问题,不推荐使用。 governance存在服务转发严重错误。 v1.3.4 注册线程池无法正确关闭并导致泄漏。 actuator开启后微服务注册失败。 某些场景心跳次数过多。 v1.3.3 websocket在wss协议请求失败。 注册中心watch不生效。 v1.3.2 当环境设置为production时契约注册失败。 注册中心url未设置时随机选择地址失败。 注册中心配置域名时watch异常。 v1.2.0 从ServiceStage读取默认的ak/sk配置时,初始化大量对象,导致内存泄漏。 v1.1.0 heartbeat信息日志过多。 微服务间SSL调用不生效。 url包含空格时请求异常。 v1.0.0 某些场景无法自动服务发现。 v0.0.3 服务发现down状态实例。 配置的路径过长。 微服务连接本地CSE引擎失败。
  • Spring Cloud微服务组件配置安全认证账号名和密码 配置文件配置方式 为微服务的“bootstrap.yml”文件增加以下配置,若已配置请忽略。 spring: cloud: servicecomb: credentials: account: name: test #结合用户实际值配置 password: mima #结合用户实际值配置 cipher: default 用户密码password默认为明文存储,无法保证安全。建议您对密码进行加密存储,请参考自定义实现password的加密存储算法。 环境变量注入方式 为微服务添加如表1所示环境变量。 添加环境变量,请参考管理应用环境变量。 表1 环境变量 环境变量 说明 spring_cloud_servicecomb_credentials_account_name 结合用户实际值配置。 spring_cloud_servicecomb_credentials_account_password 结合用户实际值配置。 说明: 用户密码password默认为明文存储,无法保证安全。建议您对密码进行加密存储,请参考自定义实现password的加密存储算法。
  • Java Chassis微服务组件配置安全认证账号名和密码 配置文件配置方式 为微服务的“microservice.yml”文件增加以下配置,若已配置请忽略。 servicecomb: credentials: rbac.enabled: true #结合用户实际值配置 cipher: default account: name: test #结合用户实际配置 password: mima #结合用户实际配置 cipher: default 用户密码password默认为明文存储,无法保证安全。建议您对密码进行加密存储,请参考配置安全认证参数。 环境变量注入方式 为微服务添加如表2所示环境变量。 添加环境变量,请参考管理应用环境变量。 表2 环境变量 环境变量 说明 servicecomb_credentials_rbac_enabled true:开启安全认证。 false:不开启安全认证。 servicecomb_credentials_account_name 结合用户实际值配置。 servicecomb_credentials_account_password 结合用户实际值配置。 说明: 用户密码password默认为明文存储,无法保证安全。建议您对密码进行加密存储,请参考配置安全认证参数。
  • 常用环境变量说明 通过ServiceStage管理环境和部署应用,能够简化用户的配置。ServiceStage会设置一些环境变量,供应用使用,常用的环境变量包括下表所示内容: 表1 常用环境变量 环境变量名称 含义 PAAS_CSE_SC_ENDPOINT ServiceComb引擎注册中心地址信息。 PAAS_CSE_CC_ENDPOINT ServiceComb引擎配置中心地址信息。 PAAS_PROJECT_NAME 项目名称。 CAS_APPLICATION_NAME ServiceStage的应用名称。 CAS_COMPONENT_NAME ServiceStage的组件名称。 CAS_INSTANCE_VERSION ServiceStage的部署版本号。 您可以结合不同微服务开发框架的机制,比如Spring Cloud提供的Place Holder机制、Java Chassis提供的“mapping.yaml”机制等来合理使用这些变量,减少部署需要手工输入的内容。 ServiceStage创建应用过程中,可以绑定中间件(如DCS、RDS)。应用绑定的中间件配置信息可以通过以下环境变量获取。
  • 隔离仓 隔离是一种异常检测机制,常用的检测方法是请求超时、流量过大等。一般的设置参数包括超时时间、同时并发请求个数等。 Java Chassis的隔离作用于微服务消费者,需要微服务应用集成隔离模块,启用bizkeeper-consumer处理链。 配置如下: servicecomb: handler: chain: Consumer: default: bizkeeper-consumer isolation: Consumer: timeout: enabled: true #是否启用超时检测 timeoutInMilliseconds: 30000 #超时时间阈值 Spring Cloud Huawei的隔离策略同熔断一致,配置示例请参考熔断中相关内容。 Spring Cloud应用通过挂载Sermant的flowcontrol流控插件使用隔离仓能力, 只需要通过配置开启具体的隔离仓策略。 配置项:servicecomb.bulkhead.${scene名称} 作用范围:自定义标签group:service=flowcontrol 配置内容: # 最大并发数超过5,且新的请求等待10S,还未获取资源,则触发隔离异常maxConcurrentCalls: 5maxWaitDuration: 10S 隔离仓规则的配置项由前缀servicecomb.bulkhead和自定义场景名称${scene名称}组成,流量标记规则和隔离仓规则的配置项的自定义场景名称需保持一致,才能对匹配的流量执行隔离仓策略。 父主题: 使用服务治理
  • 开发微服务应用 如您已经完成了微服务应用的开发,请跳过本章节。 开源社区提供了丰富的开发资料和帮助渠道帮助您使用微服务开发框架。如您需深入了解具体微服务框架下的微服务应用开发,请参考本章节给出的参考资料链接。 体验ServiceComb引擎最快捷的方式是使用“ServiceComb引擎推荐示例”里面的例子。下载示例,修改配置文件中的ServiceComb引擎地址,AK/SK信息,在本地运行例子,这些例子可以注册到ServiceComb引擎。 Spring Cloud 源码仓库:https://github.com/spring-cloud 问题咨询:参考源码仓库的各个代码仓库下的issues。 开发指南:https://spring.io/projects/spring-cloud Spring Cloud Huawei项目:https://github.com/huaweicloud/spring-cloud-huawei ServiceComb引擎推荐示例:https://github.com/huaweicloud/spring-cloud-huawei-samples/tree/master/basic Java Chassis 源码仓库:https://github.com/apache/servicecomb-java-chassis 问题咨询:https://github.com/apache/servicecomb-java-chassis/issues 开发指南:https://servicecomb.apache.org/references/java-chassis/zh_CN/ ServiceComb引擎推荐示例:https://github.com/apache/servicecomb-samples/tree/master/basic CSE使用的源码存放在maven中央仓,若您使用非maven中央仓,请联系您所使用的中央仓的管理员将maven中央仓同步到该中央仓。
  • 开发流程说明 开发微服务应用 如果您已经完成了微服务应用的开发,可以跳过本流程,进入准备环境。 进行微服务应用开发,首先需要进行技术选型。技术选型是一个复杂的问题,技术决策者需要考虑使用的技术是否容易被团队成员掌握,技术能否满足项目对于功能、性能、可靠性方面的要求,还需要考虑商业服务等多方面的因素。本文档不探讨技术选型,假设技术团队已经选择了适合自己的开发框架。大部分技术团队都会选择开源框架来构建业务。 开发微服务应用的具体内容,请参考开发微服务应用。 使用Spring Cloud,通常会使用下面的技术进行本地微服务开发: 使用Java Chassis,通常会使用下面的技术进行本地微服务开发: 准备环境 创建云上环境,以支持ServiceComb引擎接入调试、云上应用部署和使用ServiceComb引擎功能。一般情况下,会创建一个测试环境和一个生产环境。通过ServiceStage,能够非常方便地管理云上环境,详细内容请参考准备环境。 对接微服务应用 用于微服务应用对接ServiceComb引擎,涉及到对已经开发好的应用的配置文件、构建脚本的修改。修改完成后,需要对应用重新编译、打包,通过ServiceStage将应用包部署到ServiceComb引擎,详细内容请参考对接微服务应用。 部署微服务应用 开发完成的微服务应用,通过ServiceStage部署到ServiceComb引擎,详细内容请参考部署微服务应用。 使用ServiceComb引擎功能 对于持续发展的应用系统,都会持续完善和迭代,每个迭代可能需要对微服务应用进行更新升级,需要使用更多的ServiceComb引擎功能。持续迭代的功能演进,会重复上面的应用开发、编译、打包和部署环节。详细内容请参考使用ServiceComb引擎功能。
  • 常用概念 应用:可以将应用理解为完成某项完整业务场景的软件系统。应用一般由多个微服务组成,应用里面的微服务能够相互发现和调用。 微服务:完成某项具体业务功能的软件系统。微服务是独立开发、部署的单元。 微服务实例:将微服务采用部署系统部署到运行环境,就产生了实例。可以将实例理解为一个进程,一个微服务可以部署若干实例。 微服务环境:服务中心建立的一个逻辑概念,比如development、production等。不同环境里面的微服务实例逻辑隔离、无法相互发现和调用。 父主题: 概述
  • 注意事项 短信发送成功后,平台收到状态报告,会实时推送状态报告给用户,最迟不超过72小时。 平台推送汇聚后的状态报告,状态报告存在一定时延。 短信平台批量推送状态报告,单次最多推送50条。 若“statusCallback”字段已设置,则优先使用该字段的取值作为短信状态报告的回调地址。 若“statusCallback”字段未设置,则使用应用中配置的批量接收状态报告地址。 若“statusCallback”字段未设置且未在应用端配置批量接收状态报告地址,则用户无法接收短信平台主动发送的状态报告。
  • 请求示例 POST /batchReport HTTP/1.1Host: 205.145.111.168:9330Content-Type: application/JSON;charset=UTF-8Authorization: SDK-HMAC-SHA256 Access=exampleAk,SignedHeaders=connection;content-length;content-type;host;x-sdk-date,Signature=765a365f3851fd1c96011a82b893266fb7b3e79b3002526c43199c97e61bb88bConnection: closePooltype: approxyOmpsid: 7f540777fe4b40dfb3c21d10f48781e3TerminalIP: ******TrcModule: APUserTrace: applicationTraceHandle: DMZ_818405{"statusReportList":[{"sequence":"1","total":"1","updateTime":"2023-04-18T07:26:00Z","source":"2","smsMsgId":"f6dcba15-ced9-45f7-9f5e-af82328c5253_1188602","status":"DELIVRD"},{"sequence":"1","total":"1","updateTime":"2023-04-18T07:26:00Z","source":"2","smsMsgId":"f6dcba15-ced9-45f7-9f5e-af82328c5253_123456","status":"DELIVRD"}]}
  • 接口类型 表1 接口类型说明 请求方法 POST 访问URI 用户在应用中配置的批量接收状态报告地址。 通信协议 HTTPS/HTTP 回调接口使用HTTPS协议时,服务端需支持TLS1.2,加密套件需支持 TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384中的一种或多种。
共100000条