同城系统一般距离60KM左右,采用独立光纤,网络稳定,交易时延完全可以接受,所以在同城进行双活,可选择的方案很多。对于核心银行系统,各个层面均要保证没有单点,但清除单点不一定要同城,有些部件仅需要在不同机架上做HA。银行必须保证数据安全,所以数据库系统必须进行同城双活、异地灾备。主流数据库系统均提供了多种类型的方案供选择,其中,采用半同步方式的主从复制方式是一种比较经济、可靠的选择。数据库集群功能强大,甚至可以提供分布式事务一致性,但是并发数、吞吐量有限,需要按需选择。
分布式数据一致性有多种选择,最终一致性或是基于二阶段提交的数据一致性。二阶段算法很多系统均提供,但是选择需要考虑并发量、吞吐量,可以在最终一致性不宜使用的场景下使用。最终一致性是比较好的解决方案,一般借助异步消息机制实现,在网络良好、交易无剧烈波动的情况下,可以接近同步效果,客户体验很好,实现难度不高。但无论采用哪种一致性,交易本身应支持重入或补偿机制,不应仅仅依赖技术保证业务一致性,这是应用系统应该做的。