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 ...
随机推荐
- [NOIP2010 提高组] 关押罪犯 - 洛谷
P1525 [NOIP2010 提高组] 关押罪犯 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 种类并查集 #include <bits/stdc++.h> #def ...
- MFC状态栏的创建与添加进度条
1.首先要创建状态栏 MFC中创建状态栏是用数组来分隔格子的.所以要先弄个数组 下面在自己继承的CWnd类.cpp文件中定义一个静态数组indicators static UINT indicator ...
- JAVA学习——JDK开发环境配置
2024/07/08 一.JDK下载 二.安装与JDK开发环境配置(Windows) 三.安装与JDK开发环境配置(Linux) 一.JDK下载与安装 网址: https://www.oracle.c ...
- C# 使用正则表达式 将金额转换为中文大写
/// <summary> /// decimal转换成中文大写 /// </summary> /// <param name="number"> ...
- ELK快速部署(踩坑记录、常见报错解决)及常用架构讲解
ELK = Elasticserach + Logstash + kibana(包含但不仅限于) 简介: Elasticsearch:分布式搜索和分析引擎,具有高可伸缩.高可靠和易管理等特点.基于 A ...
- docker高级篇-docker-compose容器编排介绍及实战
Docker-compose是什么?能干嘛?解决了哪些痛点? 是什么? Docker-compose是Docker官方推出 的一个工具软件,可以管理多个Docker容器组成的一个应用.你需要编写一个一 ...
- 报错解决:partially initialized module 'charset_normalizer' has no attribute 'md__mypyc' (most likely due to a circular import)
在运行jupyter 时候报错'partially initialized module 'charset_normalizer' has no attribute 'md__mypyc' (most ...
- DOM – Dimension & Coordinate (offset, client, computed, rect)
前言 很多年前有记入过一篇 box-sizing 和 dom width. 想想也挺可悲的, 那年我是负责后端的, 却要帮着前端去学习这些知识来解决问题... 也好, 现在 full stack, 也 ...
- Docker基本操作(端口?网络模式?)(五)
一.端口暴露 Docker 容器更多情况下是用来运行 Web 应用的,所以要如何访问到容器中的 Web 服务呢?比如我们现在运行一个 nginx 容器服务: $ docker run --name w ...
- 深入理解 Nuxt.js 中的 app:error:cleared 钩子
title: 深入理解 Nuxt.js 中的 app:error:cleared 钩子 date: 2024/9/28 updated: 2024/9/28 author: cmdragon exce ...