分布式通用缓存组件的设计

bisolutions 2014-07-04 05:45:42
1,最近有个新需求,要把公司现有的redis集群,membercache集群再加一个filecache整合起来。做成一个通用的缓存组件。提供一致的set,get操作。现在的问题是:redis支持多种数据结构。membercache又是另一种。filecache就更不用说了。那么不同的缓存服务器。怎么才能整合成一个通用的方法呢?
2,缓存组件的接入:做了一个接入管理系统。系统分配帐号。接入项目获取帐号后,放在配置文件中。组件根据配置文件的帐号读取远程的缓存配置信息:如最大键总数,分配的内存空间,最小内存阀值等。如何才能实时获取配置信息?一旦配置发生变化,客户端的缓存组件如何实时获取?如果每次调用get之前都去读一下配置,那性能可想而知了,并且是远程的。
3,3种缓存服务器的,master-slave;前2者已有解决方案了,filecache也有一些,但觉得都不是很理想,特求教?
...全文
1308 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
tech_zhangwei 2014-12-01
  • 打赏
  • 举报
回复
抽象出统一的API?可以使用工厂模式,获取不同的实现类对不同的cache进行get/set等操作
大齐zy 2014-07-24
  • 打赏
  • 举报
回复
redis 和 memcached 可以用Twemproxy 做代理,不知道楼主是不是用filecache作为二级缓存来做的。
pricks 2014-07-09
  • 打赏
  • 举报
回复
这样搞的话,肯定要做一些二次开发的 还不如自己开发个全新的 应为修理一辆破损的汽车,总比制造一辆新车费太多的力
业余草 2014-07-08
  • 打赏
  • 举报
回复
集群有很多做法的,网上一大群,但是具体还需要你实践
hemaliu 2014-07-08
  • 打赏
  • 举报
回复
1. 这种需求比较奇葩,大约是因为之前项目各自为政接入了不同的缓存方案,现在到了还技术债的时候了?首先,这三种方案的效率和作用是不同的,那这个所谓的一致性set/get体验方案就值得商榷,至少个人觉得memcached应该存储键值对非常自然且几乎都是只读的数据的;redis存储有一定更新要求且值为集合居多的,并且对数据预热有时间要求的;filecache我想主要还是做为一种廉价的存储大内容块的,并且一定是只读的,如果需要更新不如直接删了重新缓存。 所以这三种应该根据数据热度和价值来区分,建议还是至少在set/get方法中加入热度标签来实现底层到底是采用哪种存储支持吧; 2.自己做一个ConfigServer,客户端初始化时从ConfigServer获取配置信息,然后客户端和ConfigServer维持心跳连接,当ConfigServer配置数据发生变化,ConfigServer推送配置信息到客户端; 3.没看明白啥意思啊,你是想问负载和可用性问题?个人觉得比较好的方案就是去中心化,但难度系数比较大,可以去研究下ZooKeeper思想

25,985

社区成员

发帖
与我相关
我的任务
社区描述
高性能WEB开发
社区管理员
  • 高性能WEB开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