滴滴开源 Levin:数据闪电加载方案

Levin是一个开源的数据闪电加载方案,旨在解决服务启动时加载大量低频更新、静态使用的大规模数据的问题。它通过共享内存和离线数据编译,加速大内存服务的冷启动和热加载,提供了STL-like的共享内存容器,支持离线数据编译、在线数据加载、版本管理和管理模块等功能,显著提升了加载效率并优化了内存使用。
摘要由CSDN通过智能技术生成

1.背景

互联网某些业务场景下,我们常会遇到这种情况:服务启动需要加载大量数据到内存,数据规模达数十G,数据更新频率较低(天级、小时级、分钟级),使用方式为静态查询。如业务订单数据、线下挖掘的策略规则,地图路网数据等。而在线服务基于稳定性考虑通常至少加载双版本数据,服务启动通常需要数分钟之久。暴露的问题包括服务上线旷日持久,人力成本高;需求排队无法快速迭代,时间成本高;回滚速度慢,由于要加载大量数据故障实例无法快速恢复造成稳定性隐患。

如同闪电(Levin)一般快速加载启动是根治这类问题的灵丹妙药。Levin是针对上述低频更新、静态使用、大规模数据的快速加载方案,高效托管大规模静态数据,加速大内存服务冷启动和热加载。

2.原理

服务启动唯快不破,但是在单纯的服务变更场景中(比如上线、回滚、故障恢复)虽然并不涉及任何数据变更,服务进程重启导致堆和栈内存数据都会随之消亡,启动后需要重新加载数据。那么数据能不能在进程间传递复用呢?最高效的进程间数据传递方式就是共享内存,共享内存可以突破进程生命周期实现跨进程重用,并且具有内存对象访问效率和充足的可用地址空间(下图Memory Mapping Area),鱼(启动速度)与熊掌(查询效率)可以兼得。

再考虑数据更新场景,通常指数据版本切换,此时磁盘数据读取在所难免,那么从数十G的数据文件到内存数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值