CAS 与 ABA问题简述

简要介绍CAS使用时伴随的ABA问题,希望对项目中潜在的风险规避有所帮助

注意:使用的锁实质意义上都是系统提供的原子操作原语而并非我们简化的pthread等lock

简要过程

CAS-ABA
CAS-ABA
CAS-ABA

参考如下

https://kukuruku.co/post/lock-free-data-structures-the-inside-memory-management-schemes

针对lock-free的应用特性需要小心处理,同时对状态变更的操作时需要同时关注ABA类似的问题

分布式系统基石之逻辑时钟

简要介绍分布式系统基准时间的参照内容

注意:真正实现分布式必须使用统一的参照序列(时钟),通常开发会简化使用系统时间

简要过程

Logic-clock
Logic-clock

除了基本的lamport时钟及vector时钟外,还有其它的演化版本

Dotted vector时钟, Version vector, Dotted version vector

总而言之,在分布式系统设计与开发中,事件的前后关系及序列不能被忽略,这是设计分布式系统中比较重要的内容
而我们通常开发时简化的使用并不严格的系统时钟作为参考

Memcache数据存储格式

简要介绍Memcach内存分配格式

简要过程

Memcach

Slab内存分配

是按照预告设定的大小(各class指向的slab的大小),将分配的内存分割成特定长度的数据块(item),以此解决内存碎片问题
另外,虽然item本身大小固定, 但存入的数据可能使item中部分空间被浪费,所以需要根据业务特点进行增长因子的调整以使
最大化利用内存空间

Redis持久化原理

简要介绍Redis持久化的基本内容

注意:持久化对redis的使用者有着重要的影响,如果使用redis必须对持久化机制有所了解,以免服务异常

简要过程

Redis
Redis
Redis
Redis

Redis不同的持久化过程对用户数据灾难恢复时有着不同的行为

另外,由于开启同步模块后redis占用大量内存以及可能的进程中止退出需要注意
fork 后的写入(copy on write)引起内存的增长是一方面,另一方面对持久化文件读写时会使用系统的page缓存,随着数据增加而引起的swap也可能引起服务的异常