0基础读顶会论文—Kappa:一种用于无服务器计算的编程框架
首先的首先,可以先去了解一下lambda架构
Abstract
在本文中提出了Kappa,一个简化无服务器开发的框架。它使用检查点来处理lambda函数超时,并提供并发机制,实现并行计算和协调
1 Introduction
无服务器计算是一种新的云范例,在这种范例中,租户不是配置虚拟机(VM),而是向平台注册事件处理程序(例如 Python 函数)。当事件发生时,平台会在 lambda 函数(一种短暂的无状态执行环境)上调用处理程序。lambda 函数在终止前可以执行一段有界的时间(例如在 AWS 上为 15 分钟)
存在两个主要挑战:(1)程序员必须手动划分计算以适应 lambda 函数的时间限制;(2)程序员没有可用的并发或同步原语(如线程、锁、信号量等),因此必须要么实现这样的原语,要么限制自己使用无共享并行性,要么避免使用为简化开发而开发的并行 lambda 函数
2 Background and Motivation
2.1 Comparison to Existing Framework

2.2 Lambda Function Time Limit
无服务器计算中的Lambda函数存在时间限制的原因主要是为了优化运营商的任务分配和资源管理,运营商不再需要预测任务的完成时间或进行复杂的迁移操作,能够更灵活地进行任务分配和资源利用
3 Kappa Design
Kappa 有三个组成部分:(1)一个协调器,负责启动和恢复任务以及实现 Kappa 的并发原语;(2)一个编译器,负责生成检查点所需的代码;(3)一个库,供任务用于检查点、并发处理和同步

3.1 Coordinator
Kappa 协调器负责在 lambda 函数上安排任务、实现同步和跨任务通信、跟踪任务元数据(包括检查点)以及提供容错功能,协调器本身通过跨备份存储(例如,Redis 集群)复制其状态来支持容错,通过管理远程过程调用 (RPC) 来实现这一点,其中包括生成新任务、检查点、消息排队和检索任务结果等操作。

3.2 Checkpointing
Kappa使用检查点来容忍lambda函数超时并防止RPC重复,在任务执行的某些关键点创建“检查点”,将任务当前的运行状态(包括变量、控制流等)记录下来。使用了一种称为“continuations(延续)”的技术来创建检查点,延续是一种保存程序控制流的方式,这种方式无需依赖传统服务器持久化状态,而是通过序列化将任务的状态数据保存到外部存储(如Redis或S3)中,提供同步和异步两种检查点模式。同步检查点在保存状态时会短暂停止任务执行,而异步检查点则允许任务继续执行,检查点数据在后台保存,检查点数据分布存储在多个节点上,并支持多任务同时创建检查点

(b) 显示了由编译器生成的延续函数,用来保存检查点后的执行流程,(c) 使用异常处理机制在暂停点恢复,确保任务可以从中断处继续执行
3.3 Concurrency API
两种基本并发机制:任务启动和任务同步

