巴别之塔

新一代的 Serverless Computing - Hydro 项目介绍

HydroJoseph M. Hellerstein 教授在 UC Berkeley 的 RISELab(算是 AMPLab 的继承者)开展的项目。要了解 Hydro,可以从他们最近的一篇总结性博客开始看起:The State of the Serverless Art,然后再看它主页上罗列的论文。

背景 - 无服务器计算

Hydro 项目的目标是创造一个适合于云计算的编程环境。目前大部分人是如何做云计算的呢?我们可能会开一定数量的 Amazon EC2 虚拟机,然后在上面安装依赖包,启动我们的程序。在这中间,我们要处理很多机器管理、容错、通讯的问题。在 Joe 教授的眼中,在云上如此编程,类似于在计算机发展的早期时代我们直接写汇编代码,非常的落后。那么在云计算的时代,正确的姿势应该是什么样的呢?UC Berkeley 的一些系统大佬在 2019 年的 Berkeley view1 中指出,云计算的未来是无服务器计算(serverlesss computing)。在无服务器计算中,用户只要定义需要计算的函数,计算所需的资源都有云计算提供商来管理,类似的服务有 Amazon Lamda、Azure Functions 和 Google Cloud Functions。话说,基本同一批的系统界大佬在 2009 年出过一个云计算的 Berkeley view2,其中很多看法都已经被验证;2019 年的这版是他们的一个回顾与更新。

问题是,现在无服务器计算并不完美,Joe 在一篇论文中指出无服务器计算相比之前的云计算是「进一步,退两步」3

解决之道 - Anna 和 Cloudburst

当然,Joe 的目标并不是贬低无服务器计算,而是希望通过 Hydro 项目构建出一个他理想中的无服务器计算平台:stateful serverless infrastructure。首先,Joe 和他的博士生 Chenggang Wu 构建了名为 Anna 的 key-value 存储系统(Anna 分别获得了 ICDE'18 和 VLDB'19 的最佳论文奖)。下面说一下 Anna 的主要特性:

基于 Anna,Joe 和他的另一个博士生 Vikram Sreekanti 构建了一个名为 Cloudburst 的 stateful serverless infrastructure,发表在 VLDB'208。Cloudburst 试图解决之前提到的现有无服务器计算的两个缺点:

为什么 Joe 要先做 Anna 呢?因为他认为只有高性能的 Anna,才能支持 Cloudburst 的存储需求。在 Cloudburst 的论文中,Joe 和他的学生们,用实验证明了 Cloudburst 的性能优于 Amazon Lambda 与其它存储层,如 Redis/Amazon S3。

最后,Joe 和他的 Hydro 项目组还在不断的扩展和改进 Cloudburst:

更新

update on Apr 25, 2021

随着最近对数据库的学习,感觉 Anna 和 Hydro 并不像他们宣称的那样「美好」。首先,在 Anna 的论文中,它与 Cassandra 做了比较,借此说明了它出众可扩展性。但存在一个 C++ 实现的 Cassandra 版本 ScyllaDB,Anna 没有做比较。而 ScyllaDB 在 2015 年就开源了,2016 年已经出了正式的 v1.0,我觉得 Anna 做实验并不存在什么困难。如果 Anna 直接和同样是 C++ 实现的 ScyllaDB 比较,而不是跟 Java 实现的 Cassandra 比较,我感觉它的性能就没什么优势了。而且 ScyllaDB 所使用的高并发异步框架 Seastar 的思想跟 Anna 的 Actor 模型也基本一样。Anna 唯一胜出的地方可能就是对于 causal consistency 的支持(但我觉得 ScyllaDB 要实现可能并不困难,只是需求不大)。另外一点,Cloudburst 的存储是基于 Anna 的,而 Anna 不支持 strong consistency,感觉在应用范围上是有问题的。

参考文献


  1. Jonas, Eric, Johann Schleier-Smith, Vikram Sreekanti, Chia Che Tsai, Anurag Khandelwal, Qifan Pu, Vaishaal Shankar, et al. “Cloud Programming Simplified: A Berkeley View on Serverless Computing.” UCB/EECS, 2019. ↩︎

  2. Armbrust, Michael, Armando Fox, Rean Griffith, Anthony D. Joseph, Randy H. Katz, Andrew Konwinski, Gunho Lee, et al. “Above the Clouds: A Berkeley View of Cloud Computing.” UCB/EECS, 2009. https://doi.org/10.1145/1721654.1721672↩︎

  3. Hellerstein, Joseph M., Jose Faleiro, Joseph E. Gonzalez, Johann Schleier-Smith, Vikram Sreekanti, Alexey Tumanov, and Chenggang Wu. “Serverless Computing: One Step Forward, Two Steps Back.” In CIDR, 2019. ↩︎

  4. Wu, Chenggang, Vikram Sreekanti, and Joseph M. Hellerstein. “Autoscaling Tiered Cloud Storage in Anna.” PVLDB 12, no. 6 (2019): 624–38. https://doi.org/10.1007/s00778-020-00632-7↩︎

  5. Conway, Neil, William R. Marczak, Peter Alvaro, Joseph M. Hellerstein, and David Maier. “Logic and Lattices for Distributed Programming.” In SoCC, 2012. https://doi.org/10.1145/2391229.2391230↩︎

  6. Hellerstein, Joseph M., and Peter Alvaro. “Keeping CALM: When Distributed Consistency Is Easy.” ArXiv, 2019. ↩︎

  7. Wu, Chenggang, Vikram Sreekanti, and Joseph M. Hellerstein. “Autoscaling Tiered Cloud Storage in Anna.” PVLDB 12, no. 6 (2019): 624–38. https://doi.org/10.1007/s00778-020-00632-7↩︎

  8. Sreekanti, Vikram, Chenggang Wu, Xiayue Charles Lin, Johann Schleier-Smith, Joseph E. Gonzalez, Joseph M. Hellerstein, and Alexey Tumanov. “Cloudburst: Stateful Functionsasaservice.” PVLDB 13, no. 11 (2020): 2438–52. https://doi.org/10.14778/3407790.3407836↩︎

  9. Sreekanti, Vikram, Chenggang Wu, Saurav Chhatrapati, Joseph E. Gonzalez, Joseph M. Hellerstein, and Jose M. Faleiro. “A Fault-Tolerance Shim for Serverless Computing.” In EuroSys, 1–15, 2020. ↩︎

  10. Sreekanti, Vikram, Harikaran Subbaraj, Chenggang Wu, Joseph M. Hellerstein, and Joseph E. Gonzalez. “Optimizing Prediction Serving on Low-Latency Serverless Dataflow.” ArXiv, 2020. ↩︎

#research #system #serverless