一致性哈希详解
网站做大了以后,因为MySQL在较高的qps下表现比较差,如果是创业公司的话,那可能租用的都是公有云的机器来做自己的服务,也许就是个内存2GB,cpu两核的kvm,能够使用的资源非常非常的少,所以数据库的实例本身性能也不会好到哪里去。在整体qps达到一定量级之后必然会遇到性能低下的问题,至于这个临界值,是由具体的机器配置得到的,这里就不给出什么结果了,感兴趣的同学可以自己去搜索。
MySQL抗不住的情况下只能引入缓存来提升整体性能了,网站开发有一个比较著名的二八原则,就是80%的用户其实访问的都是20%的数据。所以实际上你只要把这20%的数据缓存好,就可以让网站整体的响应和吞吐量上一个等级。缓存为什么能比去读数据库快?原理也很简单,大多数的缓存会把数据存储在内存中,而数据库则是要去硬盘读取。这两种介质在速度上相差了好几个数量级。
缓存固然好,但假如你的网站变得越来越大的时候,可能会慢慢发现单台机器已经满足不了自己的需求了。这时候就涉及到缓存分布的问题,如果是一个在学校里没有接触过工程项目的人的话,很容易想出来按照请求@key,