摘要:
作为技术从业者, 自然是希望以技术立身, 回顾这十多年的技术生涯, 总是让人十分感慨.
最近数年时间在做数据库内核, 这个行业与我进入前的预期存在巨大的反差.
不过本文的侧重点在于这些年在数据库内核领域的技术层面的突破和反思.
redis数据库内核:
- 当时做redis是做一整个NDB-redis系统, 一个人单挑做完所有的事情
- 所以当时不但做内核, 也在做管控
- 对于管控, 比较麻烦的是对于整个流程的控制, 涉及很多与其他业务系统的交互
- 但是精力主要放在内核上, 也就是redis的源码上
- 值得说的倒是对集群修改密码, 做了多阶段提交, 以在出错时候还保持一致的状态
- 那么从redis的源码上, 学到什么呢?
- redis的源码, 其实当时理解的时候, 分为单机服务内核, 和cluster集群两部分
- 此处不展开具体的技术模块
influxdb数据库内核:
- 做influxdb是被强行掉过去做, 内心有极大的抗拒, 所以直接将精力放在了对内核的修改上
- 由于influxdb只开源了单机内核, 集群不开源, 所以在实践上, 是放在了集群层面
- 二阶段提交, 三阶段提交, CAP三者不可兼得理论, 一致性协议, paxos, raft
- 对influxdb使用一个开源的代码库, 组建成了raft集群, 完成了自动failover高可用