产品介绍 - developer-res-cbc-cn.obs.cn-north-1 ...€¦ · 建,需要集成验证Hystrix、...

26
微服务引擎 产品介绍 文档版本 01 发布日期 2018-04-09

Transcript of 产品介绍 - developer-res-cbc-cn.obs.cn-north-1 ...€¦ · 建,需要集成验证Hystrix、...

Page 1: 产品介绍 - developer-res-cbc-cn.obs.cn-north-1 ...€¦ · 建,需要集成验证Hystrix、 Ribbon、Zipkin、Prometheus等 大量三方组件,门槛高,学习 周期长

微服务引擎

产品介绍

文档版本 01

发布日期 2018-04-09

Page 2: 产品介绍 - developer-res-cbc-cn.obs.cn-north-1 ...€¦ · 建,需要集成验证Hystrix、 Ribbon、Zipkin、Prometheus等 大量三方组件,门槛高,学习 周期长

目 录

1 产品概述........................................................................................................................................... 1

2 产品功能........................................................................................................................................... 2

3 产品优势........................................................................................................................................... 3

4 应用场景........................................................................................................................................... 5

5 产品术语........................................................................................................................................... 6

6 版本说明......................................................................................................................................... 106.1 LocalServiceCenter...................................................................................................................................................... 106.2 Java SDK...................................................................................................................................................................... 116.3 Go SDK........................................................................................................................................................................ 186.4 Service Mesh................................................................................................................................................................ 206.5 Key Generation Tool.....................................................................................................................................................236.6 Local CSE.....................................................................................................................................................................24

微服务引擎产品介绍 目 录

文档版本 01 (2018-04-09) ii

Page 3: 产品介绍 - developer-res-cbc-cn.obs.cn-north-1 ...€¦ · 建,需要集成验证Hystrix、 Ribbon、Zipkin、Prometheus等 大量三方组件,门槛高,学习 周期长

1 产品概述

微服务引擎(Cloud Service Engine)是企业级微服务应用管理平台,包含微服务SDK、服务注册、配置和治理中心,帮助用户实现微服务应用的快速构建、实时监控和高可用保障。兼容主流开源生态,不绑定特定开发框架和平台,支持已有应用业务代码零修改接入。

微服务引擎产品介绍 1 产品概述

文档版本 01 (2018-04-09) 1

Page 4: 产品介绍 - developer-res-cbc-cn.obs.cn-north-1 ...€¦ · 建,需要集成验证Hystrix、 Ribbon、Zipkin、Prometheus等 大量三方组件,门槛高,学习 周期长

2 产品功能

l 微服务开发框架

打包了微服务注册、发现、通信和治理等基础能力,开箱即用。

l 微服务治理中心

提供微服务负载均衡、限流、降级、熔断、容错等治理能力。

l 微服务安全管控

提供认证鉴权、黑白名单等能力,保障微服务访问安全。

l 微服务灰度发布

支持使用接口任意参数(例如用户群组、用户类别、用户所属区域等等)定义微服务灰度发布规则。

l 分布式事务管理

提供最终一致性(TCC)和强一致性(WSAT)事务管理框架。

l 非侵入式微服务接入

提供Service Mesh服务,可实现非侵入式接入已有微服务。

l 统一配置中心

支持微服务配置项的发布、变更和通知。

l 微服务仪表盘

提供微服务实例和接口级吞吐量、时延和成功率的实时监控仪表盘。

微服务引擎产品介绍 2 产品功能

文档版本 01 (2018-04-09) 2

Page 5: 产品介绍 - developer-res-cbc-cn.obs.cn-north-1 ...€¦ · 建,需要集成验证Hystrix、 Ribbon、Zipkin、Prometheus等 大量三方组件,门槛高,学习 周期长

3 产品优势

对比项 华为云微服务引擎 基于开源Spring Cloud自建

管理界面 提供一站式微服务管理控制台,包含服务目录、服务治理、服务配置、事务看板及新服务创建等简单易用的Web操作界面

需自行开发UI控制台,代码量2万多行

开发语言 支持JAVA、Go、PHP、.NET、Python、NodeJS及其他多种主流开发语言

只支持JAVA

通信协议 REST/RPC REST

Service Mesh 提供商业版Mesher,支持一键式部署

易用性 只需导入华为微服务SDK即可享受各种服务治理和管控能力,包括负载均衡、故障隔离、容错机制、流量控制、调用链跟踪和服务状态仪表盘等,这些功能与业务代码完全解耦,用户只需专注业务开发

基于Spring Boot/Cloud组件构建,需要集成验证Hystrix、Ribbon、Zipkin、Prometheus等大量三方组件,门槛高,学习周期长

服务注册 提供了对微服务静态元数据丰富的管理能力,例如支持应用>微服务>实例的层次关系管理、版本管理、tag管理、灰度发布以及服务拓扑,同时提供了对大规模企业级微服务管理

提供Eureka组件,需自行开发封装成服务使用,仅是管理动态路由数据

动态配置 提供多维数据建模的方式组织配置信息,对于配置信息的描述能力更强,扩展能力更好。另外同时支持了push和pull的配置变更通知方式,实时性更好

提供Spring Cloud Config组件,需自行开发封装成服务使用,配置描述能力弱,且实时性不好

微服务引擎产品介绍 3 产品优势

文档版本 01 (2018-04-09) 3

Page 6: 产品介绍 - developer-res-cbc-cn.obs.cn-north-1 ...€¦ · 建,需要集成验证Hystrix、 Ribbon、Zipkin、Prometheus等 大量三方组件,门槛高,学习 周期长

对比项 华为云微服务引擎 基于开源Spring Cloud自建

