阅读笔记07-分库分表就能无限扩容吗?
一、正常情况下的服务演化之路 让我们从最初开始。 单体应用 每个创业公司基本都是从类似SSM和SSH这种架构起来的,没什么好讲的,基本每个程序员都经历过。 RPC应用 当业务越来越大,我们需要对服务进行水平扩容,扩容很简单,只要保证服务是无状态的就可以了。 当业务又越来越大,我们的服务关系错综复杂,同时,有很多服务访问都是不需要连接DB的,只需要连接缓存即可,那么就可以做成分离的,减少DB宝贵的连接。 我相信大部分公司都是在这个阶段。Dubbo就是为了解决这个问题而生的。 分库分表 如果你的公司产品很受欢迎,业务继续高速发展,数据越来越多,SQL操作越来越慢,那么数据库就会成为瓶颈,那么你肯定会想到分库分表,不论通过ID hash或者range的方式都可以。 这下应该没问题了吧。任凭你用户再多,并发再高,我只要无限扩容数据库,无限扩容应用,就可以了。 这也是本文的标题,分库分表就能解决无限扩容吗? 实际上,像上面的架构,并不能解决。 其实,这个问题和RPC的问题有点类似:数据库连接过多! 通常,我们的RPC应用由于是使用中间件进行访问数据库,应用实际上是不知道到底要访问哪个数据库的,访问数据库的规则由中间件决定,例如Sharding JDBC。 这就导致,这个应用必须和所有的数据库连接,就像我们上面的架构图一样,一个RPC应用需要和3个MySQL连接,如果是30个RPC应用