分布式项目日志框架和缓存框架都是必要的,下面来说说两者框架的选择。
先说说日志框架的选择,目前开源的日志框架有很多例如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。
参考: