云服务器内容精选

  • 开发微服务应用 如您已经完成了微服务应用的开发,请跳过本章节。 开源社区提供了丰富的开发资料和帮助渠道帮助您使用微服务开发框架。如您需深入了解具体微服务框架下的微服务应用开发,请参考本章节给出的参考资料链接。 体验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
  • 前提条件 已基于Java Chassis开发好了微服务应用。 Java Chass框架下的微服务应用开发,请参考https://servicecomb.apache.org/references/java-chassis/zh_CN/。 版本要求:请参见微服务开发框架版本要求。 本文假设您的项目使用了maven管理打包,您熟悉maven的依赖管理机制,能够正确的修改“pom.xml”文件中的dependency management和dependency。 Java Chassis支持和不同的技术进行组合使用,配置文件的名称和实际使用的技术有关。如果您采用Spring方式使用Java Chassis,配置文件的名称一般为“microservice.yaml”,如果您采用Spring Boot方式使用Java Chassis, 配置文件名称一般为“application.yaml”。本文统一使用“microservice.yaml”表示配置文件,请结合实际项目进行区分。
  • 前提条件 已基于Java Chassis开发好了微服务应用。 Java Chass框架下的微服务应用开发,请参考https://servicecomb.apache.org/references/java-chassis/zh_CN/。 版本要求:请参见ServiceComb引擎微服务开发框架版本要求。 本文假设您的项目使用了maven管理打包,您熟悉maven的依赖管理机制,能够正确的修改“pom.xml”文件中的dependency management和dependency。 Java Chassis支持和不同的技术进行组合使用,配置文件的名称和实际使用的技术有关。如果您采用Spring方式使用Java Chassis,配置文件的名称一般为“microservice.yaml”,如果您采用Spring Boot方式使用Java Chassis, 配置文件名称一般为“application.yaml”。本文统一使用“microservice.yaml”表示配置文件,请结合实际项目进行区分。
  • 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_ CS E_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,通常会使用下面的技术进行本地微服务开发: 使用Java Chassis,通常会使用下面的技术进行本地微服务开发: 准备环境 创建云上环境,以支持ServiceComb引擎接入调试、云上应用部署和使用ServiceComb引擎功能。一般情况下,会创建一个测试环境和一个生产环境。通过ServiceStage,能够非常方便的管理云上环境,详细内容请参考准备环境。 对接微服务应用 用于微服务应用对接ServiceComb引擎,涉及到对已经开发好的应用的配置文件、构建脚本的修改。修改完成后,需要对应用重新编译、打包,通过ServiceStage将应用包部署到ServiceComb引擎,详细内容请参考对接微服务应用。 部署微服务应用 开发完成的微服务应用,通过ServiceStage部署到ServiceComb引擎,详细内容请参考部署微服务应用。 使用ServiceComb引擎功能 对于持续发展的应用系统,都会持续完善和迭代,每个迭代可能需要对微服务应用进行更新升级,需要使用更多的ServiceComb引擎功能。持续迭代的功能演进,会重复上面的应用开发、编译、打包和部署环节。详细内容请参考使用ServiceComb引擎功能。
  • 开发能力要求 本文档的主要目的就是说明这些开源微服务开发框架如何接入和使用ServiceComb引擎的功能,假设您已经熟悉和掌握如下开发能力: 使用Java语言进行微服务开发。假设您已经基于一种ServiceStage支持的微服务开发框架开发了应用系统,并期望将应用系统托管在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将服务间通信从底层的基础设施中分离出来,让它成为整个生态系统的一等公民——它因此可以被监控、托管和控制。
  • 计费示例 假设您在2023/03/08 15:50:04购买了一个包年/包月ServiceComb引擎专享版(实例规格:100个实例),计费项为实例规格。购买时长为一个月,并在到期前手动续费1个月,则: 第一个计费周期为:2023/03/08 15:50:04 ~ 2023/04/08 23:59:59 第二个计费周期为:2023/04/08 23:59:59 ~ 2023/05/08 23:59:59 您需要为每个计费周期预先付费,假设ServiceComb引擎实例数为100的规格的包月单价费用为3,000元,那么根据计费公式如表2所示,你需要支付两个计费周期的费用:6,000元。 表2 计费公式 资源类型 计费公式 资源单价 ServiceComb引擎专享版 实例规格包月单价 * 购买时长 请参见ServiceComb专享版引擎价格详情。 该示例中的价格仅供参考,实际计算请以价格计算器中的价格为准。
  • 计费周期 包年/包月ServiceComb引擎专享版的计费周期是根据您购买的时长来确定的(以GMT+8:00时间为准)。一个计费周期的起点是您开通或续费资源的时间(精确到秒),终点则是到期日的23:59:59。 例如,如果您在2023/03/08 15:50:04购买了一个时长为一个月的ServiceComb引擎专享版,那么其计费周期为:2023/03/08 15:50:04 ~ 2023/04/08 23:59:59。
  • 到期后影响 图2描述了包年/包月ServiceComb引擎专享版各个阶段的状态。购买后,在计费周期内资源正常运行,此阶段为有效期;资源到期而未续费时,将陆续进入宽限期和保留期。 图2 包年/包月ServiceComb引擎专享版生命周期 到期预警 包年/包月ServiceComb引擎专享版在到期前第7天内,系统将向用户推送到期预警消息。预警消息将通过邮件、短信和站内信的方式通知到华为云账号的创建者。 到期后影响 当您的包年/包月ServiceComb引擎专享版到期未续费,首先会进入宽限期。宽限期内您可正常使用已购买和开通的资源,在宽限期内产生的相关费用将在您续费时一并收取(抵扣续费周期时长)。 如果您在宽限期内仍未续费包年/包月ServiceComb引擎专享版,那么就会进入保留期,引擎状态变为“已冻结”,您将无法对处于保留期的包年/包月引擎执行任何操作。 保留期到期后,若包年/包月ServiceComb引擎专享版仍未续费,ServiceComb实例中的数据将被删除且无法恢复。 华为云根据客户等级定义了不同客户的宽限期和保留期时长。 关于续费的详细介绍请参见续费概述。
  • 变更规格后对计费的影响 当前包年/包月ServiceComb引擎专享版的规格不满足您的业务需要时,您可以在微服务引擎控制台发起变更规格操作,ServiceComb引擎专享版只支持升配,变更时系统将按照如下规则为您计算变更费用: 规格升配:新配置价格高于老配置价格,此时您需要支付新老配置的差价。 现在以升级ServiceComb引擎实例规格且无任何优惠的场景为例,此处计算价格仅作示例用,非官网实际价格,实际价格请参见价格计算器。假设您在2023/04/08购买了一个实例数为100规格,计费模式为包年/包月的ServiceComb引擎,购买时长为1个月,计划在2023/04/18变更规格为实例数为200。旧规格价格为3,000元/月,新规格价格为6,000元/月。计算公式如下: 升配费用=新规格价格*剩余周期-旧规格价格*剩余周期 公式中的剩余周期为每个自然月的剩余天数/对应自然月的最大天数。本示例中,剩余周期=12(4月份剩余天数)/ 30(4月份最大天数)+ 8(5月份剩余天数)/ 31(5月份最大天数)=0.6581,代入公式可得升配费用=6,000*0.6581-3,000*0.6581=1,974.30(元) 更多信息请参见变更资源规格费用说明。
  • 适用计费项 根据需要托管的微服务实例数量总额选择ServiceComb引擎的规格,系统会根据选择的引擎规格计费,以下计费项支持包年/包月。 表1 适用计费项 计费项 说明 ServiceComb引擎实例规格 根据您选择的ServiceComb引擎实例规格计费。ServiceComb引擎实例规格当前支持微服务实例数为100、200、500、2000。各规格实例包月单价请参见ServiceComb引擎专享版价格详情。 购买ServiceComb引擎包年/包月时,支持购买1~9个月或者1年,购买时长为1年时,可享受实付10个月的优惠。 假设您计划购买微服务实例数为100的ServiceComb引擎专享版,选择的购买时长为1个月,则在购买ServiceComb引擎页面底部,您将看到所需费用,如图1所示。 图中价格仅供参考,实际计算请以ServiceComb引擎专享版价格详情中的价格为准。 图1 配置费用示例
  • 变更规格后对计费的影响 当前包年/包月注册配置中心的规格不满足您的业务需要时,您可以在微服务引擎控制台发起变更规格操作,注册配置中心只支持升配,变更时系统将按照如下规则为您计算变更费用: 规格升配:新配置价格高于老配置价格,此时您需要支付新老配置的差价。 现在以升级注册配置中心实例规格且无任何优惠的场景为例,此处计算价格仅作示例用,非官网实际价格,实际价格请参考价格详情。假设您在2023/04/08购买了一个实例数为500规格,计费模式为包年/包月的注册配置中心,购买时长为1个月,计划在2023/04/18变更规格为实例数为1000。旧规格价格为640.00元/月,新规格价格为1,280.00元/月。计算公式如下: 升配费用=新规格价格*剩余周期-旧规格价格*剩余周期 公式中的剩余周期为每个自然月的剩余天数/对应自然月的最大天数。本示例中,剩余周期=12(4月份剩余天数)/ 30(4月份最大天数)+ 8(5月份剩余天数)/ 31(5月份最大天数)=0.6581,代入公式可得升配费用=1,280.00*0.6581-640.00*0.6581=421.18(元)。 更多信息请参见变更资源规格费用说明。
  • 到期后影响 图1描述了包年/包月注册配置中心各个阶段的状态。购买后,在计费周期内资源正常运行,此阶段为有效期;资源到期而未续费时,将陆续进入宽限期和保留期。 图1 包年/包月注册配置中心生命周期 到期预警 包年/包月注册配置中心在到期前第7天内,系统将向用户推送到期预警消息。预警消息将通过邮件、短信和站内信的方式通知到华为云账号的创建者。 到期后影响 当您的包年/包月注册配置中心到期未续费,首先会进入宽限期。宽限期内您可正常使用已购买和开通的资源,在宽限期内产生的相关费用将在您续费时一并收取(抵扣续费周期时长)。 如果您在宽限期内仍未续费,那么就会进入保留期,引擎状态变为“已冻结”,您将无法对处于保留期的包年/包月引擎执行任何操作。 保留期到期后,若包年/包月注册配置中心仍未续费,注册配置中心中的数据将被删除且无法恢复。 华为云根据客户等级定义了不同客户的宽限期和保留期时长。 关于续费的详细介绍请参见续费概述。
  • 计费示例 假设您在2023/03/08 15:50:04购买了一个包年/包月注册配置中心Nacos引擎(实例规格:500个实例),计费项为注册配置中心Nacos实例和注册配置中心Nacos容量单元(50微服务实例),购买时长为一个月,并在到期前手动续费1个月,则: 第一个计费周期为:2023/03/08 15:50:04 ~ 2023/04/08 23:59:59 第二个计费周期为:2023/04/08 23:59:59 ~ 2023/05/08 23:59:59 您需要为每个计费周期预先付费,那么根据计费公式如表2所示,你需要支付两个计费周期的费用:1,670.00元。 其计费示例为: 注册配置中心Nacos实例费用:195元/月 * 2=390.00元。 注册配置中心Nacos容量费用:64元/个/月 * 10个容量单元(1个容量单元等于50微服务实例)* 2=1,280.00元。 总费用:1,670.00/月。 表2 计费公式 资源类型 计费公式 单价 注册配置中心Nacos实例 单价 * 购买时长 请参见价格计算器中Nacos价格。 注册配置中心Nacos容量单元(50微服务实例) 容量单元单价 * 10 * 购买时长 请参见价格计算器中Nacos价格。 该示例中的价格仅供参考,实际计算请以价格计算器中的价格为准。