当前位置: 首页 > news >正文

成立网站建设领导小组的通知什么是网络推广方案

成立网站建设领导小组的通知,什么是网络推广方案,潮汕17网站一起做网店官网,wordpress同步 微博文章目录 引言什么时候适合加缓存#xff1f;示例1示例2#xff1a;示例3#xff1a; 缓存应该怎么配置#xff1f;数据分布**缓存容量大小#xff1a;**数据淘汰策略 缓存的副作用总结 引言 在上一篇文章IO密集型服务提升性能的三种方法中#xff0c;我们提到了三种优化… 文章目录 引言什么时候适合加缓存示例1示例2示例3 缓存应该怎么配置数据分布**缓存容量大小**数据淘汰策略 缓存的副作用总结 引言 在上一篇文章IO密集型服务提升性能的三种方法中我们提到了三种优化IO密集型系统的方法其中添加缓存(cache)的方法是最常用的而且普适性也是最强的今天展开讲下如何正确使用缓存。准确说我们需要解决下面三个大问题。 什么样的情况下才适合加缓存缓存应该怎么配置如何解决或者减少缓存的副作用 什么时候适合加缓存 我们先解决第一个问题什么情况下适合加缓存。 一句话总结就是**如果某个数据获取”成本高“并且数据是长期有价值那么这份数据是可以加缓存的。**至于这个”长期“到底有多长我们会在后文中详细讲解到。 注意 获取成本高 并且 长期有价值 这两个条件是加缓存的必要条件必须满足这两个条件才可以添加缓存。成本高和长期有价值这两个词很抽象怎么判定成本高什么叫长期有价值其实这里没有客观的判定标准只能是通过对比的方式 我们拿两个具体的示例来说明下。 示例1 你登陆到微信后你好友的头像需要展示到微信各个页面里聊天、点赞、评论……头像是一张图片图片的获取成本相对于纯文本几十个字节的数据是比较高的毕竟即便是一张缩略图也有几十KB大小这里就体现出了图片数据相对的成本高。而微信头像很少会变化拉取一次长期有效这里就体现出来了长期有价值的特性。这个场景就很符合可以缓存的数据的特点。事实上微信确实也是这么做的你换个新头像然后去好友那边观察那边也不会立即生效的。 示例2 可能家庭条件好的同学都在双十一买过东西吧你看中的某个商品库存信息它是一直在变化的你现在看到是100但可能下一秒就变成0了。因为这个数据一直是变化的这个数据对时效性的要求很严格所以它不满足”长期有价值“这个条件因此它是无法缓存的。 示例3 比如我要扫一遍我们系统里所有内容数据找出其中不合规的内容对于单条的内容判定是很消耗资源而且判断结果之后也是一直有效的。这种情况下也没有必要加缓存因为判定结果我使用一次之后也不会再用了这里数据不符合长期有价值的特性。 因此这里也是没必要加缓存的。 有些数据单次获取的成本不高但获取频次非常高这种总的获取成本非常高其实也算是获取成本高。比如各系统里和人员有个的信息这种其实一个接口也能快速返回但架不住调用的次数多这种情况下也是可以添加缓存来减轻压力的。 我们从获取成本和长期价值两个维度可以将数据请求拆分到4个象限。 通过 获取成本高 并且 长期有价值 这两个维度你可以想想在你所遇到的所有业务场景中有哪些是可以通过加缓存来提升性能的 缓存应该怎么配置 在解决了什么场景下可以加缓存的时候就得考虑怎么配置缓存了。这里先来介绍下一个如何评估缓存性能的公式为了直观点我们以IO密集型场景举例IO密集型衡量性能的一个关键指标就是访问延迟latency在缓存的加持下整个系统的平均延时计算方式如下 a v g L a t e n c y h i t R a t e × c a c h e L a t e n c y ( 1 − h i t R a t e ) × o r i g i n a l L a t e n c y (1) avgLatency hitRate \times cacheLatency (1 - hitRate) \times originalLatency \tag{1} avgLatencyhitRate×cacheLatency(1−hitRate)×originalLatency(1) 其中 hitRate 代表的是缓存的命中率cacheLatency是访问一次缓存时的延时originalLatency 是访问一次原始数据时的延迟。avgLatency就是我们系统最终的延迟这个值越低越好。 有些同学可能会问为什么我们不直接把数据全部放到访问最快的存储介质中 这里就涉及到不同存储介质的特性了主要是其数据访问速度、价格导致总之越快的存储介质单位价格也就越高这里就不在展开了大家可以自行查阅下资料。 在我们选定一种缓存介质时缓存延迟cacheLatency也就基本固定下来了而原始数据的访问延迟(originalLatency)我们肯定是干预不了的。剩下我们能干预的也只有缓存命中率hitRate。我们以redis作为缓存为例然后缓存某个10ms接口的数据同机房内redis访问延迟是0.1ms的量级 当缓存命中率分别为1% 10% 50% 90% 100%时我们用上面公式计算出来的结果分别是 9.9ms 9ms 5ms 1ms 0.1ms。可以看出在不同的缓存命中率下最终结果也有着巨大的差异命中率越高性能越强。 由于成本限制我们一般是不会将全量的数据导入到缓存介质里的所以大部分情况下缓存命中率不会是100%而且还希望缓存空间用的越少越好。如何在有限的缓存介质下提升系统性能 从上面的公式就可以看出提升缓存性能最关键的就是提升缓存的命中率而缓存的命中率和数据的访问分布、缓存的大小、缓存数据淘汰策略息息相关。 **数据分布**数据访问是否有规律是否可以利用这些规律 **缓存大小**指缓存最多能存储多少的数据。 **数据淘汰策略**在缓存已满的情况下如何剔除缓存中价值最低的数据腾出空间来给别的数据使用。 数据分布 当我将一份单位时间内访问频次标记在纵坐标轴上并且按频次从大到小排序。大部分情况下我们会的到以上这张数据访问分布图可以看出最左侧的一部分数据占掉了总体访问非常大的一部分头部效应而且长尾的大量数据被访问的频次很低。这就是大家所熟知的长尾分布。 这种分布下的数据是最时候加缓存的头部效应越明显加缓存后的性能提升越明显幸运的是在现实世界中绝大多数数据的访问分布都是这样的。 当然也有部分数据在单位时间内访问的频次很均匀这种一般都是程序定时触发的数据访问这种情况下添加缓存带来的效果提升就很弱甚至没有提升。 所以你会看到在定时任务里很少会考虑去加缓存。 缓存容量大小 在确定了数据分布后就得考虑缓存容量大小的问题了。从上面的性能计算公式来看理论上缓存容量越大缓存对性能提升就越明显但上文我也提到了越快的存储介质价格越高。在上图中蓝色框相比红色框在容量增加一倍后其覆盖的数据访问(曲线下方带背景色面积)远没有增加一倍后面增加缓存带来的覆盖率增长也会越来越低。 可以看出缓存容量大小也会显著影响到缓存的命中率从而影响到性能提升。反过来我们在知道预期性能目标后也可以根据上面的公式反向去计算预期缓存命中率然后计算出缓存的最小合理配置大小。 数据淘汰策略 当缓存已满时我们就需要考虑如何淘汰出当前缓存下最没有价值的数据也就是未来最不可能被访问的数据。 没有任何人或者系统拥有准确预知未来的能力但我们有个简单策略来估算每份数据未来可能被使用的概率这个策略背后的依据就是局部性如果某个数据被访问了那么它未来被访问的概率会高于其他未被访问的数据。已被访问的频次越高未来再被访问的可能性也就越高。所以这里我们只需要记录下每份数据被访问的频次然后把缓存中被访问频次最低的一份数据删除掉就行。 说到这里我们已经不小心发明了LFU (Least Frequently Used)缓存淘汰策略即维护每份数据的访问频次当缓存空间不足时淘汰访问频次最少的一份数据。 与之齐名了还有LRU (Least Recently Used)LRU每次淘汰缓存中最长没有被使用过的数据具体实现的时候按数据被访问的时间由近到远排成一个队列然后淘汰最尾的一份数据相对与LFU实现会简单很多。 LFU和LRU在一定程度上都实现了淘汰最低价值数据的功能但还是有一些差异的。 LFU (Least Frequently Used): 这种策略会淘汰在一段时间内被访问次数最少的数据。这意味着即使某个数据项最近被访问过但只要其总的访问次数仍然是最少的那么就会被淘汰。LFU适合的场景是存在长期热点数据的情况也就是说有一部分数据的访问频率持续地高于其他数据。LRU (Least Recently Used): 这种策略会将最近最少使用的数据项淘汰。也就是说如果一个数据项在过去被访问的频率较低那么在需要淘汰数据以腾出空间时这个数据项会被优先考虑。LRU比较适合在数据访问模式中存在明显的最近偏好特性的情况即最近访问过的数据在未来被再次访问的概率相对较高。 总的来讲LFU能涵盖的数据时间窗口更大而LRU只能覆盖缓存大小那么大的时间窗口所以LFU更适合大时间窗口下头部效应明显的数据而LRU更适合小时间窗口下头部效应明显的数据。根据我的使用经验LRU大部分情况下足以。 除了LRU和LFU之外还有其他的数据淘汰策略比如FIFO和Random甚至还有一些LRU和LFU的改进策略核心都是为了提升缓存的命中率在具体选择的时候还是需要根据自己的缓存大小和数据分布选择合适的数据淘汰策略。 缓存的副作用 缓存最大的副作用就是数据的不一致性这也是很多人谈缓存色变甚至成为拒绝使用缓存的理由。确实使用缓存会有数据不一致性的可能但实际上很多系统是可以接受短暂的数据不一致性的。就像上文中微信头像的问题实测更换微信头像后甚至几天后别人看到的还是你的旧头像。不是微信没法解决头像一致性的问题而是这个问题价值并不大很多人都能接受。 避免数据一致性的问题分为被动和主动两种方式被动方式就是给数据设置有效期像大家在使用redis缓存或者spring-cache时都是可以设置数据过期时间的。当然数据过期时间的设置也是有讲究的设大了不仅浪费空间而且还会增加读到就数据的概率。 命中过期数据的概率可以用以下公式计算 i n v a l i d H i t R a t e c a c h e E x p i r e T i m e 2 d a t a U p d a t e I n t e r v a l × c a c h e H i t R a t e (2) invalidHitRate \frac{\frac{cacheExpireTime}{2}} {dataUpdateInterval} \times cacheHitRate \tag{2} invalidHitRatedataUpdateInterval2cacheExpireTime​​×cacheHitRate(2) 其中dataUpdateInterval指的是数据的更新时间间隔比如某些数据平均3天更新一次这里就是3天。cacheExpireTime就是你在设置缓存的时候数据的有效期任意时刻下剩余有效期平均就是原来的1/2。而cacheHitRate就是上文中提到的缓存命中率。 在开接受的错误率下根据缓存命中率和数据更新的周期就可以反推出一个合理的缓存数据有效期。 这里需要注意的时对缓存数据设置过期时间也可能会显著影响缓存的命中率最终缓存的命中率需要综合缓存大小、数据淘汰策略和缓存过期时间综合去看。 另外一种主动的方式就是在检测到数据发生变化后主动删除缓存里的数据或者是主动将变更后的数据写入。相比被动的方式错误数据的命中率会显著降低。计算错误数据命中率时将公式2中的cacheExpireTime替换为数据变更处理时间即可这在实际使用中这部分时间几乎是0。 但主动更新的方式有很高的实现复杂度首先数据需要有变更事件通知的能力这在很多系统里都是需要额外开发的。其次还需要实现变更监听和写入的逻辑又带来了额外的开发量。 所以除非是很重要的数据一般不会选择主动更新的方式。 总结 在本文中我们探讨了正确使用缓存以提升系统性能的关键要素。首先我们通过数据获取成本和长期价值两个维度来确定是否适合添加缓存。然后我们深入讨论了缓存配置的策略包括如何根据访问延迟、命中率以及存储成本来评估和优化缓存表现。其中缓存命中率是性能提升的核心而这与数据访问的分布、缓存的大小和数据的淘汰策略紧密相关。最后我们讨论了缓存带来的主要副作用数据一致性问题。我们介绍了两种处理这一问题的方法一种是被动的设置数据有效期另一种是主动的数据更新策略每种方法都有其适用场景和权衡考量。 缓存是一个强大的工具用好的话还是可以显著提升系统性能的。选择是否以及如何使用缓存需要从数据特性、业务需求和成本收益上综合去考虑。正确的配置和管理可以最大化缓存的优势同时降低潜在的风险。
文章转载自:
http://www.morning.lkbyj.cn.gov.cn.lkbyj.cn
http://www.morning.zwznz.cn.gov.cn.zwznz.cn
http://www.morning.hqsnt.cn.gov.cn.hqsnt.cn
http://www.morning.dzpnl.cn.gov.cn.dzpnl.cn
http://www.morning.ntyanze.com.gov.cn.ntyanze.com
http://www.morning.wngpq.cn.gov.cn.wngpq.cn
http://www.morning.jhxdj.cn.gov.cn.jhxdj.cn
http://www.morning.qcfcz.cn.gov.cn.qcfcz.cn
http://www.morning.wrlcy.cn.gov.cn.wrlcy.cn
http://www.morning.fjtnh.cn.gov.cn.fjtnh.cn
http://www.morning.ghwdm.cn.gov.cn.ghwdm.cn
http://www.morning.mfbcs.cn.gov.cn.mfbcs.cn
http://www.morning.wcczg.cn.gov.cn.wcczg.cn
http://www.morning.bwzzt.cn.gov.cn.bwzzt.cn
http://www.morning.txzqf.cn.gov.cn.txzqf.cn
http://www.morning.pngdc.cn.gov.cn.pngdc.cn
http://www.morning.piekr.com.gov.cn.piekr.com
http://www.morning.gydth.cn.gov.cn.gydth.cn
http://www.morning.pqndg.cn.gov.cn.pqndg.cn
http://www.morning.lssfd.cn.gov.cn.lssfd.cn
http://www.morning.guofenmai.cn.gov.cn.guofenmai.cn
http://www.morning.jntcr.cn.gov.cn.jntcr.cn
http://www.morning.lrmts.cn.gov.cn.lrmts.cn
http://www.morning.xjkfb.cn.gov.cn.xjkfb.cn
http://www.morning.rmppf.cn.gov.cn.rmppf.cn
http://www.morning.pzqnj.cn.gov.cn.pzqnj.cn
http://www.morning.zhiheliuxue.com.gov.cn.zhiheliuxue.com
http://www.morning.gwzfj.cn.gov.cn.gwzfj.cn
http://www.morning.ndxrm.cn.gov.cn.ndxrm.cn
http://www.morning.plgbh.cn.gov.cn.plgbh.cn
http://www.morning.llyqm.cn.gov.cn.llyqm.cn
http://www.morning.gbpanel.com.gov.cn.gbpanel.com
http://www.morning.mfsxd.cn.gov.cn.mfsxd.cn
http://www.morning.ryfpx.cn.gov.cn.ryfpx.cn
http://www.morning.rlxnc.cn.gov.cn.rlxnc.cn
http://www.morning.skbhl.cn.gov.cn.skbhl.cn
http://www.morning.mqss.cn.gov.cn.mqss.cn
http://www.morning.pbmg.cn.gov.cn.pbmg.cn
http://www.morning.gbljq.cn.gov.cn.gbljq.cn
http://www.morning.pjfmq.cn.gov.cn.pjfmq.cn
http://www.morning.nyjgm.cn.gov.cn.nyjgm.cn
http://www.morning.mbqyl.cn.gov.cn.mbqyl.cn
http://www.morning.jhwqp.cn.gov.cn.jhwqp.cn
http://www.morning.rcgzg.cn.gov.cn.rcgzg.cn
http://www.morning.zfxrx.cn.gov.cn.zfxrx.cn
http://www.morning.rfpq.cn.gov.cn.rfpq.cn
http://www.morning.lqzhj.cn.gov.cn.lqzhj.cn
http://www.morning.smmby.cn.gov.cn.smmby.cn
http://www.morning.lbgsh.cn.gov.cn.lbgsh.cn
http://www.morning.klzdy.cn.gov.cn.klzdy.cn
http://www.morning.cwwts.cn.gov.cn.cwwts.cn
http://www.morning.zmpqt.cn.gov.cn.zmpqt.cn
http://www.morning.rxkq.cn.gov.cn.rxkq.cn
http://www.morning.lrplh.cn.gov.cn.lrplh.cn
http://www.morning.kdxzy.cn.gov.cn.kdxzy.cn
http://www.morning.youprogrammer.cn.gov.cn.youprogrammer.cn
http://www.morning.lywys.cn.gov.cn.lywys.cn
http://www.morning.rnfwx.cn.gov.cn.rnfwx.cn
http://www.morning.bfrsr.cn.gov.cn.bfrsr.cn
http://www.morning.rwfp.cn.gov.cn.rwfp.cn
http://www.morning.khntd.cn.gov.cn.khntd.cn
http://www.morning.nxstj.cn.gov.cn.nxstj.cn
http://www.morning.3jiax.cn.gov.cn.3jiax.cn
http://www.morning.chfxz.cn.gov.cn.chfxz.cn
http://www.morning.byywt.cn.gov.cn.byywt.cn
http://www.morning.wtwhj.cn.gov.cn.wtwhj.cn
http://www.morning.gwxwl.cn.gov.cn.gwxwl.cn
http://www.morning.mnclk.cn.gov.cn.mnclk.cn
http://www.morning.rzcbk.cn.gov.cn.rzcbk.cn
http://www.morning.fsbns.cn.gov.cn.fsbns.cn
http://www.morning.wbxbj.cn.gov.cn.wbxbj.cn
http://www.morning.yxlpj.cn.gov.cn.yxlpj.cn
http://www.morning.sbrpz.cn.gov.cn.sbrpz.cn
http://www.morning.kcdts.cn.gov.cn.kcdts.cn
http://www.morning.lrjtx.cn.gov.cn.lrjtx.cn
http://www.morning.czgtt.cn.gov.cn.czgtt.cn
http://www.morning.tqxtx.cn.gov.cn.tqxtx.cn
http://www.morning.rhsg.cn.gov.cn.rhsg.cn
http://www.morning.rnxs.cn.gov.cn.rnxs.cn
http://www.morning.fxjnn.cn.gov.cn.fxjnn.cn
http://www.tj-hxxt.cn/news/262348.html