服务治理 支持更细粒度(接口级)的服务治理能力。并且实现了实例访问错误重试和隔离、多数据中心间服务发现的优先级等其他治理能力。另外,对于这些开源库提供的原生治理方式进行了妥善的封装,可以通过配置的方式进行使用而不必再进行编码

仅提供Hystrix等开源组件,需自行开发封装成服务使用,只支持服务粒度隔离

轻量级网关 支持Restful请求汇聚及转发,支持服务映射、请求解析、加密解密、鉴权等自定义能力,网关服务本身也可被治理

基于Zuul构建网关,性能是短板,治理能力需要业务集成大量三方件来实现

灰度发布 支持按权重和接口参数(例如用户群组或用户所属区域等等)定义微服务灰度发布规则

仪表盘 提供基于微服务>实例>接口多层次的应用级指标监控,如吞吐量、平均时延、请求等等

部署 即开即用(秒级) 需基于开源组件自行开发和部署服务中心、配置中心、治理中心以及控制台,费时费力

扩容 通过控制台自助式升降规模(秒级)

需要手工进行实例扩容,数据迁移等等

异地容灾 支持AZ基本高可靠 搭建难度大,技术要求高,需自行开发HA

日常运维 用户免运维,由华为运维团队提供如备份恢复、监控告警、版本升级、防爆机制、访问保护等日常运维措施

需自行负责如备份恢复、监控告警、版本升级、防爆机制、访问保护等日常运维措施

与华为云服务集成

目前已与华为云容器服务CCE、应用性能管理APM、应用运维管理AOM无缝连接,正在集成缓存服务DCS、消息服务DMS、数据库服务RDS等

自行搭建或对接华为云服务

微服务引擎产品介绍 3 产品优势

文档版本 01 (2018-04-09) 4

Page 7: 产品介绍 - developer-res-cbc-cn.obs.cn-north-1 ...€¦ · 建,需要集成验证Hystrix、 Ribbon、Zipkin、Prometheus等 大量三方组件,门槛高,学习 周期长

4 应用场景

新应用开发与治理

企业新应用基于微服务架构开发,或者已有应用改造成微服务,都可以使用CSE提供的多语言微服务SDK和管理控制台,实现一站式的开发与治理。

优势如下:

l 开箱即用

打包了微服务注册、发现、通信和治理等基础能力。

l 一站式治理

提供微服务负载均衡、限流、降级、熔断、容错等治理能力。

l 应用指标实时监控

接口级吞吐量、时延和成功率的实时监控。

遗留应用接入与治理

企业大量遗留应用上云,都做微服务改造成本会很高,基于Service Mesh方案可以实现零改造的应用管理接入,让遗留应用也能享受云上微服务治理能力。

优势如下:

l 零改造接入微服务

提供Service Mesh服务,实现非侵入式接入遗留应用。

l 兼容主流开源生态

兼容Spring Cloud主流开源社区,与业界生态能力互通。

l 支持多种开发语言

支持接入NodeJS、.NET等语言开发的应用。

微服务引擎产品介绍 4 应用场景

文档版本 01 (2018-04-09) 5

Page 8: 产品介绍 - developer-res-cbc-cn.obs.cn-north-1 ...€¦ · 建,需要集成验证Hystrix、 Ribbon、Zipkin、Prometheus等 大量三方组件,门槛高,学习 周期长

5 产品术语

表 5-1 微服务引擎术语表

中文 英文 缩略语 说明

灰度发布 Dark Launch - CSE支持两种灰度发布策略:

l 按照流量百分比的引流可以设定引流规则,设置不同占比的流量到特定的服务版本。

l 按照特定请求特征进行的引流根据请求头的特征设置引流规则,符合某些规则的流量进入特定的服务版本。

以上策略可保证服务的平滑演进。

AK/SK密钥 Access key/Secret key

AK/SK Access key/Secret key是一组密钥对,用于API的身份认证和访问控制。

应用 Application - l 应用代表一个软件应用的逻辑实体,表示一个有业务功能呈现给用户的计算机软件应用。

l 一个以微服务化架构构建的应用通常由多个微服务组成。

微服务引擎产品介绍 5 产品术语

文档版本 01 (2018-04-09) 6

Page 9: 产品介绍 - developer-res-cbc-cn.obs.cn-north-1 ...€¦ · 建,需要集成验证Hystrix、 Ribbon、Zipkin、Prometheus等 大量三方组件,门槛高,学习 周期长

中文 英文 缩略语 说明

熔断 Circuit Breaker - 微服务之间通常存在依赖关系,服务调用链路可能包含多个微服务,如果链路中一个或多个服务访问延迟过高,会导致入口服务的请求不断堆积,持续消耗更多的线程、io资源,最终由于资源累积使系统出现瓶颈,造成更多服务不可用,产生雪崩效应。

熔断机制就是针对上述场景设计的,当某个目标服务响应缓慢或者有大量超时情况发生时,熔断该服务的调用,对于后续调用请求,不再继续调用目标服务,直接返回,快速释放资源,等到该目标服务情况好转再恢复调用。

微服务引擎 Cloud ServiceEngine

CSE 微服务引擎,作为一个公有云服务,在开发层面提供一组工具和开发框架,方便进行本地的微服务开发,同时在云上提供一组支撑微服务运行和运维的基础服务,方便微服务在云上生产环境的部署和运维。

服务消费者 Consumer - 在微服务调用关系中处于调用发起方的服务。

分布式事务 DistributedTransaction

- 分布式事务是指事务的参与者、资源服务器以及事务管理器分别位于分布式系统的不同节点之上的事务。

CSE支持两种分布式事务方案:

