可扩展性说明当需要增加资源以执行更多工作时系统能获得划算的等同提升的能力。
可扩展性就是能过够通过增加资源提升容量(工作效率)的能力。表明了当需要增加资源以执行更过工作时系统能够划算地提供等同提升(equal bang for the buck)的能力。另一种说法是,可扩展性是当增加资源以处理负载和增加容量时系统能够获得的投入产出比。
扩展 MySQL
传统的扩展方法:
- 垂直扩展/向上扩展:买更强悍的机器
- 水平扩展/向外扩展:将任务分配到更多的机器
- 向内扩展:清理或归档很少或不需要的数据
帮助规划可扩展性:
- 应用的功能完成了多少? 许多可扩展性解决方案可能会导致实现某些功能更加困难。如果应用的某些核心功能还没开始实现很难确定扩展方案。
- 预期的最大负载是多少?应用应当在最大负载下也能正常工作。
- 如果依赖系统的每个部分来分担负载,在某个部分失效时会发生什么呢?
在深入 MySQL 扩展之前可以做一些准备工作:
- 性能优化
- 购买更强的硬件
向上扩展
意味购买更多性能强化的硬件
向外扩展
向外扩展策略划分为三个部分:复制、拆分以及数据分片
按功能拆分
按功能拆分意味着不同的节点执行不同的任务。但不能通过功能划分无限地扩展,如果一个功能区域被绑定到单个 MySQL 节点,就只能进行垂直扩展。
数据分片
数据分片是最通用最成功的方法,它将数据分割成小块存储到不同的节点中。
通过多实例扩展
不要在一太性能强悍的服务器上只运行一个数据库实例,可以让数据分片足够小,在每台机器上放置多个分片,充分发挥硬件性能。
通过集群扩展
负载均衡