系统扩展时需要考虑的因素
数据库、缓存、依赖的第三方、负载均衡、交换机带宽等等
高可扩展性的设计思路
拆分是最重要的一个思路,将复杂的任务简单化
- 存储层的扩展性
数据库拆分:业务层面的拆分、水平拆分、 - 业务层的扩展性
一般会从三个维度考虑业务层的拆分方案:业务维度,重要性维度和请求来源维度。
首先,把相同服务的业务拆分成单独的业务池,每个业务依赖独自的数据库资源,不会依赖其它业务的数据库资源。这样当某一个业务的接口成为瓶颈时,我们只需要扩展业务的池子,以及确认上下游的依赖方就可以了,这样就大大减少了扩容的复杂度。
其次,根据业务接口的重要程度,把业务分为核心池和非核心池。可以优先保证核心池的性能,当整体流量上升时优先扩容核心池,降级部分非核心池的接口,从而保证整体系统的稳定性。
最后,还可以根据接入客户端类型的不同做业务池的拆分。