任务启动 (spawn) 并行机制:spawn RPC 用于启动一个新任务,以并行的方式执行某个函数调用(如f(args)),并返回一个Future对象,用于跟踪任务的结果。工作机制是通过创建一个初始检查点。当系统恢复这个检查点时,会执行相应的函数调用。此时,协调器(Coordinator)会调用一个新的lambda函数,从该检查点恢复并执行任务。
先进先出(FIFO)队列机制:如果一个任务尝试向已满的队列入队或从空队列出队,任务将被阻塞。这个机制不仅可以用来实现任务间通信,还可以作为锁和信号量,控制资源的并发访问。
4 Implementation
编译器是用Python编写的,通过Python的pickle库进行状态序列化,每个任务由一个Go协程(goroutine)管理,任务间的同步使用Go的通道(channel)实现,通过锁机制和Redis事务来确保状态更新的原子性
5 Evaluation
检查点开销测试:通过让Lambda函数每100ms创建一次检查点,测量同步和异步检查点的延迟。同步检查点会暂停应用处理直到检查点数据持久化;异步检查点在后台完成持久化操作,允许前台的计算继续
并发操作性能测试:使用多生产者多消费者FIFO队列的任务间消息传递,以评估任务通信的延迟
端到端应用评估:测试包括五个Kappa应用场景:TPC-DS SQL查询、字数统计(Word Count)、并行Grep(Parallel Grep)、流处理(Streaming),以及网络爬虫(Web Crawler)
6 Limitations
Kappa编译器尚未完全支持Python的一些特性,包括try/except、yield、async/await、嵌套函数定义和全局变量,只能在由其编译器转换的代码中进行检查点操作,垃圾回收机制,缺乏静态检查可序列化。
0基础读顶会论文—Kappa:一种用于无服务器计算的编程框架的更多相关文章
- 知识图谱-生物信息学-医学顶刊论文(Bioinformatics-2022)-SGCL-DTI:用于DTI预测的监督图协同对比学习
14.(2022.5.21)Bioinformatics-SGCL-DTI:用于DTI预测的监督图协同对比学习 论文标题: Supervised graph co-contrastive learni ...
- 知识图谱顶会论文(ACL-2022) CAKE:用于多视图KGC的可扩展常识感知框架
CAKE:用于多视图KGC的可扩展常识感知框架.pdf 论文地址:CAKE:Scalable Commonsense-Aware Framework For Multi-View Knowledge ...
- JAVA思维导图系列:多线程0基础
感觉自己JAVA基础太差了,又一次看一遍,已思维导图的方式记录下来 多线程0基础 进程 独立性 拥有独立资源 独立的地址 无授权其它进程无法訪问 动态性 与程序的差别是:进程是动态的指令集合,而程序是 ...
- Android程序开发0基础教程(一)
程序猿学英语就上视觉英语网 Android程序开发0基础教程(一) 平台简单介绍 令人激动的Google手机操作系统平台-Android在2007年11月13日正式公布了,这是一个开放源码的操 ...
- swift3.0基础语法
swift 3.0 基础语法 目录 01-变量和常量 02-运算符 03-可选项 04-条件语句 05-循环 06-字符串 07-元组 08-数组 09-字典 10-对象和类 11-枚举 12-属性 ...
- 0基础的人如何入门 Python ?Python难么?
人生苦短,我用Python,为啥这么说,因为我们自动化测试有金句:学完Python,便可上天 ~ 废话不多说,相信很多人都听过之前的Python进入小学课本.Python进入浙江省高考等新闻,有这么多 ...
- SpringBoot2.0 基础案例(12):基于转账案例,演示事务管理操作
本文源码 GitHub地址:知了一笑 https://github.com/cicadasmile/spring-boot-base 一.事务管理简介 1.事务基本概念 一组业务操作ABCD,要么全部 ...
- 『心善渊』Selenium3.0基础 — 24、Selenium的expected_conditions模块详细介绍
目录 1.EC模块介绍 2.EC模块常用类 3.EC模块的使用 4.EC模块综合使用 (1)title_is(title)示例 (2)presence_of_element_located(locat ...
- 知识图谱-生物信息学-医学顶刊论文(Briefings in Bioinformatics-2021):生物信息学中的图表示学习:趋势、方法和应用
4.(2021.6.24)Briefings-生物信息学中的图表示学习:趋势.方法和应用 论文标题: Graph representation learning in bioinformatics: ...
- 知识图谱-生物信息学-医学顶刊论文(Briefings in Bioinformatics-2021):MPG:一种有效的自我监督框架,用于学习药物分子的全局表示以进行药物发现
6.(2021.9.14)Briefings-MPG:一种有效的自我监督框架,用于学习药物分子的全局表示以进行药物发现 论文标题:An effective self-supervised framew ...
随机推荐
- 关于REACT范式的一些思考
关于REACT范式的一些思考 REACT范式经过近一年的探索,让我们在很多领域有了非常广泛的应用,它确实提升了很多之前无法解决的问题,比如大模型虽然在语言理解和交互式决策方面在任务中表现出令人印象深刻 ...
- 解密Prompt系列36. Prompt结构化编写和最优化算法UNIPROMPT
上一章我们聊了标准化的Prompt生成方案DSPy,但DSPy还是更多依赖few-shot的Prompt编写范式,在纯任务描述型指令上的优化效果有限.这一章我们就重点关注描述性指令优化.我们先简单介绍 ...
- AI驱动的PlantUML:快速生成专业级UML图表
**对于程序员来说,编写验收文档中的各种UML图是最让人头疼的事情之一,相信各位读者对此深有体会.** 本文将探讨如何利用AI驱动的PlantUML来快速生成专业级别的UML图表,从而减轻这一负担. ...
- Adobe Photoshop cc2018 Mac中文破解版下载
下载地址在文章最末,下载之前,先看下安装教程. 前面有说过,2015年以前的老Mac电脑可以安装PS2018的版本,Adobe Photoshop cc2018最低系统需求:10.13以上就可以了,但 ...
- wget 提示 "无法验证 xxxx.xxx 的由 “xxx” 颁发的证书: 无法本地校验颁发者的权限。"
有一天在使用 wget 下载文件时,出现了无法验证证书的提示: $ wget https://github.com/zayronxio/Mkos-Big-Sur/releases/download/0 ...
- 四,分析Spring Boot底层机制(Tomcat 启动分析+Spring容器初始化+Tomcat如何关联 Spring 容器) 以及个人编写启动 Tomcat
四,分析Spring Boot底层机制(Tomcat 启动分析+Spring容器初始化+Tomcat如何关联 Spring 容器) 以及个人编写启动 Tomcat @ 目录 四,分析Spring Bo ...
- JS的可选链操作符(?.)与双问号(??),你用到了吗?
可选链操作符(?.) 以前一般这样使用: let nestedProp = obj.first && obj.first.second; 或者这样: let temp = obj.fi ...
- C++ 指针基础
指针 指针具有强大的能力,其本质是协助程序员完成内存的直接操作 指针: 特定类型数据在内存中的存储地址,即内存地址 指针只是一个逻辑概念,其实际应用是:指针变量 语法 * 符号有两种含义: 声明时:* ...
- Sketch Measure切图插件无法导出标注 (换插件绕过解决)
环境 MacOS 10.15+ sketch版本 69.2 插件版本 2.8.1 遇到的问题 导出标注卡死 更新版本无解,到插件的github issue中找到解决方法 使用MeaXure插件,git ...
- C# 开源浏览器性能提升,体验Chrome级速度
前言 使用 C# 和 CefSharp 开发的全功能网页浏览器. 项目介绍 SharpBrowser 是目前最快的开源 C# 网页浏览器! 采用了轻量级的 CEF 渲染器,在呈现网页时甚至比 Goog ...