php可视化网站开发工具,网页设计模板图片html,深圳市光明区住房和建设局网站,c2c的区别INDEX 通用设计概述2 优势3 最佳实践 通用设计概述
通用设计思路如下图
内容分发网络#xff08;CDN#xff09; 可以理解为一些服务器的副本#xff0c;这些副本服务器可以广泛的部署在服务器提供服务的区域内#xff0c;并存有服务器中的一些数据。 用户访问原始服务器… INDEX 通用设计概述§2 优势§3 最佳实践 通用设计概述
通用设计思路如下图
内容分发网络CDN 可以理解为一些服务器的副本这些副本服务器可以广泛的部署在服务器提供服务的区域内并存有服务器中的一些数据。 用户访问原始服务器时其中的静态资源比如banner图片、图标、js脚本、css文件、静态页面等会由 CDN 分发到距离用户较近的副本服务器上并返回对应内容加速访问效率
原始请求经过 CDN 后会自动按请求内容分发至距离合适的副本服务器或原始服务器
OpenResty OpenResty附 官网是一个基于 Nginx Lua 实现的服务端开发平台。 其目的旨在在合适的情况下跳过服务直接访问服务对应的资源本身
JVM 进程缓存caffeine
服务级缓存Redis
数据持久层
§2 优势
分担缓存压力进程缓存相对于分布式缓存节省了网络io的开销速度更快使用时可以减少访问redis的频率从根源上避免缓存的穿透、击穿、雪崩可用性更强即使进程缓存、分布式缓存之一不可用也不会导致整体缓存失效可以争取服务恢复时间
§3 最佳实践
最佳实践
使用 caffeine redis mysql 搭建二级缓存自定义缓存控制器 CacheManager增设监听 redis 失效 key支持断线重连
自定义缓存控制器 redis 监听 示例代码
//缓存管理器
public class CacheManager{//redisprivate CacheFrontend cf;//香菜连接池private RedisClient rc;//本地缓存private Cache lc;//redis 连接栈StatefulRedisConnectionString,String connection;//监听 redis 失效 key//连接正常时通过 lisenter 监听redis事件当事件为失效时同步清理本地缓存public void check(){if(connection ! null connection.isOpen)return ;try{connection rc.connect();cf ClientSideCaching.enable(new CaffeineCacheAccessor(lc),connection,TrackingArgs.Builder.enabled());connection.addListener(msg-{ListObject content msg.getContent(StringCodec.UTF8::decodeKey);//日志输出if(msg.getType().equalsIgnoreCase(invalidate)){ListString keys (ListString)content.get(1);keys.forEach(k-lc.invalidate(k));}});}catch(){//略}}
}//本地缓存访问器
//代理 caffeine client使之实现香菜连接池中 CacheAccessor 接口
public class CaffeineCacheAccessor implements CacheAccessor{private Cache lc;//本地缓存客户端这里可以是 caffeine//示例方法其他方法同样public Object get(Object key){return lc.getIfPresent(key);}
}//心跳检测
Bean
public CommandLimeRunner init(CacheManager cm){return new CommandLineRunner(){public void run(String... args) throws Exception{while(true){cm.check();TimeUnit.SECONDS.sleep(5);}}}
}