Mycat 笔记 0:分布式架构演变
1. 单体架构
最开始的时候业务量不大,一个服务器上可以跑类似 tomcat+java 的业务,同时还可以跑一个 mysql 数据库。
2. 应用服务器与数据库服务器分离
随着业务增加,一个服务器难以支撑,演变为:业务服务 1 个服务器,数据库服务 1 个服务器。
3. 应用服务器集群
随着前端压力的增加,一个应用服务器难以支撑,增加应用服务器,
用户请求先到负载均衡器(如 nginx),由负载均衡器决定访问哪个应用服务器,由此来缓解前端的压力。
4. 数据库读写分离
通过应用服务器集群,缓解了前端的压力,
数据库方面,1 个数据库服务器没法满足,由此采用读写分离之类的主从、高可用架构
5. 缓存数据库
随着访问量的持续增加,热点数据没必要每次都查询数据库,可以使用缓存技术,比如 memcache、redis 来作为缓冲,抵消掉一部分的数据库查询操作。
6. 数据库的水平拆分和垂直拆分
到前面为止,3 个业务的数据还在同一个数据库中,当业务增加到读写分离+缓存无法支撑的时候,就需要考虑对数据进行拆分
垂直拆分:
3 个业务,分别放到 3 个 mysql 实例中运行,由此 1 个业务就对应着 1 套数据库高可用架构。应用通过 mycat、shardingsphere 这类中间件连接数据库,感觉就像访问一个节点
水平拆分:
经过垂直拆分后,对于核心业务来说,数据量可能会达到单个数据库瓶颈,这时可以将这个表的数据拆分到两个或多个数据库实例中,