鲁爹 發表於 2018-8-27 13:01:00

每秒高达1.6亿次操作的并发键值存储库 FASTER 诞生

<h1 style="text-align: center"><strong>FASTER</strong></h1>
<p><span><span><span>在过去十年中,云中的数据密集型应用程序和服务有了巨大的增长。</span><span>数据在各种边设施(例如,设备,浏览器和服务器)上创建,并由云应用程序处理用来获得数据价值或做出决策。</span><span>应用程序和服务可以处理收集的数据,也可以实时监控数据。</span><span>这些应用程序通常是更新密集型的,并且涉及大量的状态,超出了适合主存储器的处理能力。</span><span>但是,它们在其访问模式中显示出重要的时间局部性(时间局部性解释维基百科=&gt;https://en.wikipedia.org/wiki/Locality_of_reference)。</span><span>一种用于点运算的新的键值存储。</span><span>FASTER将高速缓存优化的并发哈希索引与“混合日志”结合在一起:跨越主内存和存储的并发日志结构记录存储,并且</span><span>支持内存中“热插拔”的快速就地更新。</span><span>FASTER扩展了标准键值存储接口,以处理读取 - 修改 - 写入,blind 更新和基于CRDT的更新。</span><span>实验表明,与当前广泛部署的存储库相比,FASTER在单台机器上实现了更高的吞吐量(每秒高达<span style="font-size: 14pt; color: rgba(255, 0, 0, 1)"><strong>1.6亿</strong></span>次操作),并且当工作负载大小适合内存大小时,他的性能将远胜于纯内存数据结构的性能。</span></span></span></p>
<h2><span><span><span>背景</span></span></span></h2>
<p><span><span>微软研究团队于2018年6月份在SIGMOD 宣布了一项名为FASTER的新的key-value存储库。</span><span>FASTER支持快速和频繁的数据查找。</span><span>它还有助于解决在当今云时代的应用程序更新大量状态信息的问题。</span></span></p>
<p><span><span>让我们以物联网为一种场景</span></span><span><span>。</span><span>数十亿设备报告和更新状态,如每个设备的性能计数器。</span><span>这将导致应用程序未充分利用机器上的存储库和网络等资源。他能更快地帮助解决此问题, 因为它利用这些应用程序中的时间位置来控制系统内存占用量。</span></span></p>
<p><span><span>根据微软的说法,“FASTER是一个单节点共享内存键值存储库”。</span><span>键值存储是NoSQL数据库,它使用简单的键/值方法进行数据存储。</span><span>它包含两项重要创新:</span></span></p>
<ul>
<li><strong>缓存友好,并发和latch-free (闩锁释放,解释链接:https://www.dbtan.com/2010/05/latch-free.html)的哈希索引。</strong><span><span>它维护日志中记录的逻辑指针。</span><span>FASTER哈希索引是指向一个缓存行大小的&nbsp;hash buckets数组,每个都有8字节的条目来保存哈希标签。它还包含指向存储记录的逻辑指针。。</span><span><br></span></span></li>
<li><strong>一个新的并发和混合日志记录分配器</strong><span><span>。</span><span>这有助于支持包括快速存储(例如云存储和SSD)和主存储器的索引。</span></span></li>












</ul>
<h2>是什么让FASTER与众不同?</h2>
<p><span><span>传统的键值存储利用日志结构记录数据。</span><span>但是,FASTER是不同的,因为它有一个混合日志,它结合了日志结构和读取副本更新(适用于外部存储)和就地更新(适用于性能更高的内存)。</span><span>因此,位于存储器中的混合日志的头部使用读取 - 复制 - 更新,而主存储器中的混合日志尾部使用就地更新。</span><span>内存中有一个位于这两个区域之间的只读区域。</span><span>它为核心记录提供了另一个被复制回尾部的机会。</span><span>这捕获了更新的临时位置,并允许在内存中自动的收集热记录。</span></span></p>
<p><span><span>因此,FASTER甚至能够超越英特尔TBB hash map等纯内存数据结构。</span><span>微软表示,它的性能远远优于今天流行的诸如RocksDB和Redis等键值存储的缓存系统。</span></span></p>
<p><span><span>除此之外,FASTER还为故障恢复提供支持,因为它包含一个恢复策略,有助于将系统以低成本恢复到最近的一致状态。</span><span>这与传统数据库系统中的恢复机制不同,因为它不涉及阻止或创建单独“预写的日志”。</span></span></p>
<p>有关更多信息,请查看官方研究报告。</p>
<p>FASTER项目Github地址:https://github.com/Microsoft/FASTER</p>
<p><img src="https://images2018.cnblogs.com/blog/578477/201808/578477-20180827125737014-728759951.png" alt=""></p>
<h2>&nbsp;价值:</h2>
<p>有人会问,有了这个FASTER,既然他速度这样快是不是可以代替redis或者mongodb,答案是目前不能,因为FASTER是内核级的,和Google的leveldb差不多层级,FASTER速度非常快毋庸置疑,但是目前缺少更高复杂业务场景的支持,比如集群,数据一致性之类的商用需求,不过如此诱人的性能必定吸引更多的人去投入FASTER中开发出类似redis和mongodb的产品出来,性能也必定更强,说不定redis后期底层就用FASTER改写了。🤭</p>
<p>翻译参考:</p>
<p>https://hub.packtpub.com/say-hello-to-faster-a-new-key-value-store-for-large-state-management-by-microsoft/</p>
<p>https://www.microsoft.com/en-us/research/publication/faster-concurrent-key-value-store-place-updates/</p>
<p>https://www.microsoft.com/en-us/research/blog/microsoft-unveils-faster-key-value-store-large-state-management/</p>

</div>
<div id="MySignature" role="contentinfo">
    <img src="https://blog.52itstyle.com/usr/uploads/6359488940289160158582279.gif">
<div class="content">
    <div>作者:Chaunce</div>
    <div>来源:http://www.cnblogs.com/xiaoliangge/</div>
<div>GitHub:https://github.com/liuyl1992</div>
<div>个人地址:http://blog.chaunce.top</div>
<div style="color: red; font-family: &quot;Microsoft YaHei&quot;; text-decoration: none"><h2>公众号请搜:架构师高级俱乐部 SmartLife_com</h2></div>
<img src="https://files-cdn.cnblogs.com/files/xiaoliangge/640.gif" height="300" width="500">
    <div style="background-color: #FFD382; font-size: 1.1em; padding: 10px; margin-bottom: 5px">声明:原创博客请在转载时保留原文链接或者在文章开头加上本人博客地址,如发现错误,欢迎批评指正。凡是转载于本人的文章,不能设置打赏功能等盈利行为</div>
</div><br><br>
来源:https://www.cnblogs.com/xiaoliangge/p/9539735.html
頁: [1]
查看完整版本: 每秒高达1.6亿次操作的并发键值存储库 FASTER 诞生