l 基于TCC协议的最终一致性方案。

l 基于两阶段提交的强一致性方案。

容错 Fault Tolerance - 容错是消费者访问服务时出现异常的场景下的一种处理策略,出现异常后由服务框架自动选择新的服务路由进行调用。

身份及权限管理

Identity andAccessManagement

IAM 负责PaaS系统中管理层级、用户、角色、授权关系,用户的组织归性等信息的维护,并实施授权和授权检查。

微服务实例 Instance - 一个微服务的最小运行和部署单元,通常对应一个应用进程。

微服务引擎产品介绍 5 产品术语

文档版本 01 (2018-04-09) 7

Page 10: 产品介绍 - developer-res-cbc-cn.obs.cn-north-1 ...€¦ · 建,需要集成验证Hystrix、 Ribbon、Zipkin、Prometheus等 大量三方组件,门槛高,学习 周期长

中文 英文 缩略语 说明

独立软件供应商

IndependentSoftwareVendor

ISV 也叫独立软件开发商,补充业务提供商的一种。自己制作销售可运营的软件系统。该系统支持SAAS(Software-as-a-service)。ISV将软件运营系统部署到运营商的环境中后,可以发展自己的客户。

隔离 Isolation - 服务隔离是一种异常检测机制,常用的检测方法是请求超时、流量过大等。一般的设置参数包括超时时间、最大并发请求数等,当超过超时时间或最大并发请求数时,记录一次异常,并用于在熔断机制中计算错误率和错误请求数。

负载均衡 Load Balancing - 当应用访问一个具有多个实例的微服务时,会涉及到路由负载均衡。CSE提供基于Ribbon的负载均衡方案,可以通过配置文件配置负载均衡策略,支持随机、轮询、会话保持和基于响应时间的权值等多种负载均衡路由策略。

遗留系统 Legacy - 遗留系统是一个还在运行和使用,但已步入软件生命周期衰老期的软件系统。

微服务 Microservice - 微服务是一种轻量级SOA架构,通常用来描述广泛用于云应用、互联网应用的一种松耦合分布式架构。

服务提供者 Provider - 在微服务调用关系中处于被调用一方的服务。

限流 Rate Limiting - l 当资源成为瓶颈时,服务框架需要对消费者的访问请求做限流,启动流控保护机制。

l 在服务消费者端和提供者端均可进行流量控制。

l 在服务消费端,可以限制发往某个微服务提供者的请求频率;在服务提供端,可以限制每个微服务消费端发过来的请求频率,也可以根据服务提供端资源消耗情况确定总的请求频率限制,防止服务因资源耗尽而崩溃。

微服务引擎产品介绍 5 产品术语

文档版本 01 (2018-04-09) 8

Page 11: 产品介绍 - developer-res-cbc-cn.obs.cn-north-1 ...€¦ · 建,需要集成验证Hystrix、 Ribbon、Zipkin、Prometheus等 大量三方组件,门槛高,学习 周期长

中文 英文 缩略语 说明

降级 ServiceDegradation

- 服务降级主要包括屏蔽降级和容错降级两种策略:

l 屏蔽降级是指当外界的触发条件达到某个临界值时,由运维人员/开发人员决策,对某类或者某个服务进行强制降级。

l 容错降级是指当非核心服务不可用时,可以对故障服务做业务逻辑放通,以保障核心服务的运行。

服务网格 Service Mesh - 一种基础设施层服务。在微服务化的过程中,开发者需要解决应用运行在分布式网络中所引入的问题,例如容错、限流、负载均衡、注册发现、可监控等,Service Mesh作为L4/L7协议代理,为应用解决了微服务化后带来的问题。

服务 Service - 服务是对按需取用的功能对象的一种描述。在应用模型中,服务一般面向应用,应用使用服务需要先订购服务,再绑定服务并使用,某些商业场景下可能还需要按使用量付费。

- Try/Confirm/Cancel

TCC Try/Confirm/Cancel(TCC),是一种最终一致性事务管理框架。TCC型事务可以归为补偿型事务。

- Web ServicesAtomicTransaction

WSAT Web Services Atomic Transaction(WSAT)是一种强一致性事务管理框架。

微服务引擎产品介绍 5 产品术语

文档版本 01 (2018-04-09) 9

Page 12: 产品介绍 - developer-res-cbc-cn.obs.cn-north-1 ...€¦ · 建,需要集成验证Hystrix、 Ribbon、Zipkin、Prometheus等 大量三方组件,门槛高,学习 周期长

6 版本说明

6.1 LocalServiceCenter

6.2 Java SDK

6.3 Go SDK

6.4 Service Mesh

6.5 Key Generation Tool

6.6 Local CSE

6.1 LocalServiceCenter版本 发行时间 说明

2.2.65 2018.7.3 修复bug。

2.2.63 2018.6.5 提升易用性和修复bug。

2.2.60 2018.6.1 新增特性。

2.2.65l 解决问题

– 修复契约测试界面偶然展示失败的问题。

– 修复服务信息查询界面记录条数统计错误的问题。

2.2.63l 新特性

– 支持UI界面进行契约测试。

– 修改UI界面能直接删除微服务。

– 修改UI界面离线启动。

微服务引擎产品介绍 6 版本说明

文档版本 01 (2018-04-09) 10

Page 13: 产品介绍 - developer-res-cbc-cn.obs.cn-north-1 ...€¦ · 建,需要集成验证Hystrix、 Ribbon、Zipkin、Prometheus等 大量三方组件,门槛高,学习 周期长

2.2.60l 新特性

– 新增UI支持。

– 支持IPv6。

6.2 Java SDK版本 发行时间 说明

