首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏廖念波的专栏

    谈谈 KV 存储集群的设计要点

    Key-value存储系统,是非常普遍的需求,几乎每个在线的互联网后台服务都需要KV存储,我们团队在KV存储方面,经历过几个时期,我自己深感要做好不容易。 第三个时期,为了应对普遍的KV存储需求,我们以公共组件的形式重新设计了KV存储,作为团队标准的组件之一,得到了大规模的应用。 一句话:团队自己做一个KV存储系统是成本很高的,而且也有比较高的技术门槛。 设计一个KV存储,需要考虑至少这些方面: 如何组织机器的存储介质,通常是内存、磁盘文件;例如用hash的方式组织内存 如何设计用户的数据结构,使得通用、易于扩展、存储利用率高;例如PB序列化、Json、 存储,用于存储一些公众号的个数不受限粉丝列表 上面八点,业内的KV存储组件一般都会考虑到,或者各有特色,各自优势在伯仲之间。

    5.2K00发布于 2016-10-03
  • 来自专栏QQ音乐技术团队的专栏

    KV存储跨IDC容灾部署

    1.背景   目前部分KV存储不支持跨IDC部署,所以如果有机房故障的话,就会影响KV存储的可用性。本文提供了一种通过KV存储代理层来实现跨IDC容灾部署的方案。 2.实现原理 ?    为了降低存储代理的压力,读写服务可以做读写分离,读取操作可以直接访问本地存储3.KV存储代理层实现原理 ?    客户端通过API接入KV存储代理, 如果是写操作, 存储代理会先写流水再操作本地KV存储. 流水转发程序会每隔10ms扫描流水,然后转发给流水转换服务. ,而KV存储本身不一定是支持跨IDC容灾部署的。 本文提供了一个通用的解决方案,实现KV存储跨IDC容灾部署。   

    1.8K80发布于 2018-01-30
  • 来自专栏鸿蒙开发笔记

    OpenHarmony 移植案例与原理 - utils子系统之KV存储部件 (3)

    5、KV存储部件对应UtilsFile接口部分的代码分析下KV存储部件对应UtilsFile接口部分的代码。 #define KV_SUM_FILE "KV_FILE_SUM"#define KV_SUM_INDEX 4......static int GetCurrentItem(void value[KV_SUM_INDEX] = {0}; int ret = UtilsFileRead(fd, value, KV_SUM_INDEX); UtilsFileClose(fd `1.OpenHarmony开发基础2.OpenHarmony北向开发环境搭建3.鸿蒙南向开发环境的搭建4.鸿蒙生态应用开发白皮书V2.0 & V3.05.鸿蒙开发面试真题(含参考答案) 6.TypeScript 存储部件的移植适配案例,分析了部件源代码。

    16610编辑于 2025-06-15
  • 来自专栏携程技术

    干货 | 携程持久化KV存储实践

    图1 随着业务发展和Redis集群的日益增长,需求更加多样化,需要在私有云上同样能有一种持久化的KV存储系统来提供服务,包括: 1)KV存储和读写的场景,Redis能提供的存储上限过低,需要有大容量的 KV存储系统; 2)数据持久化,而不是像Redis那样重启数据即丢失; 3)节约Redis的使用成本,毕竟私有云上的Redis集群非常庞大; 4)提供类似selectforudpate的语义来实现库存之类字段的扣减 性能也是重要考量的一块,希望找到一种性能优异的KV数据库。 如图3所示,当满足响应的slave为2的时候,半同步即可认为完成,即使此时另外两台slave可能还未完成同步工作。 ? 图3 但这种方式在多机房部署的情况仍然可能存在问题。 而如果换成NVME SSD这个QPS可以提升3-5倍。

    1.4K20发布于 2021-07-22
  • 来自专栏小白debug

    聊聊原美图开源的 kv 存储 titan

    市面上开源 kv 轮子一大堆,架构上都是 rocksdb 做单机引擎,上层封装 proxy, 对外支持 redis 协议,或者根据具体业务逻辑定制数据类型,有面向表格 table 的,有做成列式存储的 ,这也是为什么代码量如此少 压测[3] 数据只有 2018 年的,性能一般,latency 也没区分 99 和 95 分位。 如果基于最新版本的 tikv 集群测试效果可能更好 数据类型实现 目前数据结构只实现了 string, set, zset, hash, list, 有些也只是部分支持,只能说够用 持久化的 kv 轮子 原因在于对于 Linsert 操作,如果插入 (2, 3) 之间,那么会失败,但是用 float64 大概率会成功,但是考滤 float64 也有精度问题,存在失败的概率 // calculateIndex 可以说 tikv 减少了持久化 kv 开发难度,也束缚了灵活性 删除 GC Delete 时,删除 MetaKey,如果存在 TTL 那么删除 ExpireKey, 对于非 String,将 DataKey

    55510编辑于 2023-09-13
  • 来自专栏roseduan写字的地方

    使用 WAL 构建你自己的 KV 存储

    这篇文章将主要描述,如何使用我最近新开发的 WAL(Write Ahead Log)构建属于你自己的 KV 存储引擎。 简单可靠的 KV 存储引擎。 ,也可以使用 wal 来存储 kv 分离之后的 Value Log 文件。 首先,我们要做的就是选择一个内存数据结构,比如 B-Tree、跳表、红黑树、哈希表等等都是可以的,只要是能够存储一个 KV 值即可。 这几个主要的步骤一完成,一个最基础的 KV 存储引擎就构建起来了,当然你还可以基于此做很多的完善和优化。

    61420编辑于 2023-09-01
  • 来自专栏roseduan写字的地方

    硬核项目 KV 存储,轻松拿捏面试官!

    本文是《从零实现 KV 存储》课程的面试要点总结,相当于只要你学习了课程,以下提到的内容都是你自己完成的。 对课程感兴趣的同学可以进这个链接查看详情:https://w02agegxg3.feishu.cn/docx/Ktp3dBGl9oHdbOxbjUWcGdSnn3g 在简历上如何写这个项目? 项目概述 基于 Bitcask 模型,兼容 Redis 数据结构和协议的高性能 KV 存储引擎 设计细节 采用 Key/Value 的数据模型,实现数据存储和检索的快速、稳定、高效 存储模型:采用 Bitcask 有哪些适用场景 缓存系统 KV 数据库可用作缓存系统的后端存储,以提供快速的数据访问和响应能力。 由于 Bitcask 存储模型具有高性能和低读写放大的特性,它适合存储频繁访问的热数据,提供快速的缓存读取操作。 日志存储 KV 数据库可以作为日志存储系统使用,将日志数据持久化到磁盘上的日志文件中。

    1.3K20编辑于 2023-09-01
  • 来自专栏roseduan写字的地方

    一个全新的 kv 存储引擎 — LotusDB

    idea,让我有了做一个新的 kv 存储引擎的想法。 感兴趣的可以参考下论文,叫做 SLM-DB,地址:https://www.usenix.org/conference/fast19/presentation/kaiyrakhmet 众所周知,数据存储引擎 B+ 树读性能稳定,而 LSM 写吞吐高,LotusDB 在这基础上做了一个巨大的改动,就是完全舍弃掉 LSM 中的 SST 文件,改由 B+ 树来存储索引,而 value 存放则参考了 Wisckey 和 bitcask 模型的设计,存储到单独的 value log 文件中。 = nil { // ... } // 3.----get---- val, err := db.Get(key1) if err !

    1K20编辑于 2022-04-18
  • 来自专栏分布式研究小院

    200行代码实现基于paxos的kv存储

    这是一个基于paxos, 200行代码的kv存储系统的简单实现, 作为 [paxos的直观解释] 这篇教程中的代码示例部分. 这个项目中除了paxos实现, 用3个test case描述了3个paxos运行的例子, [TestCase1SingleProposer] : 无冲突运行. , 但相比真正生产可用的kv存储, 还缺少一些东西: 写操作一般都不需要用户指定ver, 所以还需要实现对指定key查找最大ver的功能. 的行为, 对应Phase3, 本文中描述的这个存储中, 只有Proposer知道某个key-ver达到多数派, Acceptor还不知道, (所以读的时候还要走一遍paxos). 以上这3块内容, 后续播出, 下个版本的实现将使用经典的log 加 snapshot的方式存储数据.

    60510编辑于 2022-04-28
  • 来自专栏后端码匠

    美团万亿级 KV 存储架构与实践

    美团点评 KV 存储发展历程 美团第一代的分布式 KV 存储如下图左侧的架构所示,相信很多公司都经历过这个阶段。 在客户端内做一致性哈希,在后端部署很多的 Memcached 实例,这样就实现了最基本的 KV 存储分布式设计。 内存 KV Squirrel 架构和实践 在开始之前,本文先介绍两个存储系统共通的地方。比如分布式存储的经典问题:数据是如何分布的?这个问题在 KV 存储领域,就是 Key 是怎么分布到存储节点上的。 如果 A 节点宕机后 3~5 分钟,或者网络抖动 30~50 秒之后恢复了,A 节点就会上报心跳到中心节点,中心节点就会通知 B 节点:“ A 节点恢复了,你去把它不在期间的数据传给它。” 在硬件层面,像支持 RDMA 的智能网卡能大幅降低网络延迟和提升吞吐;还有像 3D XPoint 这样的闪存技术,比如英特尔新发布的 AEP 存储,其访问延迟已经比较接近内存了,以后闪存跟内存之间的界限也会变得越来越模糊

    1.5K20发布于 2020-07-22
  • 来自专栏NebulaGraph 技术文章

    Nebula Graph 的 KV 存储分离原理和性能测评

    3. [Nebula Graph 的 KV 存储分离原理和性能测评] 图3. 的 KV 存储分离原理和性能测评] [Nebula Graph 的 KV 存储分离原理和性能测评] [Nebula Graph 的 KV 存储分离原理和性能测评] [Nebula Graph 的 KV 存储分离原理和性能测评] [Nebula Graph 的 KV 存储分离原理和性能测评] [Nebula Graph 的 KV 存储分离原理和性能测评] [Nebula Graph 的 KV 存储分离原理和性能测评 的 KV 存储分离原理和性能测评] [Nebula Graph 的 KV 存储分离原理和性能测评] [Nebula Graph 的 KV 存储分离原理和性能测评] [Nebula Graph 的 KV

    1.4K20编辑于 2022-03-01
  • 来自专栏大数据-BigData

    B站分布式KV存储混沌工程实践

    01 背景 之前我们介绍了B站分布式KV存储在B站的探索实践(←点击回顾前文)。本文主要介绍对于高可靠、高可用、高性能、高扩展的B站分布式KV存储系统来如何保障其可靠性以及混沌工程的落地实践。 分布式存储业界已经发展几十年,各个商用存储团队也有对应的开源测试框架,比较知名的比如P#[2]和Jepsen[3],但是这些框架应用成本高,在非商用存储团队中已有的迭代开发过程中很难有额外的人力应用实施 04 混沌工程实践 4.1 建立稳态假设 B站分布式KV存储是随着业务需求不断迭代开发,功能需求逐渐覆盖到全公司各个业务线,性能和可靠性也是逐步完善优化的过程,在实践中需要对于稳态的标准不断更新和优化。 两套KV存储集群,模拟多机房部署物理隔离。 单套集群部署多region分区。 单个region分区中包含同等规模的raft group。 www.microsoft.com/en-us/research/wp-content/uploads/2016/04/paper-1.pdf [2] https://github.com/p-org/PSharp [3]

    83040编辑于 2022-06-12
  • 来自专栏呼啸长风的专栏

    FastKV:一个真的很快的KV存储组件

    一、前言 KV存储无论对于客户端还是服务端都是重要的构件。 我之前写过一个叫LightKV的存储组件,当时认知不足,设计不够成熟。 kv.getBoolean("flag")){ kv.putBoolean("flag" , true); } FastKV.Encoder<? 3 MMKV 25 9 FastKV 16 1 SharePreferences提交用的是apply, 耗时依然不少。 四、结语 本文探讨了当下Android平台的各类KV存储方式,提出并实现了一种新的存储组件,着重解决了KV存储的效率和数据可靠性问题。

    1.7K00发布于 2021-10-14
  • 来自专栏并发笔记

    如何设计一个基于Paxos的KV存储系统

    介绍 Klein是一个基于Paxos分布式共识类库,我使用它实现了KV存储、缓存。 基于此,你可以有无限多的想法,例如用Klein来实现KV存储,或者用它来实现分布式缓存,甚至用它来实现分布式锁,etc anything. 2. 3. 愿景 愿景呢,当然是希望维护一个标准的共识类库,开箱即用。 同时希望可以进入Apache孵化器。 进度 1. 缓存 • 读、写、等基础功能【完成】 • 配合持久化实现LRU • TTL自动过期 3.

    78831编辑于 2022-11-21
  • 来自专栏roseduan写字的地方

    实现分布式 kv—1 Standalone KV

    这个课程分为了 4 个 Project: Standlone KV Raft KV Multi Raft KV Transaction 分别需要实现单机版 kv、基于 raft(和 multi raft 当然这个课程也是入门和实践分布式存储领域的挺好的学习资源,因此记录一下自己的学习历程。 今天这篇文章先来看看第一个 Project。 Badger 是一个很优秀的开源的单机版 kv 存储引擎,基于 LSM Tree 实现,读写性能都很好,因此需要简单熟悉下 Badger 的用法,可以参考下官方示例:github.com/dgraph-io 在 TinyKV 中,存储层是一个抽象接口,分别实现了 raft storage、mem storage、standalone storage,这里我们只需要实现 standalone storage 你可以把 TinyKV 的代码 clone 下来,然后自己跟着我的节奏做,一步一步坚持下去,相信能够在分布式存储领域有个初步的认知。

    1.1K20发布于 2021-11-30
  • 来自专栏Rust语言学习交流

    【Rust日报】2022-12-27 Rust 中的 KV 存储引擎

    Rust 中的 K/V 存储引擎 Bassfaceapollo 发现了一些很酷的 Rust K/V 存储引擎项目,想与社区分享: Engula - 分布式 K/V 存储。它似乎是最活跃的项目。 Marble - 一个新的 K/V 存储,旨在成为 Sled 的底层存储引擎,本身仍在开发中。 PhotonDB - 一种高性能存储引擎,旨在利用现代多核芯片、存储设备、操作系统和编程语言的强大功能。 DustData - Rustbase 的存储引擎(Rustbase 是一个 NoSQL K/V 数据库)。 Persy - 是用 Rust 编写的事务存储引擎. ReDB - 一种简单、可移植、高性能、ACID、嵌入式键值存储,其灵感来自 LMDB。 详细内容可以参考: github pull issue: https://github.com/rust-lang/rust/pull/105586 superdiff - 一种在项目中查找相似代码块的方法 3

    62040编辑于 2023-02-15
  • 来自专栏idba

    使用开源技术构建有赞分布式 KV 存储服务

    当时对比了几个开源产品, 最终选择了 aerospike 作为我们的 KV 存储方案。 为了充分利用已有的 aerospike 集群, 并考虑到当时的开源产品并无法满足我们所有的业务需求, 因此我们需要构建一个能满足有赞未来多年的 KV 存储服务。 有了此架构后, 我们就可以在不改动现有 aerospike 集群的基础上, 来完善我们目前的KV服务短板, 因此我们基于几个成熟的开源产品自研了 ZanKV 这个分布式 KV 存储。 实现内幕 DataNode 数据节点 首先, 我们需要一个单机的高性能高可靠的 KV 存储引擎作为基石来保障后面的所有工作的展开, 同时我们可能还需要考虑可扩展性, 以便未来引入更好的底层存储引擎。 可用于分配的节点数不足: 假如副本数配置是 3, 但是可用节点少于 3 个, 则不会发生数据迁移 稳定集群节点数默认只会增加, 每次发现新的数据节点, 就自动增加, 节点异常不会自动减少。

    1.8K21发布于 2019-07-01
  • 来自专栏鸿蒙开发笔记

    OpenHarmony 移植案例与原理 - utils子系统之KV存储部件 (1)

    LiteOS-A内核:KV(key value)存储、定时器、JS API(设备查询,数据存储)、Dump系统属性。 本文介绍下移植开发板时如何适配utils子系统之KV存储部件,并介绍下相关的运行机制原理。KV存储部件定义在utils\native\lite\。 # KV存储实现│ ├── innerkits # KV存储内部接口│ └── src # KV ⑴处用于配置子系统的KV存储部件。 中声明了KV存储的函数,并定义了结构体KvItem。

    28010编辑于 2025-06-14
  • 来自专栏JavaGuide

    腾讯自研的分布式高性能KV存储开源了!

    项目简介 Tendis是腾讯互娱CROS DBA团队 & 腾讯云数据库团队自主设计和研发的分布式高性能KV存储数据库,兼容Redis核心数据结构与接口。 持久化存储 使用rocksdb作为存储引擎,所有数据以特定格式存储在rocksdb中,最大支持PB级存储。 Tendis冷热混合存储关键组件 得益于Tendis存版的设计和内部优化,Redis和Tendis存储版可以一起工作成为Tendis冷热混合存储。混合存储区非常适用于KV存储场景,并平衡了性能和成本。 对于redis占用大量存储空间的冷数据降冷后可以最多减少80%的成本,同时保证了热数据在redis的访问性能。 Tendis 存储版 vs Redis cluster 优点: 所有数据存储到磁盘,提供更大的容量和更低的成本,数据可靠性更高 多线程架构,单进程的性能吞吐比redis单进程更高(30wQPS vs 13wQPS

    2.6K30发布于 2021-01-08
  • 来自专栏算法之美

    Talent Plan KV训练营Standalone KV实验

    TinyKV 是PingCAP公司推出的一套开源分布式KV存储实战课程:https://github.com/tidb-incubator/tinykv, 宗旨实现一个简易的分布式 kv 这课程一共包含了 4子项目: Project 1需要参与者独立完成一个单机的KV Server Project 2需要基于Raft算法实现分布式键值数据库服务端 Project 3需要在Project 2的基础上支持多个 Raft集群 Project 4需要Project 3的基础上支持分布式事务 难度都是阶梯式的,等价于麻省理工学院有一套MIT 6.824课程 任务:Standalone KV 第一个 Project Badger 是一个很优秀的开源的单机版 kv 存储引擎,基于 LSM Tree 实现,读写性能都很好,需要简单熟悉下 Badger 的用法,可以参考下官方示例:https://github.com/dgraph-io //asktug.com/t/topic/273154/5 https://asktug.com/t/topic/273269/2 https://asktug.com/t/topic/273388/3

    1.3K10编辑于 2022-01-17
领券