1. 事务
1.1 分布式事务 acid
分布式理论: cap (c一致性(各个节点中对于同一数据的拷贝有着相同的值;),a可用性,p分区容错性(持久性),分区容错指通信失败导致脑裂,数据不一致)
方法
两阶段提交(一致性):第一阶段:事务管理器要求每个涉及到事务的数据库预提交;第二阶段:事务协调器要求每个数据库提交数据,或者回滚数据。
消息队列(最终一致):
一致性算法:
1.2 mysql事务
2. 分布式Session
- 粘性session(统一用户nginx代理到同一个服务器)
- redis集群或数据库
3. 分布式id
Snowflake
缺点
1. 时钟偏斜问题(Clock Skew)。我们知道普通的计算机系统时钟并不能保证长久的一致性,可能发生时钟回拨等问题,这就会导致时间戳不准确,进而产生重复ID(硬件时钟可能会因为各种原因发生不准的情况,网络中提供了ntp服务来做时间校准)
解决:
* 设置容忍时间,等待3ms使时钟恢复(适合偶尔发生一次时钟回拨)
* 机器分为两波,第一部分发生时钟回拨后,切换到第二部分的机器(时钟反复横跳)
3. 另外,序列号的可预测性是把双刃剑
4. ID设计阶段需要谨慎考虑暴露出的信息,如workid暴露出机器信息
5. 2038年”问题是由用于表示时间的容量不足引起的。