2.3.30 2018.7.19 配套CSE2.3.16。开发模式支持缺省值、支持跨域访问配置、支持隔离、熔断事件上报,提供基于public key的黑白名单机制,支持实例状态检测等可靠性机制。在负载均衡Filter机制方面做了大量调整和优化,支持DiscoveryTree和ServerListFilterExt两种扩展,并默认开启了实例隔离、错误重试等可靠性机制。修复若干bug。

2.3.27 2018.6.19 配套CSE2.3.14。支持Servlet运行环境上传下载、支持客户端超时按照接口设置、支持通过SPI扩展Produces类型等特性。优化了服务接口变更时的管控流程,启动的时候,如果探测到未修改版本号,那么启动流程失败,修复了若干bug。

2.3.25 2018.6.5 配套CSE2.3.13。优雅退出、边缘服务和访问日志3个模块增加了新功能和新场景支持。优化了客户端微服务路由机制,并升级了validation相关的三方软件。

2.3.23 2018.6.1 配套CSE2.3.12。支持HTTP2通信,自引用数据类型,升级Spring,Netty三方件,并提供了服务实例可靠性和契约注册相关的接口管理优化。

2.3.20 2018.5.16 配套CSE2.3.11。主要包括配置中心和服务中心与Spring Cloud集成方面的体验优化,修复了少量bug。

2.3.18 2018.4.26 配套CSE2.3.10。提供了JSR Validation能力和文件下载能力,优化了metrics、监控数据上报、错误控制等功能,修复了少量bug。

2.3.12 2018.4.3 配套CSE2.3.9。提供了支持使用OpenSSL进行通信,支持按照环境进行服务实例隔离,支持服务提供方接口级别的流控,支持服务消费方故障注入功能等新功能,以及其他一些特性变更和bug修改。

2.3.9 2018.3.6 配套CSE 2.3.8。配套服务中心版本升级到2.2.45,提供了支持微服务运维的框架组件版本上报等新功能。

微服务引擎产品介绍 6 版本说明

文档版本 01 (2018-04-09) 11

Page 14: 产品介绍 - developer-res-cbc-cn.obs.cn-north-1 ...€¦ · 建,需要集成验证Hystrix、 Ribbon、Zipkin、Prometheus等 大量三方组件,门槛高,学习 周期长

版本 发行时间 说明

2.3.8 2018.2.3 配套CSE 2.3.7。开源包名从io.servicecomb改为org.apache.servicecomb,提供了REST传输方式的泛型支持,以及其他一些特性和bug的修改。

2.2.39 2018.1.11 配套CSE 2.3.5。该版本增加了Spring Cloud接入CSE新特性,优化了实例查询可靠性和reactive调用方式的性能,以及其他一些特性和bug修改。

2.2.31 2018.1.9 配套CSE 2.3.4。该版本修复了一些BUG,没有新特性。

2.2.28 2017.12.25 配套CSE 2.3.3。增加Spring Cloud对接服务中心的starter。修复治理模块、灰度发布模块等BUG。

2.2.21 2017.12.18 配套CSE 2.3.2。TCC事务使用redis增加密码认证、修复强一致事务,公共模块的一些BUG。

2.2.13 2017.12.13 配套CSE 2.3.1。该版本修复了一些BUG,没有新特性。

2.2.11 2017.12.08 配套CSE 2.3.0。变更记录在2.2.8基础上给出。该版本主要增加了微服务之间的公私钥对认证机制。

2.3.30l 新特性

– JAX-RS, Spring MVC开发模式,支持使用标签定义参数缺失值。

– 支持跨域请求访问设置。

– 服务治理相关的事件(熔断、实例隔离)发生的时候,发送event,支持业务开发事件上报功能。

– 基于publicKey提供黑白名单功能。

– Spring启动方式的时候,默认扫描main所在Class的package,简化用户配置。

– 开放LocalContext接口供开发者使用。

– 从Edge进来的请求,支持form格式,Edge自动将form转换为json。

– 提供客户端ping机制,能够通过ping扩展,检测客户端缓存实例是否可用。该功能默认启用,配合实例隔离功能对检测失败的实例进行隔离。

l 修改特性

– cse.executor.groupThreadPool,cse.executor.reactive增加别名servicecomb.executor.groupThreadPoo,servicecomb.executor.reactive。

– BeanUtils.init 缺省扫描main函数所在的package,简化用户配置。

– 缺省情况下,不往服务中心注册通过schema定义解析出来的path信息,需要通过配置项servicecomb.service.registry.registerPath=true开启。

微服务引擎产品介绍 6 版本说明

文档版本 01 (2018-04-09) 12

Page 15: 产品介绍 - developer-res-cbc-cn.obs.cn-north-1 ...€¦ · 建,需要集成验证Hystrix、 Ribbon、Zipkin、Prometheus等 大量三方组件,门槛高,学习 周期长

– 为了兼容,早期将servicecomb.xx配置项复制为cse.xxx,修改为将cse.xxx配置项复制为servicecomb.xx配置项。开发者在程序中、配置文件优先使用servicecomb.xx。

– 配置文件优先级配置项cse-config-order调整为servicecomb-config-order。– 配置项cse.configurationSource.additionalUrls和

cse.configurationSource.defaultFileName分别调整为servicecomb.configurationSource.defaultFileName和servicecomb.configurationSource.defaultFileName。

– 检测到服务中心和本地的schema不相同的时候,打印schema内容到日志,降低定位成本。

– 将实例隔离、基于属性路由、数据中心路由等功能切换为DiscoveryFilter。详细开发文档参考:《负载均衡》。

