Warning: Undefined global variable $debug in /var/www/ourcoders/tiny4cocoa/application/controllers/baseController.php on line 124
zhh-4096 2019-11-27 00:00:00 发布的技术动态 - OurCoders (我们程序员)
zhh-4096
2019-11-27 00:00:00 发布
没想到时隔4年多,还能在分布式事务和副本强一致性这个方向做更进一步的技术创新,而且统一得更完美了。

早期的方案,副本冲突检测是在客户端做的,需要把被更新的每条记录的多个副本的版本号发回客户端,如果发现这些版本号没有超过一半是相同的,那就盲目重试。

这种方案有两个缺点,对于带where条件的update语句,如果要更新的记录很多,需要返回大量的版本号给客户端,所以不太适合批量更新。另一个缺点是忙目重试,有可能造成一直重试下去,所以只能限定重试次数。

最新的方案使用轻量级行锁了,不再有上面两个缺点,不需要把版本号发回客户端了,直接在数据库上面做锁冲突检测、撤销、重试。