相关文章:

  • 网站开发怎么找客户广东建泰建设有限公司网站
  • 咨询手机网站建设平台辽宁省建设工程新希望官网
  • 互联网网站类型网站建设的岗位叫什么
  • 苏州网站设计选哪家网站的建设论文
  • 网站开发技术thinkphp浏览器打开不了网页怎么办
  • 网站建设合同范文公众号开发者登录密码填哪个
  • 自己可以做类似淘宝客网站吗价格列表 wordpress
  • php企业网站建设长沙网站建设去哪好
  • 网站设计实例荆门建网站费用
  • 网站收录查询代码优化什么建立生育支持政策体系
  • 校园网站开发凡客v十商城
  • 网站做的二维码失效了wordpress ueeshop
  • 中国制造网网站云主机网站配置
  • 网站可以个人做吗wordpress 系统安装教程
  • 青岛制作网站的wordpress程序员主题
  • 做摄影哪个网站哈尔滨暂停现场业务
  • 在上海做兼职去哪个网站搜索做外贸在哪个平台比较好
  • 常德外贸网站优化推广做基金的网站哪个好
  • 深圳网站建设uewordpress首页加广告代码
  • 网上最好购物网站做装修网站卖钱
  • 一般网站 要 加入 友情链接吗网站代运营要多少费用吗
  • 移动网站建设学习注册商标查询网
  • 网站建设公司响应式网站模板下载基于php的图书管理系统论文
  • 宿州市网站建设有哪些公司合肥市住房建设局网站
  • 关于网站建设项目收取费用网络系统设计与管理
  • 授权网站系统wordpress首页404
  • 网站开发找谁广州安全教育平台软件
  • 电影手机网站建设蜘蛛网站长工作职责
  • 电子商务网站建设项目规划书网站地图链接怎么做
  • 做一个公司网站价格重庆黄埔建设集团网站