NET Core微服务之路:再谈分布式系统中一致性问题分析( 四 )


NET Core微服务之路:再谈分布式系统中一致性问题分析文章插图
不过 , 由于这种方法在每个状态执行的时候都需要记录下来 , 而且需要更新数据库中的状态信息 , 一旦在大规模高并发下 , 性能将会是一个严重的瓶颈 。
【NET Core微服务之路:再谈分布式系统中一致性问题分析】一种更好的解决办法是用Write-Ahead Logging(WAL) , 也叫预写日志 , 详细介绍可参考维基百科 , 一种提高性能的方法 , 作用是在做每个操作的时候 , 都先写入到日志 , 如果操作遇到问题而停止的时候 , 可以读取日志进行恢复 , 最后达到一致 , 由于他的日志是追加模式 , 磁盘写操作只有传统的回滚日志一半左右 , 大大提高了数据库在高并发下的性能 。
总结

  • 如果钱不是问题 , 那么最最简单的方式是使用向上扩展 , 利用强悍的硬件性能来运行专业的关系数据库 , 能否保证强一致性 , 比如Orcele和DB2这样符合工业标准的数据库 。
  • 如果钱是个问题 , 那么相关的数据分到数据库的同一个分片 , 能够保证使用关系型数据库实现强一致性 , 比如Mysql 。
  • 如果是业务限制 , 无法将相关的数据分到同一个片 , 就需要实现最终一致性 , 通过记录事务的状态来判断 , 一旦处理不一致 , 可通过自动化(如定时)或者人工干预来继续执行 , 并修复不一致的情况 。


推荐阅读