加锁多点的定义
加锁多点,是通过对每个服务进程进行加锁控制的方式来实现多点部署,达到负载均衡的目的。
加锁多点的优势
1. 扩展性
无限制的扩展性。扩展服务进程后,只须设定唯一的锁标签即可。
2. 容错性
通过监控服务的死锁唤醒,可以对数据进行补偿处理
3. 负载均衡
通过控制批量的量,可以达到较好的负载均衡。
加锁多点的架构
锁的结构
字段 | 名称 | 类型 |
ServiceLockTag | 锁标签 | Guid |
ModifyOn | 变更时间 | DateTime |
加锁多点的主要步骤
1. 批量加锁
每个服务在处理数据之前,先进行批量加锁数据。批量的多少以单个服务进程的处理能力为准。所加锁为乐观锁,这样保证多个服务并发加锁数据时,数据最终能够成功为最后的服务加锁。每个服务进程都有自己的锁标签,作为区分于其它服务进程的标识,锁标签可在配置文件中设置。
2. 加锁查询
批量加锁后,服务进程查询对应标签的数据。
3. 批量解锁
数据处理完成后进行解锁处理,可单条处理,也可批量处理。
4. 死锁唤醒
对加锁超过一定时限的数据进行解锁处理。这样可防止单个服务进程异常造成数据无法处理的状况。