全国服务热线:400-6136-679

位置:洛阳达内IT教育培训机构 > 学校动态 > 稳定性增加:多级缓存策略

稳定性增加:多级缓存策略

来源:洛阳达内IT教育培训机构时间:2021/9/3 9:33:44

  稳定性增加:多级缓存策略。
  就像我刚才说的,每个请求到来后,系统都会尝试获得与之匹配的实验策略。实验策略是从后台配置的。我们以消息队列的形式将配置后的策略同步到我们的策略池。
  我们较初的计划是,每个请求到来后,我们都会从Redis中读取数据,这样对Redis的稳定性要求更高,大量的请求也会对Redis造成更高的压力。因此,我们引入了多级缓存机制来形成策略池。策略池分为三层:
  一层lrucache是一种简单的缓存策略。它的特点是随着Nginxworker进程的生命周期而存在,worker独占,非常。因为独占的特性,每个缓存都存在于每个worker过程中,所以它会占用更多的内存。
  二层lua_shared_dict,顾名思义,可以跨worker共享。Nginxreload的数据不会丢失,只有restart的时候才会丢失。但是有一个特点,为了安全读写,实现了读写锁。因此,在某些极端情况下可能会出现性能问题。
  三层Redis。
  从整个策略来看,虽然采用了多级缓存,但仍然存在一定的风险,即当L1和L2缓存失效时(如Nginxrestart)可能会面临因流量过大而导致Redis裸奔的风险。在这里,我们使用lua-resty-lock来解决这个问题。缓存失效时,只有拿到锁的这部分请求才能回源,增加Redis的压力不会那么大。

  在缓存30s的情况下,我们对在线数据的统计显示,级缓存的命中率在99%以上,第二级缓存的命中率在0.5%,回源到Redis的请求只有0.03%。

稳定性增加:多级缓存策略

  关键特征
  ·吞吐量:目前承担全站5%的流量。
  ·低延迟:在线平均延迟小于2ms。
  ·整个平台:支持App,H5,WxApp,PC,跨语言。
  ·容灾:
  ·自动降级:当redis中的读取策略失败时,ab会自动进入非分流模式,然后尝试每30s(每台机器)读取redis,直到读取数据,避免频繁发送。
  ·请求手动降级:当server_event日志过多或系统负载过高时,所有实验一键关闭关闭所有实验或AB分流。
  性能表现
  JMeter用于测试工具,并发数100,持续300s。
  从响应时间来看,除了刚开始请求偏离值比较大之外,平均在1ms以内。较初分析差距较大的原因是当时多级缓存中没有数据。
  TPS的压力测试性能略有下降,因为毕竟有hash算法,但总体来说是可以接受的。
  A/B发布
  常规A/B发布主要由API网关进行。当业务需求复杂时,A/B发布会通过与微服务互动开放更复杂维度的A/B发布能力。
领取试听课
每天限量名额,先到先得

尊重原创文章,转载请注明出处与链接:http://www.peixun360.com/3850/news/404462/违者必究! 以上就是洛阳达内IT教育培训机构 小编为您整理 稳定性增加:多级缓存策略的全部内容。

温馨提示:提交留言后老师会第一时间与您联系!热线电话:400-6136-679