Skip to main content
QUICK REVIEW

[论文解读] CPL: A Core Language for Cloud Computing -- Technical Report

Oliver Bračevac, Sebastian Erdweg|arXiv (Cornell University)|Feb 2, 2016
Cloud Computing and Resource Management被引用 1
一句话总结

CPL 是一种静态类型的底层语言,将云应用开发与部署统一到一个类型安全的系统中。它使用受联合演算启发的通道和有界泛型,支持安全、可组合且可扩展的服务组合子,实现运行时的负载均衡、容错和动态部署变更。

ABSTRACT

Running distributed applications in the cloud involves deployment. That is, distribution and configuration of application services and middleware infrastructure. The considerable complexity of these tasks resulted in the emergence of declarative JSON-based domain-specific deployment languages to develop deployment programs. However, existing deployment programs unsafely compose artifacts written in different languages, leading to bugs that are hard to detect before run time. Furthermore, deployment languages do not provide extension points for custom implementations of existing cloud services such as application-specific load balancing policies. To address these shortcomings, we propose CPL (Cloud Platform Language), a statically-typed core language for programming both distributed applications as well as their deployment on a cloud platform. In CPL, application services and deployment programs interact through statically typed, extensible interfaces, and an application can trigger further deployment at run time. We provide a formal semantics of CPL and demonstrate that it enables type-safe, composable and extensible libraries of service combinators, such as load balancing and fault tolerance.

研究动机与目标

  • 解决现有云部署 DSL 中类型不安全和可组合性差的问题,这些 DSL 通常不安全地混合代码与配置。
  • 通过一等、类型化、高阶的服务组合子,实现云中间件服务(如负载均衡器)的可扩展性。
  • 通过允许应用在运行时触发部署变更,克服当前部署工具中的阶段分离问题。
  • 为云平台提供形式化基础,将其建模为统一编程模型下的分布式、异步消息传递系统。

提出的方法

  • 设计 CPL 为一种基于带有限量泛型的 System F 变体的静态类型语言,以支持可扩展的、参数多态的服务接口。
  • 将云平台建模为受联合演算启发的分布式、异步消息传递系统,使用联合模式进行协调。
  • 引入一等、命名的服务,支持限定名称和高阶函数,以实现云服务的动态组合。
  • 在 PLT Redex 中实现形式语义,并提供基于 Scala 的并发原型以验证设计。
  • 使用有界泛型定义可重用、可组合的服务组合子(例如用于弹性负载均衡和容错),其类型安全性由构造保证。
  • 通过允许应用服务在执行过程中触发新的部署步骤,演示运行时部署自适应能力。

实验结果

研究问题

  • RQ1我们如何将应用逻辑与部署配置统一到单一、类型安全的语言中,以防止因不安全组合导致的运行时错误?
  • RQ2我们能否在一个语言中提供一等、可扩展且可组合的抽象,用于云中间件服务(如负载均衡和容错)?
  • RQ3统一语言在多大程度上能够支持由应用逻辑在运行时触发的动态部署变更?
  • RQ4我们如何使用基于演算的形式化基础,将云平台建模为支持应用与部署编程的分布式、异步系统?

主要发现

  • CPL 有效地将应用与部署编程统一到单一静态类型语言中,消除了不同语言之间不安全组合的问题。
  • 通过使用有界泛型和静态类型接口,实现了对云中间件(如负载均衡和容错)的安全、可组合且可扩展的服务组合子。
  • 支持运行时部署自适应:应用服务可触发新的部署步骤,从而实现自愈和弹性扩展。
  • PLT Redex 中的形式语义与并发 Scala 实现证明了该语言设计的可行性和正确性。
  • 案例研究显示,MapReduce 及其他复杂部署模式可使用 CPL 的服务组合子安全且模块化地表达。
  • 该语言设计支持类型安全、声明式且可扩展的云基础设施建模,显著减少了部署错误和配置错误。

更好的研究,从现在开始

从论文设计到论文写作,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。