一、MySQL:
1.MySQL时代
早年,一般网站访问量都不会太大,基本上单个简单的数据库就能解决一般的数据反问问题。那时基本更多的网站都是以静态网页的样子存在,数据动态交互的网站不是太多。
以下为这种方式的通用架构(图片来源为尚硅谷Redis教程,下同):
在上图结构下,在数据存储上会出现那些瓶颈呢?
1.一台机器无法满足网站数据的总大小。
2.一台机器无定法存下数据的索引(B+ Tree)时。
3.访问量(读写混合)一个实例不能承受。
2 Memcached(缓存)+MySQL+垂直拆分
伴随国内互联网市场的成熟,用户也开始增加,相应的访问量也开始上升,在之前采用MySQL架构的网站几乎大部分在数据库处理反面出现了性能问题,web程序不单单专注于功能上,同时也开始去追求程序性能。这时便开始大量采用缓存的技术来缓解数据库方面的压力,优化数据库的结构和索引。最初一般公司比较流行通过文件缓存来缓解数据库压力,但伴随着访问量持续增加,多台web机器通过文件缓存不能共享,其中机器大量缓存文件也带来了比较高的IO压力。这时,Memcached就以救世主的姿态出现成为一时非常流行的技术产品。
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。
Memcached其作为一个独立的分布式的缓存服务器,同时给多个web服务器提供一个共享的高性能缓存服务,在Memcached服务器的基础上,又发展了根据hash算法来进行多台Memcached缓存服务的扩展,然后又出现了一致性hash来解决增加或减少缓存服务器导致重新hash带来的大量缓存失效的弊端。
3 Mys