做一个公司网站多少钱,高网站建设,网站服务器软件,自己制作视频的app服务端缓存
在透明多级分流系统中#xff0c;我们以流量从客户端中发出开始#xff0c;以流量到达服务器集群中真正处理业务的节点结束。一起探索了在这个过程中与业务无关的一些通用组件#xff0c;包括DNS、CDN、客户端缓存#xff0c;等等。 实际上#xff0c;服务端缓…服务端缓存
在透明多级分流系统中我们以流量从客户端中发出开始以流量到达服务器集群中真正处理业务的节点结束。一起探索了在这个过程中与业务无关的一些通用组件包括DNS、CDN、客户端缓存等等。 实际上服务端缓存也是一种通用的技术组件它主要用于减少多个客户端相同的资源请求缓解或降低服务器的负载压力。所以说它是一种分流手段也是很合理的。
引入缓存的理由
关于服务端缓存首先需要明确的问题是在为系统引入缓存之前它是否真的需要缓存 软件开发中并不像硬件缓存如CPU L1/2/3缓存、磁盘缓存等等那样多多益善在软件开发中引入缓存的负作用明显要大于硬件的缓存。主要有下面几个原因
从开发角度来说引入缓存会提高系统的复杂度因为需要考虑缓存失效、更新、一致性等问题从运维角度来说缓存会掩盖掉一些缺陷让问题在更久的时间以后出现从安全角度来说缓存可能泄漏某些保密数据这也是容易收到攻击的薄弱点
那么为什么要引入缓存主要有下面两种理由
为了缓解CPU压力而做缓存把需要实时计算的结果提前算好并对公共数据进行复用从而提升响应性能为了缓解I/O压力而做缓存通过引入缓存把原本对网络、磁盘等较慢介质的读写访问变为对内存等较快介质的访问把原本对单点部件如数据库的读写访问变为对可扩缩部件如缓存中间件的访问等等典型的以空间换时间来提升性能的手段。当然如果可以通过升级硬件来增强CPU、I/O性能的话多花点钱会比引入缓存的风险更低
缓存属性
在设计或选择缓存时需要考虑下面四个维度的属性。
吞吐量缓存的吞吐量使用OPS每秒操作数Operations per Secondops/s来衡量反映了对缓存进行并发读、写操作的效率命中率成功从缓存中返回结果次数与总请求次数的比值它反映了引入缓存的价值高低命中率越低、引入缓存的收益越小扩展功能比如最大容量、失效时间、失效事件、命中率统计等等分布式支持缓存可以分为”进程内缓存“和”分布式缓存“两大类前者只为节点本身提供服务无网络访问操作速度快但缓存的数据不能在各个服务节点中共享后者相反
吞吐量
缓存的吞吐量只有在并发场景中才有统计的意义而无论采用怎样的实现方法线程安全措施都会带来一定的吞吐量损失。 根据Caffeine给出的一组目前业界主流进程内缓存的实现方案包括了Caffeine、ConcurrentLinkedHashMap、LinkedHashMap、GuavaCache、EhCache和Infinispan Embedded等缓存组件库的对比。从它们在8线程、75%读操作、25%写操作下的吞吐量表现Benchmarks来看各个缓存组件库的性能差异还是十分明显的如下图