Yriuns' Blog

来都来了,收藏一下吧

0%

据说,OceanBase的CTO杨传辉曾经说过:“构建一个分布式数据库存储系统是比较简单的,上层一套raft一致性协议,下层接一个RocksDB引擎,一周时间就能搞定,难得是如何保证系统在后续的运行中性能稳定且可靠”。且不论一周时间到底够不够,不可否认的是,Raft协议的出现使得构建一个分布式系统简单了许多。

但即使Raft作者把各种工程问题解决之道都写在了他的博士论文里,真正去实现一个高效稳定的Raft库仍然要费很多心思。此外,库的使用者也必然会遇到各种意想不到的问题。

由于工作的关系,笔者深度使用了braft一段时间。总体来说braft是一个完成度很高的工业级实现,省去了团队不少开发及测试的时间。但是当然也遇到了不少坑。因此本文将分享一些笔者在使用/魔改braft的一些小经验,希望能让你少踩点坑。

阅读全文 »

论文发表于ATC 2020,存储系统方向CCF-A类会议。作者是入围华为「天才少年」计划的人才之一,姚婷。

参考资料
https://zhuanlan.zhihu.com/p/165071082

概述

现有的基于LSM-Tree的KV存储有两个缺陷:写停顿以及写放大。实验结果表明这是因为:1. L0-L1之间的compaction包含了大量数据,消耗了大量CPU资源以及SSD带宽资源;2. LSM-Tree的深度过深。

为了解决这两个问题,本文1. 设计了一种基于NVM的新型L0 SSTable格式;2. 基于该新格式提出了一种细粒度的L0-L1 compaction算法;3. 增大了每层的大小上限,从而降低了LSM-Tree的深度;4. 提出了Cross-row Hint Search用来加速在新版L0文件上的查询。

阅读全文 »

当你在浏览器中键入网址(不妨假设为www.example.com,这个网站非常简单,只有一个HTML文件)并按下回车,就能看到渲染出来的网页。但是,这一过程中具体发生了什么呢?

这个问题困扰了笔者多年,虽然知道数据终将转为01比特流,但却一直没想通具体是怎么传输的……终于今年学了计算机网络原理,虽然没好好听课,而且网上看到的文章感觉写的还不够全面,于是试图自己把这个事讲明白。

本文力图以上面所说的例子,按照TCP/IP参考模型来对该过程进行分析。

阅读全文 »

搭建流程

创建仓库

GitHub上创建仓库,名为YourUserName.github.io

新建hexo分支

在刚刚创建的仓库中新建一个hexo分支,并在仓库的setting中将其设为默认分支,
这样做的目的是将hexo的原始文件和生成的静态文件分开放置

阅读全文 »