数据库架构设计思路
1.可用性
2.读性能
3.一致性
4.扩展性
先说说一般互联网公司数据服务器的演化
(1)单机时代
(2)主从分离
(3) 分布式
1.可用性
如何保证数据的可用性?---> 冗余
冗余读库:一般互联网公司的mysql架构一主(写)多从 (读)
写还是单点,不能保证写高可用。
冗余读库带来的副作用?读写有延时,可能不一致
那么如何保证写高可用呢?
采用双主互备的方式,可以冗余写库,但是又导致一个问题,双写同步,数据可能冲突。常见的解决方案有以下2种:
- 自增id设置 比如1、3、5、7和2、4、6、8这种分奇数和偶数的方式
- 根据业务生成唯一ID