本文作者:拉勾教育专栏作家 陈波
你好,我是陈波,新浪微博平台架构技术专家。今天跟大家探讨一下,业务数据访问性能太低怎么办?这就涉及到缓存的原理。那么今天的分享主要围绕缓存的基本思想、缓存的优点、缓存的代价三个部分展开。
缓存的定义
先来看下缓存的定义。
缓存存在的意义就是通过开辟一个新的数据交换缓冲区,来解决原始数据获取代价太大的问题,让数据得到更快的访问。本课主要聚焦于广义缓存,特别是互联网产品大量使用的各种缓存组件和技术。
本文选自:拉勾教育专栏《300分钟吃透分布式缓存》
缓存构建的基本思想是利用时间局限性原理,通过空间换时间来达到加速数据获取的目的,同时由于缓存空间的成本较高,在实际设计架构中还要考虑访问延迟和成本的权衡问题。这里面有3个关键点。
本文选自:拉勾教育专栏《300分钟吃透分布式缓存》
通过前面的介绍,我们已经知道缓存存储原始数据,可以大幅提升访问性能。不过在实际业务场景中,缓存中存储的往往是需要频繁访问的中间数据甚至最终结果,这些数据相比DB中的原始数据小很多,这样就可以减少网络流量,降低网络拥堵,同时由于减少了解析和计算,调用方和存储服务的负载也可以大幅降低。缓存的读写性能很高,预热快,在数据访问存在性能瓶颈或遇到 突发流量,系统读写压力大增时,可以快速部署上线,同时在流量稳定后,也可以随时下线,从而使系统的可扩展性大大增强。
本文选自:拉勾教育专栏《300分钟吃透分布式缓存》
然而不幸的是,任何事情都有两面性,缓存也不例外,我们在享受缓存带来一系列好处的同时,也注定需要付出一定的代价。
一般来讲,服务系统的全量原始数据存储在DB中(如mysql、hbase等),所有数据的读写都可以通过DB操作来获取。但DB读写性能低、延迟高,如mysql单实例的读写QPS通常只有千级别(3000-6000以内),读写平均耗时10-100ms级别,如果一个用户请求需要查20个不同的数据来聚合,仅仅DB请求就需要数百ms甚至数秒。而Cache的读写性能正好可以弥补DB的不足,比如memcached的读写QPS可以达到10-100万级别,读写平均耗时在1ms以下,结合并发访问技术,单个请求即便查上百条数据,也可以轻松应对。
但Cache容量小,只能存储部分访问频繁的热数据,同时,同一份数据可能同时存在Cache和DB,如果处理不当,就会出现数据不一致的问题。所以服务系统在处理业务请求时,需要对Cache的读写方式进行适当设计,既要保证数据高效返回,又要尽量避免数据不一致等各种问题。
OK,本次分享就讲到这里。下次见面,我会分享“缓存的读写模式及分类”,记得关注拉勾教育专栏,我的后续内容会在这里发布哦。好,下次分享见,拜拜!
预先查看后续内容:《300分钟吃透分布式缓存》
版权声明:本文版权归属拉勾教育及该专栏作者,任何媒体、网站或个人未经本网协议授权不得转载、链接、转贴或以其他方式复制发布/发表,违者必究。