最近研究了一下Redis 5.0主从复制部分的代码,其同步协议的握手流程比较繁琐,兼容了不同版本协议的差异,支持了增量同步数据。
现在多核计算机已经成为了当今主流,因此我们在每个程序中都需要考虑到多核并发的问题,在有高性能计算需求的项目中更是重要。其中在数据结构中,我们需要对并发考虑的更多,这里就要涉及很多并发算法。
本文内容来源于《分布式存储系统可靠性-如何估算》、《分布式存储系统可靠性-系统估算示例》和《分布式存储系统可靠性-设计模式》三篇文章。增补相关注释和个人理解,修正了一些原文中的错误。
基本概念
注:本文中数学符号比较多,可能加载显示会比较慢。
工具就是生产力
体系架构 现在常见服务都是NUMA1架构,这种架构使得跨节点访问内存的代价大大增加,通常是访问本地内存的两到三倍以上: 非均匀访存模型 ↩
一晃之间已经工作很多年了,参与了很多项目,也旁观了很多项目。有的做成了,有的做黄了,有的做畸形了,还有的一遍一遍地重构难产了。后来细想,失败的项目多归因于理论不足。理论知识对工程师至关重要。
_
编:lease还是非常容易理解的一个概念,但是为了不全知识地图,还是有必要写一下。
a thread-safe concurrent map for go
lrita's blog
NUMA is a utility library, which is written in go. It help us to write some NUMA-AWARED code.
a TryLock implementation