cache软件设计
haproxy作为一个7层负载均衡软件,在很大程度上可以支撑高可扩展的应用服务架构。但是在目前的高性能服务架构设计中,不可或缺的引入了cache层。这样导致应用服务架构层次越来越多。一般情况下会是如下所示:
L4(四层负载均衡)——>L7(七层负载均衡)——>cache(反向代理)——>server(原始服务器)
在热点比较集中的情况下,可以考虑把L7和cache合并。处于这样的考虑,我们进行了在haproxy上加上简单cache功能的尝试。目前主要把这层cache定位为轻量的cache
在对cache的设计中主要考虑如下几点:
1、考虑采用mem cache
主要是考虑采用全mem cache。该方式适合采用热点比较集中的情况。
2、cache淘汰策略
最优化的淘汰策略是基于单位大小贡献流量和命中。同时,需要考虑策略的时空开销。目前,主要考虑采用LRU,当然也可以选择其他的cache算法。目前这块算法挺多的。
3、过期策略
采用简单的固定时间过期策略。如果作为一个全cache的,完全采用http1.1协议的两个过期模型,则会增加复杂度。
4、http协议兼容性
主要考虑cache的多版本,如压缩、非压缩、vary等。
5、并发访问
6、合适的内存管理
7、哈希算法选择
在哈希算法选择的时候需要充分考虑业务特性,冲突率。