– 调整ServerListFilterExt的实现,不再继承Ribbon的ServerListFilter,并且提供了新方法:public List<Server> getFilteredListOfServers(List<Server> servers,Invocation invocation)以支持基于Invocation属性的过滤器。开发者如果使用了ServerListFilterExt扩展,会编译不通过,可以参考文档《负载均衡》查看是否需要进行自定义扩展。如果需要,可以通过扩展新的ServerListFilterExt或者DiscoveryTree来实现。

– CseServer重命名,调整为ServiceCombServer,并去掉了LoadBalancerStats属性。

– 默认开启实例隔离能力;如果依赖了cse-solution-service-engine,还将默认开启重试。

l 解决问题

– 解决流控第一个周期的数值和后面周期的数值差1的问题。

– 解决返回值为void时,反序列化失败的问题。

– 解决ContextClassLoader为空时,抛出NullPointerException的问题。

– 解决RequestBody(required = false)场景下,解析空body抛出异常的问题。

– 解决服务端未启动,先启动客户端并调用接口,服务端启动后仍然无法正常调用客户端的问题。

– 解决启动过程中获取网卡信息失败,可能导致的服务注册失败问题。

– 解决Access Log在短连接情况下没有正确打印HOST信息的问题。

– 解决服务删除的场景下,客户端会继续周期查询服务版本的问题。

2.3.27l 新特性

– J2EE(Servlet)运行环境,支持文件上传和下载。

– 客户端请求超时时间,支持按照接口级别进行动态设置。

– 配置映射规则优化,支持从不同模块的映射文件加载映射规则,支持一个Key映射到多个Key。

– 公有云支持使用PAAS_CSE_ENDPOINT环境变量指定服务中心、配置中心地址。

– 支持通过SPI的方式扩展Produces类型。

l 修改特性

– 微服务契约注册优化,当检测到相同微服务版本契约不同,并且环境不是development的时候,启动失败。环境配置项调整为service_description.environment。

微服务引擎产品介绍 6 版本说明

文档版本 01 (2018-04-09) 13

Page 16: 产品介绍 - developer-res-cbc-cn.obs.cn-north-1 ...€¦ · 建,需要集成验证Hystrix、 Ribbon、Zipkin、Prometheus等 大量三方组件,门槛高,学习 周期长

l 解决问题

– 解决Edge在转发Tomcat容器提供REST服务请求的时候,如果采用Trunked编码,浏览器(或者三方HTTP工具)解析响应失败的问题。

– 解决JAX RS开发模式下,手工写契约,仍然自动生成契约并报错的问题。

– 解决Edge Service MicroserviceVersion可能存在的内存泄露问题。

– 解决Edge Service异常情况下没有返回Provider的错误码,而是返回502的问题。

– 解决DiscoveryTree并发访问问题。

– 解决灰度发布使用大小写敏感规则的时候,如果参数值为空,会执行异常的问题。

– 解决Generics参数类型里面还包含Generics字段的情况下,响应解析失败的问题。

– 解决在异常场景下,无法优雅退出的问题。

– 解决cse.*和servicecomb.*配置项并存的情况下,读取参数值错误的问题。

2.3.25l 新特性

– J2EE运行环境(tomcat)优雅退出支持;Vert.x运行环境优雅退出增加了事件机制,并且统一了两个环境优雅退出的逻辑。

– Edge Service提供了两种通用的路由管理机制:基于服务名和版本的灰度管理和基于URL映射配置的灰度管理机制,简化用户使用Edge Service。

– Access Log支持打印Context头信息;格式支持用户扩展。

l 修改特性

– 采用Edge一样的机制管理Consumer的契约,默认拉取所有版本(0+), 修改前为拉取最新版本(latest),并对不同的版本采用隔离的ClassLoader进行接口调用,以解决Provider接口变更,Consumer配套Provider修改,升级的时候,Consumer先升级导致的接口调用异常和无法恢复问题。

– validation-api由1.1.0升级到2.0.0。– hibernate-validator由5.2.4.Final升级到6.0.2.Final。– hibernate-validator-annotation-processor由5.2.2.Final升级到6.0.2.Final。

l 解决问题

– 解决配置中心在watch模式下循环打印NullPointerException的问题。

2.3.23l 新特性

– 接口定义支持自引用的数据类型。

– 优雅停机支持,服务停止的时候,正常关闭网络线程、等待调用完成等。

– SDK支持http2作为通信协议。

– 契约定义x-java-interface支持可选。

l 修改特性

– 配套ServiceComb Java Chassis的版本为commit id 5fc99f5。– 提供服务中心网络暂时不可达、服务中心故障重启等异常情况下的实例保护

机制。当从服务中心查询到空实例的时候,默认会对现在使用的实例Ping一次,Ping成功则不移除本地实例。

微服务引擎产品介绍 6 版本说明

文档版本 01 (2018-04-09) 14

Page 17: 产品介绍 - developer-res-cbc-cn.obs.cn-north-1 ...€¦ · 建,需要集成验证Hystrix、 Ribbon、Zipkin、Prometheus等 大量三方组件,门槛高,学习 周期长

– Spring 版本由4.3.5.RELEASE升级到4.3.16.RELEASE。注意:新版本Spring的原生RestTemplate接口在未知HTTP错误码的情况下,接口行为有变化。使用CSE提供的接口则不受影响。

– Netty 版本有4.1.17.Final升级到4.1.24.Final。l 解决问题

– 解决查询配置中心配置项时,微服务名称没有转码导致查询失败的问题。

– 解决大文件上传时出现异常的问题。

– 解决Consumer上传空文件时,服务端出现NPE的问题。

– 解决服务中心没启动情况下,先启动微服务,再启动服务中心,仍然无法注册的问题。

