db笔记 - sse

background

we would set env var USE_SSE=1 when compiling Rocksdb, OTHERWISE it would always failed at linking stage where encountering errors of lack of some instructions such as: no such instruction: shlx %rdx,%rax,%rax'`. but what the fuck is USE_SSE ?

算法笔记:跳表(r2)

skiplist

实现一个简单skiplist

上一篇笔记里回顾了跳表的性质和思想,并且看了一眼rocksdb里的skiplist实现。

然后由于好奇,我自己写了一个skiplist,这里记录下。

该skiplist的特性:

  • 不支持concurrent

rocksdb探究 - 一些问题

一些rocksdb相关问题记录

  1. 写请求batch内的多个操作是否会被拆开,为什么?
  2. block-cache里的缓存项是否会因为某个sst被compact而失效?
  3. event-listener的实现
  4. perf-context的实现
  5. ThreadLocalPtr的实现以及为什么

c++服务端rpc笔记:读muduo有感

rpc框架

最近比较详细地缕了一遍公司内部另一个团队的存储产品(基于apache thrift),后简称为A。到目前为止,本团队存储产品自研的rpc框架,加上自己写过一个简单rpc框架用于rdb实例分裂,已经接触了3个rpc框架。准备在这篇文章总结下一些个人感想。

连接处理模型

  • A的服务端:使用thrift-rpc的nonblock-server,连接处理模型是同步的: a. io线程在收到一个包后,会先把自己设为idle(具体点就是摘掉本线程上的可读写事件),扔给worker线程处理完成后再加回来。

  • A的cli端的处理是同步的:

c++服务端rpc笔记:读muduo有感

rpc框架

最近比较详细地缕了一遍公司内部另一个团队的存储产品(基于apache thrift),后简称为A。到目前为止,本团队存储产品自研的rpc框架,加上自己写过一个简单rpc框架用于rdb实例分裂,已经接触了3个rpc框架。准备在这篇文章总结下一些个人感想。

连接处理模型

  • A的服务端:使用thrift-rpc的nonblock-server,连接处理模型是同步的: a. io线程在收到一个包后,会先把自己设为idle(具体点就是摘掉本线程上的可读写事件),扔给worker线程处理完成后再加回来。

  • A的cli端的处理是同步的:

Todo list

  • pb使用总结:动态类型反射/non-copy
  • 运维总结:huge page
  • 运维总结:tcpdump抓包
  • 运维总结:tsar/sar/iotop/iostat/top/perf top
  • db笔记:lsm和btree的读/写放大分析