首页 > 新文章
  • TitanDB GC详细实现原理 及其 引入的问题 is a project mainly written in , based on the .文章目录1. 为什么要有GC2. GC的触发条件3. GC的核心逻辑1. blob file形态2. GC Prepare3. GC pick file4. GC run4. GC 引入的问题5. Titan的测试代码...

  • 一图带你入门Linux 存储I/O栈 is a project mainly written in , based on the .发现了一个内核大佬 的 Linux 存储I/O栈,很清晰!!! 原地址如下: http://ilinuxkernel.com/?p=1559 【侵删】...

  • 关于Titandb Ratelimiter 失效问题的一个bugfix is a project mainly written in , based on the .本文简单讨论一下在TitanDB 中使用Ratelimiter的一个bug,也算是一个重要bug了,相关fix已经提了PR到tikv 社区了pull-210。 这个问题导致的现象是ratelimiter 在titandb Flush/GC 生成blobfiled的过程中无法生效,也就是无法限制titandb的主要写 I/O。而我们想...

  • Rocksdb 通过ingestfile 来支持高效的离线数据导入 is a project mainly written in , based on the .文章目录前言使用方式实现原理总结...

  • Git 对之前的commit 进行重新签名 Resign is a project mainly written in , based on the .在向开源社区提交PR的时候如果之前的提交忘记添加sign (个人签名/公司签名),则社区的DCO检查会失败。 关于通过DCO检查能够确保以下几件事情生效: 你所提交的贡献是由你自己完成或者 你参与了其中,并且有权利按照开源协议提交代码这个贡献是在当前项目的基础上完成的。你能够理解并遵守开源协议,你的贡献将会被完全公开。 这个检查对...

  • Blktrace 工具集使用 及其实现原理 is a project mainly written in , based on the .文章目录工具使用原理分析内核I/O栈blktrace 代码做的事情内核调用 ioctl 做的事情BLKTRACESETUPBLKTRACESTOPBLKTRACETEARDOWN内核 调用blk_register_tracepoints 之后做的事情参考...

  • Rocksdb 通过posix_advise 让内核减少在page_cache的预读 is a project mainly written in , based on the .文章目录1. 问题排查确认I/O完全/大多数来自于rocksdb确认此时系统只使用了rocksdb的Get来读确认每次系统调用下发读的请求大小确认是否在内核发生了预读2. 问题原因内核预读机制page_cache_sync_readaheadondemand_readahead3. 优化...

  • MIT 6.824 Lab2A (raft) -- Leader Election is a project mainly written in , based on the .文章目录实验要求Leader Election流程 及详细实现介绍基本角色关键超时变量关键的两个RPC实现RequestVote RPCAppendEntries RPCGo并发编程实现leader election调度...

  • Cannot find main module 解决办法 is a project mainly written in , based on the .做6.824 实验的过程中想要跑测试,发现go test -run 2A时 出现cannot find main module问题,测试跑不起来。 原因 这个原因是从GO1.11 版本开始引入了go.mod文件来对项目中的go源码的编译相关的内容进行管理,经常使用GO的同学可能深受go get或者GOPATH的配置之苦,这个时候引...

  • 一个简单的程序来使用WiredTiger 存储引擎 is a project mainly written in , based on the .前言 WiredTiger 自 mongodb3.0 集成进来之后为mongodb拉回了大量的口碑,从而在mongodb-3.2 版本直接代替了in-memory存储引擎,作为了mongodb的默认存储引擎。其 通过支持Append-only btree + lsm-tree 以及 针对磁盘/内存数据结构上的多核和无锁优化,从而拥有...

  • Jsoncpp 在C++开发中的一些使用记录 is a project mainly written in , based on the .jsoncpp 是一个C++ 语言实现的json库,非常方便得支持C++得各种数据类型到json 以及 json到各种数据类型的转化。 一个json 类型的数据如下: {"code" : 10.01,"files" : "","msg" : "","uploadid" : "UP000000" } 这种数据类型方便我们人阅读以...

  • C++ std::function<void(int)> 和 std::function<void()> 作为函数参数的注意事项 is a project mainly written in , based on the .前言 std::function 作为标准库提供的函数指针,使用起来还是比较方便的,不过在使用过程中有一些需要注意的细节,这里做一个简单的记录。 基本使用 头文件: #include 语法:std::function#include #...

  • Rocksdb 的 BlobDB key-value 分离存储插件 is a project mainly written in , based on the .前言 还是回到传统的 LSM-tree 中,我们key-value 写入时以append形态存放到一个data-block中,多个data-block+metablock 之类的数据组织成一个sst。当我们读数据以及compaction的时候读到key 之后则很方便得读取到对应的value,一次I/O能够将key-value完全从磁...

  • C++ 通过模版工厂实现 简单反射机制 is a project mainly written in , based on the .前言 我们知道Java/Python这种语言能够很好得 支持反射。反射机制 就是一种用户输入的字符串到对应实现方法的映射,比如http接口中 用户传入了url,我们需要调用该url对应的方法/函数对象 从而做出对应的操作。 而C++ 并没有友好得支持这样的操作,而最近工作中需要通过C++实现http接口,这个过程想要代码实现得优雅...

  • Rocksdb iterator 的 Forward-scan 和 Reverse-scan 的性能差异 is a project mainly written in , based on the .前言 最近在读 MyRocks 存储引擎2020年的论文,因为这个存储引擎是在Rocksdb之上进行封装的,并且作为Facebook 内部MySQL的底层引擎,用来解决Innodb的空间利用率低下 和 压缩效率低下的问题。而且MyRocks 在接入他们UDB 之后成功达成了他们的目标:将以万为单位的服务器集群server个数缩减了一...

  • 手把手教你 用C++实现一个 可持久化 的http_server is a project mainly written in , based on the .前言 本文介绍一个有趣的 通过C++实现的 持久化的http_server demo,这样我们通过http通信之后的数据可以持久化存储,即使server挂了,数据也不会丢失。我们的http_sever 也就能够真正得作为一个后端server了。 本身持久化这个能力是数据库提供的,像通用的http交互数据都会通过SQL server...

  • 从 SSLTLS 的底层实现来看 网络安全的庞大复杂体系 is a project mainly written in , based on the .文章目录前言1. HTTP协议通信的问题1.1 tcpdump 抓取http 请求包1.2 报文分析1.3 HTTP 协议问题2. SSL & TLS 协议的基本介绍和历史演进3. TLS 1.2 实现加密传输的过程3.1 TLS HandShake 协议概览3.2 第一次握手:ClientHello3.3 第二次握手:从Server...

  • MyRocks: 为facebool 的社交图谱服务的LSM-tree存储引擎 is a project mainly written in , based on the .文章目录概览1. UDB 架构2. UDB 表格式3. Rocksdb:针对flash存储优化过的第三方库3.1 Rocksdb架构3.2 为什么选择Rocksdb4. MyRocks / Rocksdb 开发历程4.1 设计目标4.2 性能挑战4.2.1 降低CPU的消耗4.2.2 降低range-scan 的延时消耗4.2.3 磁...

  • 单机 “5千万以上“ 工业级 LRU cache 实现 is a project mainly written in , based on the .文章目录前言工业级 LRU Cache1. 基本架构2. 基本操作2.1 insert 操作2.2 高并发下 insert 的一致性/性能 保证2.3 Lookup操作2.4 shard 对 cache Lookup 性能的影响2.4 Erase 操作2.5 内存维护3. 优化...

  • 分布式系统 一致性模型的介绍 以及 zookeeper的 “线性一致性“ 讨论 is a project mainly written in , based on the .文章目录1. 一致性 概览1.1 分布式系统的 “正确性”1.2 线性一致性(Linearizability)1.3 顺序一致性(Sequential consistency)1.4 因果一致性(Casual consistency)1.5 最终一致性(Eventual consistency)2. Zookeeper 的 “线性一致...