《IEEE Transactions on Parallel and Distributed Systems》:Arcus: Fast and Reliable Function State I/O for Serverless Computing With Log-Cache Co-Design
编辑推荐:
摘要:无服务计算凭借其简化的开发模型、自动伸缩能力和细粒度计费机制,已成为一种极具吸引力的云计算范式。尽管其无状态执行模型实现了高弹性和资源效率,但也为构建复杂的有状态应用带来了显著挑战。为弥合这一鸿沟,现代无服务平台依赖外部云存储系统来管理持久状态,由此催生
摘要:无服务计算凭借其简化的开发模型、自动伸缩能力和细粒度计费机制,已成为一种极具吸引力的云计算范式。尽管其无状态执行模型实现了高弹性和资源效率,但也为构建复杂的有状态应用带来了显著挑战。为弥合这一鸿沟,现代无服务平台依赖外部云存储系统来管理持久状态,由此催生了有状态无服务计算。然而,这种解耦架构引入了两个根本性限制:频繁远程状态访问所导致的性能瓶颈,以及函数崩溃重试所引发的状态可靠性问题。研究人员提出了Arcus,一个面向幂等执行与低延迟访问协同设计的高性能函数状态I/O系统。Arcus整合了两项关键技术:CFLog,一种无协调日志机制,在消除内部排序开销的同时确保函数幂等执行;以及FCCache,一种针对无服务工作负载分散调用模式优化的缓存系统,通过提高本地读命中率和缩短写路径来降低读写延迟。与最先进的Halfmoon系统相比,Arcus将读写延迟分别降低了80.4%和87.9%。在使用三个真实世界应用的评估中,Arcus实现了端到端请求延迟平均60.3%的降低,验证了其在快速可靠函数状态I/O方面的有效性。CCBY - IEEE并非本材料的版权持有者。请通过https://creativecommons.org/licenses/by/4.0/上的说明获取全文文章和API文档中的规定。
论文解读文章
一、研究背景与问题
无服务计算(Serverless Computing)作为下一代云原生应用构建的关键技术范式,凭借其开发便捷性、弹性伸缩能力以及按需付费的计费模式,正获得越来越广泛的关注与应用。其核心是函数即服务(Function-as-a-Service, FaaS)模型,将应用逻辑分解为一系列短生命周期、无状态的函数实例,从而将应用开发与基础设施管理完全解耦。然而,这一无状态执行模型在实现高弹性和资源效率的同时,也面临着支撑有状态应用的严峻挑战。在实际场景中,诸多在线微服务应用,如社交网络应用中的帖子发送与读取、媒体评论应用中的电影评论浏览、旅行预订应用中的订单创建与查看等,均涉及对共享状态的高频读写操作。由于函数实例天然是无状态且短暂的,开发者必须依赖外部持久化存储系统,如云数据库、对象存储或分布式键值存储,来管理全局应用状态。这种计算与存储解耦的架构虽然带来了强弹性和高资源利用率,却也引入了两大关键问题:其一,函数与远程存储之间的频繁往返通信不可避免地产生了显著访问延迟,严重制约了应用整体性能;其二,计算与存储的分离引发了对状态可靠性的担忧,因为函数在执行过程中可能崩溃并重试,这些重试可能对外部状态发出重复的I/O请求,从而损害状态正确性,进而破坏应用逻辑。
针对上述挑战,现有研究工作通常通过为无服务架构增加缓存层以及采用操作日志技术来寻求解决方案。缓存系统利用函数节点上的空闲内存构建分布式缓存以加速热点数据的访问,而日志机制则在共享日志中记录函数实例执行的每一步操作,以保证幂等执行,从而确保状态正确性。然而,研究人员的实验测量表明,即便同时引入分布式缓存与操作日志,系统性能仍显著落后于状态读写操作的理论理想延迟。一方面,现有缓存设计在读写请求集中于单一函数节点时表现良好,但在实际生产环境中,由于负载均衡机制的作用,函数调用被随机分配到不同节点,导致频繁的本地缓存未命中。另一方面,为维护日志条目的全局顺序,现有共享日志系统需要付出高昂的节点间协调开销,这直接增加了操作日志记录的延迟。因此,亟需一种能够适配无服务环境中分散请求模式的新型缓存方案,以及一种满足操作日志需求且低开销的日志系统。
二、研究内容与系统设计
针对上述问题,研究人员提出了Arcus——一个面向无服务计算、日志与缓存协同设计的I/O加速系统。Arcus的核心设计理念包含两项关键技术:其一为无协调日志(Coordination-Free Logging, CFLog),其二为快速一致性缓存(Fast Coherence Caching, FCCache)。Arcus系统整体架构部署于FaaS平台与外部存储系统之间,由I/O代理(I/O Agent)、目录服务器(Directory Server)、日志服务器(Log Server)、客户端库(Client Library)和控制平面(Control Plane)等核心组件构成。I/O代理运行于每个函数节点,负责管理本地函数的状态访问,利用本地缓存进行数据读写并记录操作日志,同时维护名为MetaCache的结构以加速读写过程。
CFLog机制的设计源于对无服务环境日志特性的深入分析。传统共享日志系统为实现全局写入排序付出了高昂的协调开销,而无服务操作日志的核心用途是确保恰好一次执行和故障恢复,其实际需求仅是识别最新值并确保可靠存储,而非严格的全局排序。基于这一洞察,CFLog引入了带版本的日志条目(Versioned Log Entry)机制,为每个数据项附加由创建它的函数节点分配的版本标识,从而在无需全局日志排序的条件下也能始终获取最新值。同时,CFLog依据数据项的键通过一致性哈希(Consistent Hashing)将日志条目分区,确保同一数据项的所有日志路由至相同分区,并支持将日志直接并行写入该分区的全部副本节点,彻底消除了节点间协调开销。每个CFLog节点由LogStore和ExecutionTable两个组件构成,前者采用日志结构合并树(Log-Structured Merge-tree, LSM-tree)存储架构将日志持久化至本地固态硬盘(SSD),后者为内存结构,记录每个数据项的最大版本号、对应的操作标识符以及是否已同步至外部存储的标记。
FCCache机制的设计目标是适应无服务环境中负载均衡导致的分散请求模式。传统MESI缓存一致性协议在请求跨多个节点时产生大量远程访问,每次访问均需联系目录服务器查找数据并确保原子性,严重损害读写性能。FCCache采用急切值传播(Eager Value Propagation)策略,在写入时主动将新值推送至所有缓存该数据的节点,使后续读操作无需跨越节点即可在本地命中。该传播过程分为失效(Invalidate)和验证(Validate)两个阶段:失效阶段中,写入节点向所有缓存该数据项的节点发送失效请求,各节点将数据项标记为Error状态并阻塞后续读取,写入节点仅在收到全部确认后才更新本地值;验证阶段中,写入节点异步发送验证请求以交付新值,接收节点将数据项状态从Error转为Valid以恢复读取。由于写操作在失效阶段结束时其序列化点即已确定,因此I/O代理可在失效阶段完成后立即向函数返回成功响应,验证阶段则异步执行。此外,FCCache通过逻辑时间戳排序(Logical Timestamp Ordering)和基于MetaCache的寻址(MetaCache-assisted Addressing)机制,在写入过程中绕过目录服务器查找并高效定位和排序数据更新,显著缩短了写入路径。逻辑时间戳格式为〈计数器,节点ID〉,通过计数器大小优先、节点ID大小作为决胜规则来裁定并发写入的先后次序。MetaCache在每个节点本地维护所缓存数据项的副本集(copyset),使得后续写入可直接从本地获取副本集,无需访问目录服务器。同时,MetaCache还维护WIDSet的本地副本以加速写入去重检查,避免查询远程日志节点。
三、主要技术方法与实验结果
在实验评估方面,研究人员在AWS EC2 c5d.2xlarge实例上构建了Arcus原型系统,核心组件约8,400行C++代码,客户端库约300行Go代码。节点间通信基于Apache bRPC高性能RPC框架,日志节点部署RocksDB作为持久化存储引擎。实验环境包括八个函数节点和一个函数网关节点,外部存储采用Amazon DynamoDB。对比系统为Halfmoon和Halfmoon-Cache,其中Halfmoon代表最先进的容错有状态无服务计算方案,Halfmoon-Cache是在Halfmoon基础上扩展了基于MESI协议的普通缓存层。
实验评估涵盖五个方面:微基准测试、CFLog性能测试、FCCache性能测试、端到端应用负载测试、容错性测试以及可扩展性与开销测试。微基准测试结果表明,在所有读写比例和数据大小条件下,Arcus相比Halfmoon将读延迟降低了约80%,写延迟分别比Halfmoon和Halfmoon-Cache降低了7.6倍和3.1倍。CFLog性能测试显示,在较低吞吐量下,CFLog同步和异步实现的日志记录延迟均显著低于Halfmoon,约为其30%。FCCache性能测试表明,在高读比例条件下,FCCache与VCache的读延迟接近;在低读比例条件下,FCCache因读操作阻塞时间短于VCache的远程访问时间而表现更优;写延迟方面,VCache始终约为FCCache的1.3至1.5倍。端到端应用负载测试使用了三个真实世界应用:旅行预订应用(含10个无服务函数,数据存储于8张DynamoDB表)、电影评论社交媒体应用(含13个无服务函数,数据存储于5张DynamoDB表)以及Retwis(简易Twitter克隆应用)。实验结果显示,Arcus在所有三个应用中均显著降低了端到端请求延迟,相比Halfmoon-Cache降低了1.2至2.7倍的延迟。容错性测试模拟了函数节点、日志节点和目录节点故障,结果表明Arcus在各类节点故障期间能有效维持系统可用性,未受影响键的读写尾延迟保持在774至884微秒范围内。可扩展性测试将系统扩展至48个函数节点,结果显示读写延迟保持稳定,无明显增长,验证了系统的可扩展性;内存开销虽随节点数增加而上升,但远小于总数据规模,不构成系统瓶颈。
四、研究结论
综上所述,Arcus通过CFLog和FCCache两项核心技术的协同设计,成功实现了无服务计算环境中函数状态I/O的低延迟访问与高可靠性保证。CFLog通过消除日志全局排序要求,大幅降低了日志记录的节点间协调开销,同时利用版本化日志条目标签确保了幂等执行语义。FCCache通过急切值传播和逻辑时间戳排序机制,有效适应了无服务工作负载的分散访问模式,提升本地缓存命中率并缩短写入路径。实验评估表明,与最先进的容错无服务平台Halfmoon相比,Arcus将状态访问延迟降低了80%至88%;与在Halfmoon基础上扩展缓存层的Halfmoon-Cache相比,延迟降低了57%至69%。这一研究成果为有状态无服务计算系统中的状态I/O性能优化与可靠性保障提供了有效的解决方案。