Apache ServiceComb(incubating) 第一个版本发布

  • 郭蕾

2018 年 4 月 3 日

话题:JavaApacheDevOps语言 & 开发微服务

看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!

开源的微服务解决方案 ServiceComb 于去年 12 月进入 Apache 软件基金会孵化,并于 4 月 3 日在 Apache 官网上的新闻版块正式通告 Apache ServiceComb (incubating) 发布 Java-Chassis 1.0.0-m1、Service-Center 1.0.0-m1, Saga 0.1.0版本。

下载地址:

http://servicecomb.incubator.apache.org/release/service-center-downloads/

http://servicecomb.incubator.apache.org/release/java-chassis-downloads/

http://servicecomb.incubator.apache.org/release/saga-downloads/

版本说明: http://servicecomb.incubator.apache.org/release/service-center-release-notes/http://servicecomb.incubator.apache.org/release/java-chassis-release-notes/http://servicecomb.incubator.apache.org/release/saga-release-notes/

版本变更概览

Service Center

支持查询服务 Schema 列表

支持查询服务统计信息

支持 SC 多实例的状态查询

支持消费者发现 SC 多实例

基于事件驱动实现了服务依赖规则

增加数据库压缩周期的配置项,减少数据库压缩时产生的碎片化

上调默认的服务和实例数上限

修正服务发现黑名单规则

增加导出指标数据到 Prometheus,增加 Grafana 模板

Java Chassis

Java Chassis 的项目组织从”io.servicecomb”变更为”org.apache.servicecomb”

重构监控指标模块,增加大量监控指标,支持 Prometheus

重构配置中心,可以方便对接三方配置中心,支持对接携程 Apollo 动态配置中心

POJO 编程模型支持用户使用 CompletableFuture 异步编程

POJO 编程模型支持用户使用 Object 和 Generic 类型作为调用参数

优化了 Spring MVC 的集成

内部升级到 zipkin2,同时支持 v1/v2 版本的 zipkin server

Saga

Pack 原型实现,通过切面编程技术获取事务信息,通过集中式的事务管理器协调事务执行

支持通过 Annotation 在用户代码定义 Saga 事务

以下是具体的亮点介绍。

分布式追踪

微服务架构下,分布式追踪是快速定位具有复杂依赖关系的微服务应用问题的必要手段,Service-Center 1.0.0-m1 增加了 Zipkin 支持, Java-Chassis 1.0.0-m1 进行升级后也可同时支持 zipkin v1/v2。

详细信息请参考:

https://github.com/apache/incubator-servicecomb-service-center/tree/master/server/plugin/infra/tracing/buildin

https://servicecomb.incubator.apache.org/cn/users/distributed-tracing/

丰富的指标数据支持

微服务架构下,运维管理系统需要大量有效的指标数据以支撑弹性伸缩,并在系统性能下降时使能快速定位瓶颈部件,Service-Center 1.0.0-m1 和 Java-Chassis 1.0.0-m1 中解耦了指标模块,并增加大量有效的监控指标,且均支持对接 Prometheus。

详细信息参考:

http://servicecomb.incubator.apache.org/users/metrics-in-1.0.0-m1/

配置中心

微服务架构下爆发式增长的服务数量和服务器数量将导致使用配置文件和环境变量来管理程序的方式不可行,Java-Chassis 通过对旧版本 config-cc 模块的重构,在 1.0.0-m1 版本支持了统一的配置中心,默认支持 Apollo,并可方便的对接其他三方配置中心。

参考:

https://servicecomb.incubator.apache.org/cn/docs/config_center_integration/

微服务数据最终一致性解决方案

ServiceComb 提供了 Saga 用于解决微服务中的数据最终一致性难题,Saga 0.1.0 从架构层面进行了升级,适用于 高并发,嵌套调用,高延时调用的跨服务事务场景,且通过对 annotation 的支持极大提高易用性。

Saga0.1.0 使用 Pack 模型,整个 Saga 服务由 Alpha 和 Omega 组成。

  • Alpha 充当协调者的角色,主要负责对事务的事件进行持久化存储以及协调子事务的状态,使其最终得以与全局事务的状态保持一致,即保证事务中的子事务要么全执行,要么全不执行。
  • Omega 是用户程序侧代理,负责对网络请求进行拦截并向 Alpha 上报事务事件,并在异常情况下根据 Alpha 下发的指令执行相应的补偿或重试操作。

大家可以通过以下链接获取更详细信息:

https://github.com/apache/incubator-servicecomb-saga/blob/master/docs/design_zh.md

https://github.com/apache/incubator-servicecomb-saga/blob/master/docs/user_guide_zh.md

https://github.com/apache/incubator-servicecomb-saga/blob/master/saga-demo/booking/README.md

https://servicecomb.incubator.apache.org/cn/docs/saga_pack_design/

ServiceComb 相关资料

官方网站 : http://servicecomb.incubator.apache.org/

JIRA : https://issues.apache.org/jira/browse/SCB

邮件列表 : dev@servicecomb.apache.org

加入社区: https://servicecomb.incubator.apache.org/cn/docs/join_the_community

JavaApacheDevOps语言 & 开发微服务