- 存储没有达到存储容量以及性能的瓶颈,仍旧是单实例。
- 存储容量到达了瓶颈,或者单库的TPS超过了极限,由或者缓存会达到性能极限:
- 对于数据库来说,可以按照某个业务维度拆库拆表,扩容数据库实例来承载更多的TPS。
- 对于缓存来说,可以像数据库一样扩容更多的实例,并通过业务维度实现数据打散。
- 无论如何,这个阶段计算层需要根据业务维度路由,找到数据所在的存储节点。
- 通过一个大中间件来解决所有的存储层扩展性问题。
- 对于数据库,增加一层db proxy作为代理,帮计算层透明的完成数据路由,同时也实现数据库连接的复用。
- 对于缓存层抛弃多实例部署方式,而是选择一款分布式缓存,比如redis clusters。
- 抛弃中间件,通过给每个存储分片分配独立的计算层,实现故障隔离。腾讯给这个架构方式起名叫做:set化,用业界专业术语叫做:bulkheads隔舱模式。