– 解决注册微服务过程中删除微服务信息,后续微服务无法继续注册的问题。

2.3.20l 修改特性

– 配置中心初始化的过程中,查询一次配置信息,支持预配置功能。

– 服务中心地址可以不配置端口,根据协议使用缺省端口。

– Spring Boot的application.yml配置文件优先级高于microservice.yaml。– 配置environment情况下,服务实例查询失败的问题。该问题涉及到查询服务

中心实例接口的变化,需要在接口中携带environment参数。

l 解决问题

– 配置environment情况下,服务实例查询失败的问题。

– 修改EdgeService场景下traceId生成和打印的问题。

2.3.18l 新特性

– 支持上报到仪表盘的服务指标里带上所属环境。

– 支持将metrics收集的数据,通过日志的方式打印出来。

– 增加了一种简化的设置配置项的值方式。

– 支持JSR Validation API。– 支持文件下载。

– 支持和spring boot/cloud的配置文件集成。

– 提供cse-solution-spring-cloud,简化spring cloud应用接入CSE。l 修改特性

– 缓存SPI服务实例,避免每次都创建新的实例。

– metrics重新优化,对齐开源生态,废弃perf-stats处理链。引用metrics模块后,通过servicecomb.metrics.publisher.defaultLog.enabled=true开启。

– 调整了metrics发布周期、是否打印日志等缺省值;调整了实例隔离、重试的错误检测条件等以减少日志打印和无谓重试。

– guava由16.0.1升级到19.0版本。

– jackson由2.9.4升级到2.9.5。– 监控数据上报服务器地址获取流程可靠性增强。

– foundation-auth去掉对于slf4j-log4j12的依赖。

微服务引擎产品介绍 6 版本说明

文档版本 01 (2018-04-09) 15

Page 18: 产品介绍 - developer-res-cbc-cn.obs.cn-north-1 ...€¦ · 建,需要集成验证Hystrix、 Ribbon、Zipkin、Prometheus等 大量三方组件,门槛高,学习 周期长

l 解决问题

– 修复客户端流控不支持微服务名称或者schema名称包含.的问题。

– 将DarklaunchRule改为每次调用构造一次,避免并发问题。

– 解决metrics某些场景无法获取到所有统计指标的问题。

– 解决WeightedResponseTimeRule和灰度发布规则共同使用的时候的并发访问问题。

2.3.12l 新特性

– 支持使用OpenSSL进行通信。

– 支持按照环境进行服务实例隔离。

– 支持服务提供方接口级别的流控。

– 支持服务消费方故障注入功能。

l 修改特性

– 将REST参数解析过程调整到HttpClientFilter和HttpServerFilter,从而支持用户自定义编码扩展。

– 配置中心地址为多个的时候,能够自动切换到可用的服务器。

– 服务中心的Pull模式修改为缺省打开。

– 将HTTP头大小限制的缺省值由8K改为32K。

l 解决问题

– 修复Edge Service在找不到服务的时候,日志中的NullPointerException问题。

– SessionSticklessRule支持服务级别的参数配置,修复治理界面参数配置不生效问题 。

– 修复监控数据请求总数、请求失败率计算错误的问题。

2.3.9l 新特性

运维需求:支持上报框架组件版本号给服务中心。

l 修改特性

– jackson版本由2.8.10升级到2.9.4。– 服务中心的最低支持版本调整到2.2.45。

l 解决问题

修复Edge服务在转发不存在的服务的时候,可能导致内存泄露的问题。

2.3.8l 新特性

– REST传输方式支持泛型。

– 支持自定义Netty DNS配置项。

– 集成spring-webmvc的view功能。

– 支持在access log中打印TraceId。l 修改特性

微服务引擎产品介绍 6 版本说明

文档版本 01 (2018-04-09) 16

Page 19: 产品介绍 - developer-res-cbc-cn.obs.cn-north-1 ...€¦ · 建,需要集成验证Hystrix、 Ribbon、Zipkin、Prometheus等 大量三方组件,门槛高,学习 周期长

– ServiceComb代码包名修改为org.apache.servicecomb。– 在Invocation中增加请求成功/失败的记录信息。

– com.huawei.paas.cse:foundation-config-cc模块移到org.apache.servicecomb:config-cc模块。

– 移除与apache许可证相冲突的第三方依赖。

– 升级Netty至4.1.17,升级Jackson版本至2.9.2。l 解决问题

– 处理请求参数名包含"-",consumer走highway调用时会抛出异常的问题。

– 修复microservice.yaml文件的service_description.description部分被英文逗号分割,只有第一部分被注册到SC的问题。

– 修复域名解析导致连不上APIGateway的问题。

2.2.39l 新特性

– 支持Spring Cloud应用接入CSE。– 支持跟踪调用的内嵌traceID。

– 支持@Api标签生成tags。– 支持CompletableFuture异步调用特性。

l 修改特性

– 优化服务中心实例查询机制,增加可靠性。

– 优化reactive调用方式的性能。

– 仪表盘数据上报增加服务和实例信息。

l 解决问题

– 修复灰度发布下发多余属性导致老版本访问失败的问题。

– cse-solution-service-engine配置加载顺序调整为最低,允许开发者覆盖。

– 修改配置多个服务中心地址时,请求签名失败的问题。

2.2.31l 修改特性

升级Jackson版本,与开源部分保持一致。删除重复的依赖项。

l 解决问题

– 灰度发布规则支持不区分大小写。

– 修复熔断状态错误和熔断次数未上报的bug。– SDK提供一个标准的告警事件机制,配置中心上报连接失败异常event。

2.2.28l 新特性

