腾讯重磅开源 DCache,分布式 NoSQL 存储系统
山宝银解释,DCache 并不强依赖 etcd,“etcd 只涉及了路由服务 RouterServer 的选主,如果 RouterServer 部署单点也是可用的,而且 RouterServer 的宕机不会影响到数据的读写访问,因为所有的 Proxy 与 Cache 服务都有本地的路由缓存”,关于 TARS 的采用,他说:“因为 TARS 是一个非常优秀的服务开发框架,它屏蔽了底层的网络通信细节,且自带了名字服务等很多服务化需要的功能,对于 DCache 来说,使用已有的 TARS 框架可以更好地做到服务化,我们没有必要去重复的造轮子。” 至于 DCache 本身的能力,山宝银介绍:“DCache 自身的存储引擎具有很高的性能,而且支持后接 DB,对使用者来说,不需要再关心 DB 和缓存之间的数据一致性,以及缓存不命中带来的一系列问题。” 具体来说,DCache 持久化与 Redis 不一样,后者只是把内存中的数据在本地磁盘做一个备份,保证 Redis 重启之后做数据恢复。 “Redis 持久化主要是为了数据备份。DCache 后端有了 DB 以后,业务的逻辑与后台的数据可以完全隔开,DCache 自身会处理缓存与 DB 之间的数据一致性问题。 DCache 会不断地将 Cache 中的数据落地后端 DB,如果 Cache 中存储空间不够,会将已经落地 DB 的冷数据淘汰掉。在数据查询的过程中,如果查询 Cache 不命中,会从 DB 读取并重新存到 Cache,以此来保证 Cache 中数据的热点性和命中率,同时 DB 与 Cache 的穿透问题也得到解决。 另外,数据持久化到后端 DB 的能力对于一些需要做离线数据分析的业务场景也比较方便。总之你完全不用关心数据的东西,只需要把数据写到 Cache,后端的落地由 DCache 处理。” DCache 特性 此外,DCache 的分布式集群化、异地镜像部署、容灾容错能力在实际线上应用中都会提供非常高的价值。 用武之地 作为一个分布式存储系统,DCache 的应用场景没有限制在缓存上,山宝银介绍,对于有高性能 NoSQL 存储需求的场景,都可以使用 DCache,而且因为 DCache 具备容量淘汰与过期自动清理数据的功能,对于需要存储热点数据(如热门文章)与临时数据(如有时效性的聊天记录)的场景也可以提供很好的支持。 山宝银也提供了 DCache 的性能数据: 目前腾讯内部包括 QQ 浏览器、应用宝、腾讯地图、腾讯电脑管家、手机管家与腾讯游戏在内的近百个业务都接入了 DCache,这些业务的体量之大可以想象,山宝银补充:“除了提供的这一组简单的数据,DCache 在高效可靠地支撑着近百个业务的运转,日均调用量过万亿次,这也从侧面说明了 DCache 在生产环境的性能与稳定性。” 而除了系统本身高性能、高扩展、高可用与数据安全的设计外,Web 可视化的高效运维平台也成了 DCache 不可或缺的重要能力。基于内存的 NoSQL 存储系统在运维上会产生巨大的额外开销,它需要对相关技术进行深入理解,并且在紧要关头果断做出正确决策。 DCache 基于 TARS 开发,所以运维平台将 DCache 与 TARS 的服务管理统一做在了一个模块上,山宝银介绍该运维平台将大大提高效率,同时降低了运维门槛,关于服务的部署、上线、迁移、扩容、监控与配置这些操作都可以轻松实现。 【编辑推荐】
点赞 0 (编辑:PHP编程网 - 黄冈站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |