作者:方孝健,阿里云PolarDB-X技术专家
读写分离指分离读库和写库的操作,主要应用于读多写少、超高并发以及高稳定性场景。比如电商业务是典型的读多写少场景,为了避免数据库的读成为业务瓶颈,同时也为了保证写库的成功率,一般会采用读写分离的技术手段。
目前业界主流的读写分离方案主要基于数据库代理层,比如Router、MyCat,其优点为引入了数据库代理层,业务上不需要改动过多代码,比较透明。
但不足也很明显,路由到从库请求,无法保证读到最新的数据,称为弱一致性读。比如在主库上写一行数据,通过代理读到的数据不一定是最新的,或刚写入的数据不一定能马上读到,同时也无法基于从库的可用性做流量均衡路由,比如某个从库挂了或延迟比较大,依然会继续路由,而这是对业务有损的方案。
PolarDB-X 提供透明、强一致的读写分离。
• 高度透明化:使用PolarDB-X之后,可以享受PolarDB-X提供的native读写分离能力,应用连上PolarDB-X数据库即可直接享受读写分离能力。
• 强一致性读:提供了强一致性读能力,保证主库写入后备库和只读库能够读到。
• 灵活多变的配置策略:支持全局、session、Query级别的多种读写配置策略;支持副本异常或某个从库异常流量后自动切回主库;如果某个副本延迟高,支持将流量调度到低延迟副本。丰富、灵活多变的配置策略,可以很大程度满足业务场景的诉求。
《PolarDB-X开源分布式数据库实战进阶》——PolarDB-X读写分离和HTAP场景的实践(2) https://developer.aliyun.com/article/1228547?groupCode=polardbforpg