什么技能产品经理不会提,但技术人必须懂?
阿里妹导读:缓存是搭建高性能高并发系统的必备手段之一,通常用来解决性能瓶颈,是程序员的必备知识点,也是面试必备考点。
尽管,产品经理大概率不会关注系统性能,但程序员在实现需求的时候必须思考系统承载的并发量和用户量。缓存主要用来解决性能瓶颈的问题,一旦错误使用反而会令系统崩溃。今天,我们就通过4W的方式系统化地总结缓存相关的理论知识。
关于缓存的定义,在wiki中为:
a collection of data duplicating original values stored elsewhere on a computer, usually for easier access.
简单理解就是保存在计算机设备中的一个数据副本,以便于后续能够进行快速访问。
1)系统响应时间 :响应时间是指系统对用户请求做出响应的时间,不同的功能的链路长短不同,并且同一功能在不同数据量等这些情况都会导致响应时间的不同。因此,在衡量系统响应时间时,通常会关注软件产品所有功能的平均响应时间以及最大响应时间。
2)延迟时间 :在讨论系统响应时间时,更细粒度的划分可以划分为:
客户端在接受数据进行渲染的内容“呈现时间”;
服务端在接受用户请求发送至服务端以及服务端将数据返回到客户端这两个过程中涉及到的:网络传输时间以及应用延迟时间。应用延迟时间即是服务端在执行整个服务链路时所花费的时间,也是性能优化首要降低的就是这个时间。
3)吞吐量 :吞吐量指的是单位时间内能够处理请求的数量,对于无并发的应用来说,吞吐量和请求响应时间成反比,服务延迟更长则系统吞吐量更低。
4)并发用户数 :并发用户数指的是系统能够同时承载正常使用系统功能的用户数,相较于吞吐量,这个指标更为笼统但是对于非软件领域的人来说更容易理解。
软件产品主要围绕两个核心问题,一是解决目标用户的痛点问题,二是提升产品黏性。在提供软件服务时,抽象的来看是解决数据在整个链路上的流转问题,如何让数据流转更加高效、更加顺畅是在实现时着重关注的地方,事实上,无论是浏览器、负载均衡、应用服务器还是数据库等等各个环节都会应用到缓存,当数据离用户“更近”,比如数据副本在客户端上,也就意味着请求能够很快的进行响应,相应的给用户进行数据呈现的耗时就更短。现如今用户爸爸们“日理万机”,如果一个软件产品不能在很短时间就获取用户的注意力,很大可能性就意味着失败。因此,使用缓存能够让用户从主观上获取更优的用户体验。
客户端缓存
网络缓存
服务端缓存
单机缓存
缓存集群
分布式缓存
本地缓存/进程内缓存
进程间缓存
远程缓存
query_cache_size:设置能够缓存ResultSet的内存区域大小 query_cache_type:表示使用缓存的场景。0表示任何场景下都不使用Query Cache,1表示显式指定不使用Query Cache的查询都可以使用,2(DEMAND)表示只有明确指示使用Query Cache才会生效; Qcache hits:表示多少次查询命中Query Cache Qcache inserts:表示多少次没有命中Query Cache而插入数据 Qcahce lowmem prunes:表示多少条Query引入空间不足而被清除 Qcache free memory:表示剩余内存大小 Qcache free blocks:该值很大表示内存碎片很多,需要及时清理