一个迄今为止最快的并发键值存储库FASTER诞生

FASTER

在过去十年中,云中的数据密集型应用程序和服务有了巨大的增长。数据在各种边设施(例如,设备,浏览器和服务器)上创建,并由云应用程序处理用来获得数据价值或做出决策。应用程序和服务可以处理收集的数据,也可以实时监控数据。这些应用程序通常是更新密集型的,并且涉及大量的状态,超出了适合主存储器的处理能力。但是,它们在其访问模式中显示出重要的时间局部性(时间局部性解释维基百科=>https://en.wikipedia.org/wiki/Locality_of_reference)。一种用于点运算的新的键值存储。FASTER将高速缓存优化的并发哈希索引与“混合日志”结合在一起:跨越主内存和存储的并发日志结构记录存储,并且支持内存中“热插拔”的快速就地更新。FASTER扩展了标准键值存储接口,以处理读取 - 修改 - 写入,blind 更新和基于CRDT的更新。实验表明,与当前广泛部署的存储库相比,FASTER在单台机器上实现了更高的吞吐量(每秒高达1.6亿次操作),并且当工作负载大小适合内存大小时,他的性能将远胜于纯内存数据结构的性能。

背景

微软研究团队于2018年6月份在SIGMOD 宣布了一项名为FASTER的新的key-value存储库。FASTER支持快速和频繁的数据查找。它还有助于解决在当今云时代的应用程序更新大量状态信息的问题。

让我们以物联网为一种场景。数十亿设备报告和更新状态,如每个设备的性能计数器。这将导致应用程序未充分利用机器上的存储库和网络等资源。他能更快地帮助解决此问题, 因为它利用这些应用程序中的时间位置来控制系统内存占用量。

根据微软的说法,“FASTER是一个单节点共享内存键值存储库”。键值存储是NoSQL数据库,它使用简单的键/值方法进行数据存储。它包含两项重要创新:

  • 缓存友好,并发和无锁存的哈希索引。它维护日志中记录的逻辑指针。FASTER哈希索引是指向一个缓存行大小的 hash buckets数组,每个都有8字节的条目来保存哈希标签。它还包含指向存储记录的逻辑指针。。

  • 一个新的并发和混合日志记录分配器。这有助于支持包括快速存储(例如云存储和SSD)和主存储器的索引。

是什么让FASTER与众不同?

传统的键值存储利用日志结构记录数据。但是,FASTER是不同的,因为它有一个混合日志,它结合了日志结构和读取副本更新(适用于外部存储)和就地更新(适用于性能更高的内存)。因此,位于存储器中的混合日志的头部使用读取 - 复制 - 更新,而主存储器中的混合日志尾部使用就地更新。内存中有一个位于这两个区域之间的只读区域。它为核心记录提供了另一个被复制回尾部的机会。这捕获了更新的临时位置,并允许在内存中自动的收集热记录。

因此,FASTER甚至能够超越英特尔TBB hash map等纯内存数据结构。微软表示,它的性能远远优于今天流行的诸如RocksDB和Redis等键值存储的缓存系统。

除此之外,FASTER还为故障恢复提供支持,因为它包含一个恢复策略,有助于将系统以低成本恢复到最近的一致状态。这与传统数据库系统中的恢复机制不同,因为它不涉及阻止或创建单独“预写的日志”。

有关更多信息,请查看官方研究报告。

FASTER项目Github地址:https://github.com/Microsoft/FASTER

640?wx_fmt=png

 

翻译参考:

https://hub.packtpub.com/say-hello-to-faster-a-new-key-value-store-for-large-state-management-by-microsoft/

https://www.microsoft.com/en-us/research/publication/faster-concurrent-key-value-store-place-updates/

https://www.microsoft.com/en-us/research/blog/microsoft-unveils-faster-key-value-store-large-state-management/

原文地址: https://www.cnblogs.com/xiaoliangge/p/9539735.html


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

640?wx_fmt=jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/320205.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

牛客网【每日一题】4月30日题目精讲 换个角度思考

链接: 文章目录题目描述题解:主席树做法:代码:树状数组:更扯淡的方法!!!时间限制:C/C 1秒,其他语言2秒 空间限制:C/C 262144K,其他语言…

三元环计数四元环计数

三元环计数 问题 给出一张n个点m条边的无向图,问图中有多少个三元组{ u , v , w } ,满足图中存在 { (u,v) , (v,w) , (w,u) } 三条边。 求解 Step1 定向 将所有点按 度数 从小到大排序,如果度数相同按 点编号 从小到大排序,u…

牛客网【每日一题】5月1日题目 [SCOI2012]滑雪与时间胶囊

链接: 时间限制:C/C 2秒,其他语言4秒 空间限制:C/C 262144K,其他语言524288K 64bit IO Format: %lld题目描述 a180285非常喜欢滑雪。他来到一座雪山,这里分布着M条供滑行的轨道和N个轨道之间的交点&#x…

漫谈单体架构与微服务架构(上):单体架构

最近微服务架构特别火爆,就跟人工智能、区块链一样,软件架构设计如果不提微服务,感觉就像是与世界先进的架构风格和开发技术脱了节似的,各方各面都无法彰显高大上的气质。本来再打算使用一套系列文章来讨论微服务的方方面面&#…

ASP.NET Core应用程序的参数配置及使用

应用程序的开发不仅仅是写代码这点事情。假设你正在开发一个能够支持多次部署的微服务,此时你就需要有一个合理的应用程序配置方案,以便在开发和生产环境中能够方便地选用不同的配置参数,并且能够在部署到容器服务(比如ACS或者Kub…

“Shopee杯” e起来编程暨武汉大学2020年大学生程序设计大赛决赛(重现赛)

比赛链接 文章目录A题 A Simple Problem about election题目描述题解:代码:D题 Deploy the medical team题意:题解:代码:F题 Figure out the sequence题意:题解:代码A题 A Simple Problem about…

RabbitMQ一个简单可靠的方案(.Net Core实现)

前言最近需要使用到消息队列相关技术,于是重新接触RabbitMQ。其中遇到了不少可靠性方面的问题,归纳了一下,大概有以下几种:1. 临时异常,如数据库网络闪断、http请求临时失效等;2. 时序异常,如A任…

牛牛染颜色

链接: 文章目录题目描述题意:题解:核心代码:时间限制:C/C 1秒,其他语言2秒 空间限制:C/C 131072K,其他语言262144K 64bit IO Format: %lld题目描述 牛牛最近得到了一颗树&#xff0…

.netcore consul实现服务注册与发现-单节点部署

一、Consul的基础介绍Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置。与其他分布式服务注册与发现的方案,比如 Airbnb的SmartStack等相比,Consul的方案更“一站式”,内置了服务注册与发现框 架、分布一…

分布式事务解决方案以及 .Net Core 下的实现(上)

数据一致性是构建业务系统需要考虑的重要问题 , 以往我们是依靠数据库来保证数据的一致性。但是在微服务架构以及分布式环境下实现数据一致性是一个很有挑战的的问题。最近在研究分布式事物,分布式的解决方案有很多解决方案,也让我在研究的同…

微软MVP张善友告诉你,微服务选型要注意这些地方

周六的下午,广州周大福金融中心的写字楼静悄悄的,53楼的实盈多功能会议室却异常火爆,热闹非凡。来自广州各大科技公司的技术小伙伴们齐聚一堂,他们都在期待着一个人,那就是——微软MVP张善友和他带来的 .NET Core 微服…

像鱼

链接: 时间限制:C/C 1秒,其他语言2秒 空间限制:C/C 262144K,其他语言524288K 64bit IO Format: %lld题目描述 给你一个边长为 n 的用硬币摆成的实心三角形,请问把他倒过来最少需要多少步? 例子…

[ZJOI2005]午餐(贪心+dp)

首先若只有一个窗口,利用贪心,按吃饭时间从大到小排序即可 正确性证明: 定义 eat[i] 第i个人的吃饭时间,time[i] 第i个人的打饭时间 延长时间T[i]max(eat[i]- ∑ji1ntimej\sum\limits_{ji1}^ntime_jji1∑n​timej​ ,0) 最后…

【图论】【模板】静态仙人掌(luogu 5236)

【模板】静态仙人掌 题目大意 给你一个无向仙人掌图(保证每条边至多出现在一个简单回路中的无向图),问你两个点之间的最短路距离 输入样例#1 9 10 2 1 2 1 1 4 1 3 4 1 2 3 1 3 7 1 7 8 2 7 9 2 1 5 3 1 6 4 5 6 1 1 9 5 7输出样例#1 5 …

SCF: 简单配置门面

Simple Configuration Facade, 简写为 SCF。是 代码 和 外部配置 (properties文件, 环境变量,系统/命令行参数, yaml文件, 等等)之间的一层抽象. 命名上和另一个著名组件slf4j (Simple Logging Facade for Java)相似, 在配置领域的地位也和slf4j (.NET可…

【矩阵乘法】【倍增】美食家(luogu 6772)

美食家 题目大意 给你一个有向图,边权为经过所需时间 每个点有一个点权,有些点还有有特殊的点权 当你到达一个点后,可以获得该点的点权(重复经过可以重复获得,但不能停留),若在某个时间到某个…

.net core实践系列之短信服务-为什么选择.net core(开篇)

前言从今天我将会写.net core实战系列,以我最近完成的短信服务作为例子。该系列将会尽量以最短的时间全部发布出来。源码也将优先开源出来给大家。源码地址:https://github.com/SkyChenSky/Sikiro.SMS.NET CORE简介ASP.NET Core 是一个跨平台的高性能开源…

.netcore consul实现服务注册与发现-集群完整版

一、Consul的集群介绍Consul Agent有两种运行模式:Server和Client。这里的Server和Client只是Consul集群层面的区分,与搭建在Cluster之上的应用服务无关, 以Server模式运行的Consul Agent节点用于维护Consul集群的状态,官方建议每…

浅谈surging服务引擎中的rabbitmq组件和容器化部署

1、前言上个星期完成了surging 的0.9.0.1 更新工作,此版本通过nuget下载引擎组件,下载后,无需通过代码build集成,引擎会通过Sidecar模式自动扫描装配异构组件来构建服务引擎,而这篇将介绍浅谈surging服务引擎中的rabbi…

csp-j/s总结

文章目录csp-jcsp-s总结csp-j T1傻逼题(我是傻逼),手残把&打成整除了(大样例还对了gg) T2乱推,然后打了个O(n)O(n)O(n),却WA了15分? T3看了看,修改不会相互影响?那不…