分布式项目日志框架和缓存框架都是必要的,下面来说说两者框架的选择。
先说说日志框架的选择,目前开源的日志框架有很多例如log4j,log4j2,logback,slf4j等,开发项目时建议用slf4j作为日志框架,原因看图:
本质上slf4j只是一个日志接口,是日志门面接口,它可以支持目前大部分的日志框架,也就是说如果你代码里用的是slf4j做为编码,那么以后你切换日志框架只是换一个maven依赖另一个日志框架,修改一下日志配置文件,而不需要修改代码。
slf4j提供了基于日志占位符省去了用+号连接字符串的麻烦
slf4j是编译绑定能提供跟高效率
最关键的是按照使用slf4j遵循了面向对象思想,使用接口隔离实现。
参考:
再来说说缓存框架的选择,目前的开源缓存框架有:SpringCache,J2Cache,JetCache,Memcached等,就本人使用过的j2cache和jetcache做对比如下表:
名称 | 组织或个人 | 内存缓存 | Redis缓存 | 其他特性 |
JetCache | 阿里巴巴 | RedisCache、TairCache(此部分未在github开源)、CaffeineCache(in memory)和一个简易的LinkedHashMapCache(in memory)四种方式实现的内存缓存 | 支持 | 通过统一的API访问Cache系统 通过注解实现声明式的方法缓存,支持TTL和两级缓存 通过注解创建并配置Cache实例 针对所有Cache实例和方法缓存的自动统计 Key的生成策略和Value的序列化策略是可以配置的 分布式缓存自动刷新,分布式锁 (2.2+) 异步Cache API (2.2+,使用Redis的lettuce客户端时) Spring Boot支持 |
J2Cache | 红薯 | 同时支持 Ehcache 2.x、Ehcache 3.x 和 Caffeine | 支持 | 支持 JGroups 和 Redis Pub/Sub 两种方式进行缓存事件的通知 Spring Boot支持 |
如上表说书,个人倾向于选择jetcache。
参考: