集群架构设计
在集群架构设计时,主要遵从下面三个维度:
- 可用性
- 扩展性
- 一致性
可用性设计
- 站点高可用,冗余站点
- 服务高可用,冗余服务
- 数据高可用,冗余数据
保证高可用的方法是冗余。但是数据冗余带来的问题是数据一致性问题。
实现高可用的方案有以下几种架构模式:
主从模式
简单灵活,能满足多种需求。比较主流的用法,但是写操作高可用需要自行处理。
双主模式,互为主从,有双主双写、双主单写两种方式,建议使用双主单写
扩展性设计
扩展性主要围绕着读操作扩展和写操作扩展展开。
如何扩展以提高读性能
- 加从库 简单易操作,方案成熟。 从库过多会引发主库性能损耗。建议不要作为长期的扩充方案,应该设法用良好的设计避免持续加从库来缓解读性能问题。
- 分库分表 可以分为垂直拆分和水平拆分,垂直拆分可以缓解部分压力,水平拆分理论上可以无限扩展。
如何扩展以提高写性能
分库分表
一致性设计
一致性主要考虑集群中各数据库数据同步以及同步延迟问题。可以采用的方案如下:不使用从库扩展读性能问题需要单独考虑,否则容易出现系统瓶颈。
增加访问路由层可以先得到主从同步最长时间t,在数据发生修改后的t时间内,先访问主库。