数据库如何水平扩展
来源:4-19 【勤于思考,夯实学习成果】阶段思考题

tanyoung
2019-05-19
主库 + 多从或者读写分离 & 分库分表
但是问题好多,一主多从如何实现高可用,主从节点切换问题;主从复制位点的同步问题,offset怎么确定,保证主从的强一致还是最终一致;读写分离的过期读问题;分库分表的join、order by这些,分布式事务这些。。。
写回答
1回答
-
你好,数据库扩展首先是读写分离,一主多从,主从之间使用弱一致性同步数据以保证性能,这样应用就会面临读过期数据的问题,需要在业务层上做折中,若业务需要读到强一致数据就读主库,主库可以采取keepalive方式同另一个不开放的主库做同步,但为了性能考虑一般不对两个主库做双写,发生问题切换的时候需要应用层做好failover机制。然后是分库分表,对于join,orderby这种尽可能使得其可以路由在同一个分片区保证性能否则等于跨数据库查询,性能很差,若无法做到路由位控制的就存储冗余数据,分布式事务的话是另一个话题,有多种方式保证。无论以上哪种处理方案,都记住cap理论,也就是分布式的情况下可用性和强一致性只能选其一,架构师不要花心思在中间件怎么又能保证c又能保证a上,而应该考虑在出现问题的时候怎么恢复数据,或者索性就跟hbase一样作强一致性数据库。
1742022-12-18
相似问题