– 增加Spring Cloud对接服务中心的starter。– 灰度发布模块增加对于long、double等数据类型的支持。

l 解决问题

– 修复fallback场景下,大量并发场景打印很多日志问题。

微服务引擎产品介绍 6 版本说明

文档版本 01 (2018-04-09) 17

Page 20: 产品介绍 - developer-res-cbc-cn.obs.cn-north-1 ...€¦ · 建,需要集成验证Hystrix、 Ribbon、Zipkin、Prometheus等 大量三方组件,门槛高,学习 周期长

– 升级jackson版本,解决安全漏洞。

– 解决使用强一致事务返回值丢失的问题。

– 解决监控数据上报熔断状态不准确问题。

2.2.21l 新特性

TCC事务使用redis作为事务日志存储时,支持密码认证。

l 解决问题

– 修改metrics模块在osgi环境集成时jar包冲突问题。

– 修改使用AK/SK认证的场景下,配置中心加载解密工具的顺序导致第一次连接服务中心时解密失败的问题。

– 修改SignerUtils错误修改时区的问题。

2.2.13l 解决问题

修改通过System.setProperty方式设置SSL配置参数导致启动失败的问题。

2.2.11l 新特性

支持微服务之间使用公私钥对进行身份认证。

l 解决问题

针对代码格式、拼写的修改,不影响功能。

6.3 Go SDK版本 发行时间 说明

1.2.7 2018.07.10 修复熔断治理问题。

1.2.5 2018.06.12 修复仪表盘数据错误。

1.2.3 2018.06.01 修复仪表盘数据错误。

1.2.1 2018.05.11 修复部分治理不生效问题。

1.2.0 2018.04.26 Registry接口变更。

1.1.3 2018.04.13 接入配置中心及CSE监控的方式修改,支持自定义规则的灰度发布(匹配header)。

1.1.0 2018.03.06 支持多project,支持灰度发布治理。

1.0 2018.01.20 Go SDK首次发布,支持快速开发rest/highway协议的微服务,支持快速接入CSE。

微服务引擎产品介绍 6 版本说明

文档版本 01 (2018-04-09) 18

Page 21: 产品介绍 - developer-res-cbc-cn.obs.cn-north-1 ...€¦ · 建,需要集成验证Hystrix、 Ribbon、Zipkin、Prometheus等 大量三方组件,门槛高,学习 周期长

1.2.7l 解决问题

– 熔断治理策略对第一个请求不生效。

– 请求全部被熔断时,熔断数计算到了错误率中。

1.2.5l 解决问题

– 仪表盘错误率在部分情况下变成-1。– 熔断的请求被计算到失败数中。

– 调用失败的日志中缺少服务端信息。

– 服务级别的负载均衡治理策略不生效。

– 进入熔断后仪表盘的熔断状态仍为closed。

1.2.3l 修改特性

– 仪表盘请求数数据统计的是过去10秒内总请求数。

l 解决问题

– 仪表盘无法区分同一个主机中的不同实例。

– 仪表盘错误率数据有误。

– 获取provider数据时未判断空指针。

– 微服务静态信息删除后,无法同步实例信息。

– 轮询策略对多版本多实例不生效。

– 灰度发布规则删除后,无法使用本地路由规则。

1.2.1l 解决问题

– 手动熔断不生效。

– 重试成功但无法获得正确结果。

– 强制降级不生效。

1.2.0l 修改特性

– Registry接口拆分为Registrator、ServiceDiscovery、ContractDiscovery接口。

– 新增Router接口。

– 支持http 2.0。l 解决问题

– 微服务被删除后,无法重新向CSE仪表盘上报数据。

– 熔断forceClosed配置项不生效。

– REST协议,服务端超时无返回码提示。

– 路由权重规则功能不稳定。

微服务引擎产品介绍 6 版本说明

文档版本 01 (2018-04-09) 19

Page 22: 产品介绍 - developer-res-cbc-cn.obs.cn-north-1 ...€¦ · 建,需要集成验证Hystrix、 Ribbon、Zipkin、Prometheus等 大量三方组件,门槛高,学习 周期长

1.1.3l 修改特性

– 接入配置中心及CSE监控方式修改。

– 支持自定义规则的灰度发布(匹配Header)。

l 解决问题

– 启动时服务注册缺少重试机制。

– 路由规则在配置权重不满100%时流量没有导入latest版。

– REST协议跨app调用不生效问题。

– 隔离超时的返回码和信息不合理。

– 权值策略不生效问题。

1.1.0l 新特性

– 支持多project。– 支持灰度发布治理(权重规则)。

l 解决问题

– 服务端实例增减,客户端没有更新缓存。

– 服务超时失败时不同协议表现不一致。

– 超时时间配置不生效问题。

1.0l 新特性

– rest/highway协议微服务开发。

– 注册发现,负载均衡,熔断降级,容错,错误注入,路由策略(rest)。

– 动态治理:包含负载均衡,熔断降级,容错,错误注入等配置。

– 仪表盘监控。

6.4 Service Mesh版本 发行时间 说明

1.4.12 2018.07.03 修复熔断治理问题。

1.4.10 2018.06.15 修复仪表盘数据错误。

1.4.8 2018.06.01 修复仪表盘数据错误。

1.4.6 2018.05.11 修复部分治理不生效问题。

1.4.5 2018.04.26 支持http 2.0。

1.4.4 2018.04.13 支持多project。

1.3.7 2018.02.23 增加默认监听地址。

1.3.3 2018.01.20 支持dubbo应用接入。

微服务引擎产品介绍 6 版本说明

文档版本 01 (2018-04-09) 20

