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 使用场景介绍