Web applications underpin much of modern digital life, yet building scalable and consistent cloud applications remains difficult, requiring expertise across cloud computing, distributed systems, databases, and software engineering. These demands restrict development to a small number of highly specialized engineers. This thesis aims to democratize cloud application development by addressing three challenges: programmability, high-performance fault-tolerant serializable transactions, and serverless semantics. The thesis identifies strong parallels between cloud applications and the streaming dataflow execution model. It first explores this connection through T-Statefun, a transactional extension of Apache Flink Statefun, demonstrating that dataflow systems can support transactional cloud applications via a stateful functions-as-a-service API. However, this approach revealed significant limitations in programmability and performance. To overcome these issues, the thesis introduces Stateflow, a high-level object-oriented programming model that compiles applications into stateful dataflow graphs with minimal boilerplate. Building on this model, the thesis presents Styx, a distributed streaming dataflow engine that provides deterministic, multi-partition, serializable transactions with strong fault tolerance guarantees. Styx eliminates explicit transaction failure handling and significantly outperforms state-of-the-art systems. Finally, the thesis extends Styx with transactional state migration to support elasticity under dynamic workloads.
翻译:Web应用构成了现代数字生活的重要基础,然而构建可扩展且具有一致性的云应用仍然十分困难,需要横跨云计算、分布式系统、数据库和软件工程等多个领域的专业知识。这些要求将开发工作限制在少数高度专业化的工程师手中。本论文旨在通过解决三个挑战——可编程性、高性能容错可序列化事务和无服务器语义——来推动云应用开发的民主化。论文发现了云应用与流数据流执行模型之间存在显著的相似性。首先,论文通过T-Statefun(Apache Flink Statefun的事务性扩展)探索了这一关联,证明了数据流系统能够通过有状态函数即服务API支持事务性云应用。然而,该方法在可编程性和性能方面存在显著局限。为克服这些问题,论文提出了Stateflow,一种高级面向对象编程模型,能够以最少的样板代码将应用程序编译为有状态数据流图。基于此模型,论文进一步介绍了Styx,一个分布式流数据流引擎,它提供了具有强容错保证的确定性、多分区、可序列化事务。Styx消除了显式的事务失败处理,并在性能上显著超越了现有先进系统。最后,论文通过引入事务性状态迁移扩展了Styx,以支持动态工作负载下的弹性伸缩。