Page 23: 产品介绍 - developer-res-cbc-cn.obs.cn-north-1 ...€¦ · 建,需要集成验证Hystrix、 Ribbon、Zipkin、Prometheus等 大量三方组件,门槛高,学习 周期长

版本 发行时间 说明

1.2 2017.12.28 减少配置,提升易用性。

1.1.2 2017.12.20 减少配置,提升易用性。

1.1 2017.12.08 专用基础设施层,帮助业务应用快速成为微服务。

1.0.5 2017.12.01 专用基础设施层,帮助业务应用快速成为微服务。

1.4.12l 解决问题

– 熔断治理策略对第一个请求不生效。

– 请求全部被熔断时,熔断数计算到了错误率中。

1.4.10l 解决问题

– 仪表盘错误率在部分情况下变成-1。– 熔断的请求被计算到失败数中。

– 调用失败的日志中缺少服务端信息。

– 后端服务返回给mesher 500错误时,客户端无法读取错误信息。

– 服务级别的负载均衡治理策略不生效。

– 进入熔断后仪表盘的熔断状态仍为closed。

1.4.8l 修改特性

– 仪表盘请求数数据统计的是过去10秒内总请求数。

– 透明返回服务端5XX信息。

l 解决问题

– 仪表盘无法区分同一个主机中的不同实例。

– 仪表盘错误率数据有误。

– 获取provider数据时未判断空指针。

– 微服务静态信息删除后,无法同步实例信息。

– 轮询策略对多版本多实例不生效。

– 灰度发布规则删除后,无法使用本地路由规则。

1.4.6l 解决问题

– 手动熔断不生效。

– 重试成功但无法获得正确结果。

微服务引擎产品介绍 6 版本说明

文档版本 01 (2018-04-09) 21

Page 24: 产品介绍 - developer-res-cbc-cn.obs.cn-north-1 ...€¦ · 建,需要集成验证Hystrix、 Ribbon、Zipkin、Prometheus等 大量三方组件,门槛高,学习 周期长

– 强制降级不生效。

1.4.5l 新特性

– 支持http 2.0。l 解决问题

– 微服务被删除后,无法重新向CSE仪表盘上报数据。

– 熔断forceClosed配置项不生效。

– 路由权重规则功能不稳定。

1.4.4l 新特性

– 支持多project。– 支持灰度发布治理。

– ServiceStage部署时免AK/SK配置。

l 解决问题

– 服务端实例增减,客户端没有更新缓存。

– 服务超时失败时不同协议表现不一致。

– 超时时间配置不生效问题。

– dubbo协议默认无法调用非0.0.1版本的服务。

– dubbo协议错误注入策略配置不生效。

– 启动时服务注册缺少重试。

– 路由规则在配置权重不满100%时流量没有导入latest版本。

– 隔离超时状态码为200问题。

– admin API不可用问题。

– dubbo provider端容易出现异常退出。

– header字段字符长度超过6441时调用失败。

– mesher的qps数据变化过于缓慢。

1.3.7l 解决问题

– 缺少默认监听地址。

– 时间相应权值策略对dubbo协议不生效。

1.3.3l 新特性

支持dubbo应用接入。

l 修改特性

合并部分配置文件。

l 解决问题

– 初始化错误直接退出,不再启动mesher。

微服务引擎产品介绍 6 版本说明

文档版本 01 (2018-04-09) 22

Page 25: 产品介绍 - developer-res-cbc-cn.obs.cn-north-1 ...€¦ · 建,需要集成验证Hystrix、 Ribbon、Zipkin、Prometheus等 大量三方组件,门槛高,学习 周期长

– 降级策略为returnnull时,降级不生效。

– 获取chain失败没有处理异常码。

– mesher退出时删除实例报404。

1.2l 修改特性

将处理链配置隐藏,不让用户关心处理链配置,用户可自定义,也可用系统默认的。

l 解决问题

修复网卡不是eth0启动失败的问题。

1.1.2l 修改特性

– 使用--mode决定运行模式,参数为sidecar或per-host,默认为sidecar。– 注册框架名,版本号,注册者信息到Service Center。– 使用start.sh不再强制要求输入环境变量。

– 隐去内部组件的SSL配置,进一步简化配置文件。

– 不需在ServiceStage中部署时指定CSE_REGISTRY_ADDR与SERVICE_NAME。

1.1l 新特性

– 新的负载均衡策略,根据延时进行实例选择。

– 错误注入。

1.0.5l 修改特性

路由中的appId默认使用cosumer自己的appId,免除路由表配置。

l 解决问题

配置tracing handler导致mesher进程崩溃。

6.5 Key Generation Tool版本 发行时间 说明

1.0.4 2017.12.28 首次交付,提供密钥加密工具。

1.0.4l 新特性

– 一次性生成物料和AK/SK认证文件。

– 提供加密接口。

微服务引擎产品介绍 6 版本说明

文档版本 01 (2018-04-09) 23

Page 26: 产品介绍 - developer-res-cbc-cn.obs.cn-north-1 ...€¦ · 建,需要集成验证Hystrix、 Ribbon、Zipkin、Prometheus等 大量三方组件,门槛高,学习 周期长

6.6 Local CSE版本 发行时间 说明

1.0.1 2018.07.03 更新README.md。

1.0.0 2018.06.11 首次交付,用于本地开发的轻量服务中心、配置中心,并提供简单的界面。

1.0.1l 修改特性

– 更新README.md。– 更新界面公有云Logo。

1.0.0l 新特性

– 集成本地轻量化服务中心。

– 集成本地轻量化配置中心。

– 提供轻量化console界面。

微服务引擎产品介绍 6 版本说明

文档版本 01 (2018-04-09) 24