跳到主要内容
版本:2.5.0

Phoenix介绍

Phoenix 是宽拓自主研发的一款事件驱动型的高性能 Java 开发框架,在金融行业中得到了验证。Phoenix 专注于降低业务复杂性高、性能要求高的应用系统的开发难度,助力研发团队打造专业、高效的微服务化的应用系统。

整体介绍

Phoenix 是一款高性能、事件驱动型的微服务框架。Phoenix 使开发者专注于满足业务需求,无需编写底层代码来实现可靠性、容错和高性能。

传统的微服务架构做法不利于应对现代计算机体系结构的设计挑战,开发分布式的微服务系统将会面临以下问题:

  • 组件崩溃没有响应
  • 消息在链路中丢失而无迹可寻
  • 网络延迟波动

为了帮助开发者编写出更符合现代计算机体系结构的程序,Phoenix 建立在异步和事件思想之上提供了以下特性:

  • 事件驱动:事件驱动型架构能够真正解耦微服务,这种松耦合在系统中提供了一定程度的弹性。
  • EventSouring:Phoenix提供高性能以及可伸缩的EventSouring编程模型,方便用户面向领域编程。
  • CQRS:在EventSouring的模式之上提供可靠的事件发布功能,方便用户构建Q端模型,从而实现命令查询职责分离架构。
  • 审计:Phoenix 使用一系列不可变事实的事件表示程序状态,因此支持通过事件流回溯程序状态的历史记录以实现审计和跟踪。
  • 横向伸缩:在Phoenix运行模型中,聚合根是最小并发以及隔离单位,聚合根会自动平均shard到各个节点当中,用户可以通过增/减节点来实现横向伸缩。
  • 高可用:依赖于 Phoenix 的集群调度能力,当节点故障时,集群能够快速检测并恢复,故障节点的状态会转移到健康节点。
  • 事务支持:Phoenix 支持 TCC 和 Saga 分布式事务,并支持两种事务混用,以满足业务需求。
  • 运维监控:Phoenix 实现了一套强大的服务监控平台,支持对多个项目、服务、实例的监控以及内存的管理。

Phoenix 对聚合根的使用封装了一套易于使用的抽象 API,使开发者能够面向对象设计编程,不会陷入面向表结构设计的困境;在应用架构层面,Phoenix 基于事件驱动架构实现了有状态的微服务的异步通信,帮助开发者构建出松耦合、高可用、可伸缩的微服务架构。

有关 Phoenix 在领域驱动设计方面的设计思想,可以参考:Phoenix 使用场景介绍

如何入门

如果您想要快速上手 Phoenix,我们建议您从运行简单的 Hello World 项目开始,了解 Phoenix API 和相关配置。有关 HelloWorld 项目的内容,请参阅:https://github.com/PhoenixIQ/phoenix-samples/

如果您想要深入了解 Phoenix 背后的设计思想以及更高级别的信息,请查阅下面的指南。该指南讲述了 Phoenix 如何改造微服务架构以适应现代分布式系统的需求,并包含一个教程,帮助开发者进一步了解 Phoenix 该指南涵盖了以下主题:

框架性能

在 Phoenix 中,框架的性能将使用以下两个指标衡量:

  • 吞吐:指系统每秒可以并发处理事务的个数
  • 时延:指每笔事务处理的耗时情况

下面表格数据展示在不同硬件资源,不同实例配置下,Phoenix 的性能表现情况:

更多 Phoenix 性能及可用性等层面的测试,可以参考:Phoenix 测试报告

压测参数(消息总量/TPS/聚合根范围)实例个数硬件配置线程池配置DB配置MQ配置平均时延CPU使用率实际处理TPS
540W/4.5W/10064Core 8GBForkJoin644实例1实例36partition1782ms56%35272
600W/5W/100124Core 8GBForkJoin644实例1实例36partition1896ms40%42646
900W/7.5W/100184Core 8GBForkJoin644实例1实例36partition1172ms32%52500
780W/6.5W/100244Core 8GBForkJoin644实例1实例36partition1858ms24%58880
1080W/9W/100304Core 8GBForkJoin644实例1实例36partition1437ms24%57077