Pack | English Build Status Coverage Status Maven Central License Quality Gate Status Gitter

Apache ServiceComb Pack 是一个微服务应用的数据最终一致性解决方案。

贡献者: 这个项目缺少维护者,如果您愿意为项目维护提供支持,请联系我们,可以将您加入项目的commiter群组,继续维护该项目.

用户:这个项目缺少维护者,在我们找到持续的维护者之前,建议您尽可能不要使用这个项目,避免碰到问题得不到技术支持.

关键特性

  • 高可用:支持高可用的集群模式部署。
  • 高可靠:所有的关键事务事件都持久化存储在数据库中。
  • 高性能:事务事件是通过高性能gRPC来上报的,且事务的请求和响应消息都是通过Kyro进行序列化和反序列化。
  • 低侵入:仅需2-3个注解和编写对应的补偿方法即可引入分布式事务。
  • 部署简单:支持通过容器(Docker)进行快速部署和交付。
  • 补偿机制灵活:支持前向恢复(重试)及后向恢复(补偿)功能。
  • 扩展简单:基于Pack架构很容实现多种协调协议,目前支持TCC、Saga协议,未来还可以添加其他协议支持。

架构

ServiceComb Pack 架构是由 alphaomega组成,其中:

  • alpha充当协调者的角色,主要负责对事务进行管理和协调。
  • omega是微服务中内嵌的一个agent,负责对调用请求进行拦截并向alpha上报事务事件。

下图展示了alpha, omega以及微服务三者的关系: ServiceComb Pack 架构 在此架构基础上我们除了实现saga协调协议以外,还实现了TCC协调协议。 详情可浏览ServiceComb Pack 设计文档.

同时社区也提供了多种语言的Omega实现:

快速入门

编译和运行代码

  • 编译代码并且运行相关的单元测试
       $ mvn clean install
    
  • 编译示例代码,并生成docker镜像(maven会根据是否安装docker来启动这部分的设置),运行验收测试。
       $ mvn clean install -Pdemo
    
  • 编译示例代码,并生产docker镜像, 不运行测试
       $ mvn clean install -DskipTests=true -Pdemo
    
  • 编译软件发布包,不运行测试, maven会在distribution/target目录下生成的发布包.
       $ mvn clean install -DskipTests=true -Prelease
    

用户指南

如何构建和使用可浏览用户指南

获取最新版本

获取最新发行版本:

获取最新预览版本:

  • 最新的预览版本会发布到Apache nexus的仓库中,请将如下的仓库描述信息加到你的pom.xml文件中.
            <repositories>
              <repository>
                <releases />
                <snapshots>
                  <enabled>true</enabled>
                </snapshots>
                <id>repo.apache.snapshot</id>
                <url>https://repository.apache.org/content/repositories/snapshots/</url>
              </repository>
            </repositories>
            <pluginRepositories>
              <pluginRepository>
                <releases />
                <snapshots>
                  <enabled>true</enabled>
                </snapshots>
                <id>repo.apache.snapshot</id>
                <url>https://repository.apache.org/content/repositories/snapshots/</url>
              </pluginRepository>
            </pluginRepositories>
    
    

常见问题

联系我们

项目贡献者

贡献者

参与贡献

详情可浏览代码提交指南

License

Apache 2.0 license