首页 > 动态 > 关键词 > 腾讯最新资讯 > 正文

腾讯重磅开源 DCache,分布式 NoSQL 存储系统

2019-04-16 09:24 · 稿源:开源中国

声明:本文由站长之家内容合作伙伴 开源中国 授权发布。

当你在电商平台秒杀商品或者在社交网络刷热门话题的时候,可以很明显感受到当前网络数据流量的恐怖,几十万商品刚开抢,一秒都不到就售罄;哪个大明星出轨的消息一出现,瞬间阅读与转发次数可以达到上亿。作为终端用户的我们可能会思考,服务系统是怎么在这样严峻的流量环境中存活下来的。

其实,服务系统的架构中有许多巧妙的设计来应对这样的问题,而在这其中,通常系统都会架设缓存系统,用以缓解海量访问请求与数据带来的冲击,实现高性能访问需求。

同时,随着微服务与云等技术的发展,分布式架构的需求变得越来越普遍,再加上今天 Web 上的数据类型已经不再单一,而且数据量也呈爆发式增长,传统的结构化存储方案已经跟不上脚步,对数据库的 SQL 操作不再满足要求,于是 NoSQL 出现。

将这几种技术方案整合起来,我们可以设计出分布式 NoSQL 缓存系统,当前这一类系统有一些比较强大的开源方案,比如 Memcached 和 Redis,它们对整个服务系统的可用性、可扩展性与性能起到至关重要的作用。

听说最近腾讯开源了一个分布式 NoSQL 存储系统 DCache,它的典型应用场景就在分布式缓存。根据官方介绍,DCache 基于 TARS 微服务治理方案,它支持 k-v、k-k-row、list、set 与 zset 多种数据结构,数据基于内存存储,同时支持后接 DB 实现数据持久化。DCache 具备快速水平扩展能力,同时配套有 Web 运维平台实现高效的运维操作。

我们第一时间采访了 DCache 研发团队成员山宝银,希望对项目的研发背景与相关技术细节有进一步了解。

DCache:https://www.oschina.net/p/dcache-nosql

当前开源的分布式缓存系统中,Memcached 与 Redis 是很普遍的选择,腾讯此次为什么要自己造一个系统呢?

山宝银介绍,虽然 Memcached 与 Redis 本身都拥有极其强大的能力,但是存在运维困难、缺乏集群化方案与无法应对微服务趋势带来的挑战等问题。

举个例子,当前微服务是一大趋势,大家都在说要做微服务,它可以让计算与存储之间解耦,实现轻量级通信。微服务不需要管理生命同期,而作为系统组件的 Redis 则不然,“我们做服务架构设计时希望把逻辑层和数据层分离开来,但是如果使用 Redis 做缓存,缓存与 DB 之间的数据一致性问题,以及缓存不命中如何解决等问题都需要使用者在业务逻辑中做相关处理,这增加了一定的复杂度和难度,也增加了逻辑层和数据层的耦合度。”

另一方面,山宝银介绍,起初面对海量数据和高性能访问需求,腾讯内部各个团队其实都开发了各自的缓存系统,然而这些系统之间协议不统一、服务模型多样化、不具有通用性容错、扩展能力也参差不齐,所以团队就着手研发了 DCache 这一套通用 Cache 系统,希望整体去解决业务、开发、运维和监控面临的各种挑战。

所以也可以看到,目前 DCache 已经应用于腾讯内部多个业务上,包括 QQ 浏览器、应用宝、腾讯地图、腾讯电脑管家、手机管家与腾讯游戏等。

SQL、分布式与 NoSQL 的取舍

SQL 是指数据库的结构化查询语言,它是数据库的操作命令集,传统的关系型数据库都使用标准的 SQL 语句操作处理数据。分布式是软件系统的一种架构模式,在分布式系统中,多个硬件或软件组件分布在不同计算机上,彼此之间通过消息传递进行通信,对外表现为一个整体,提供统一化的服务。

有一种普遍的观点是,数据库 SQL 与分布式之间存在天然对立性,山宝银的理解是:“分布式系统因为数据分散在不同的节点,所以像 SQL 的联表、事务等操作需要全局的锁保护,这样处理起来比较复杂,并且影响性能。”

SQL 还有与 NoSQL 的取舍问题,NoSQL 是指一类数据库,主要用于高性能处理超海量数据,它的一大特点是数据结构简单,以 key-value 为主,数据之间非关联,容易做水平扩展。

从字面上看,NoSQL 似乎是与 SQL 对立的,做 NoSQL 似乎就意味着放弃 SQL,然而实际上 NoSQL 本意是 Not Only SQL,它不仅仅是 SQL,那么也就可以包含 SQL 的能力。

“NoSQL 也不是一定就得放弃 SQL,其实在代理层可以增加 SQL 的解析、计算逻辑来实现 SQL 操作,但这样会影响性能,所以还是看应用场景和业务需求。”

山宝银为我们简单分析了 DCache “分布式 NoSQL”的意义。在 SQL 处理方面,分布式似乎存在劣势,然而分布式意味着可以联结更多的廉价计算机,充分运用算力,以低成本的方式应对高强度的并发访问请求,此外分布式架构还有不少优势,比如避免系统单点问题导致的整体故障,实现高可用。

而另一方面,山宝银也说到:“DCache 因为主要的目标就是高性能,SQL 操作并不是主要想解决的问题,所以 DCache 没有实现 SQL 的功能。”

DCache 分布式策略与能力

DCache 对外提供服务的粒度是 group,一个 group 负责一部分的数据分片,至于每个 group 服务哪些数据,是根据数据的 key 做 hash 映射后所处的范围来确定的。

DCache 会把数据的 key 通过 hash 算法映射到 0~4294967295 (unsigned int) 范围内,然后把 0~4294967295 范围均匀划分到不同的 group 上。例如有两个 group,key 做 hash 后的值在 0~2147483647 范围就分发到 group1,在 2147483648~4294967295 范围就分发到 group2。

在一个 group 内,采用主备架构,只有主节点接收读写请求,所以数据一致性是可以保证的,而当主机不可用时,会触发主备自动切换,保证服务持续可用。

DCache 架构

我们疑惑 DCache 似乎强依赖于 etcd 与 TARS 等中间件,那它本身的核心特性与能力体现在哪里?

山宝银解释,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 的服务管理统一做在了一个模块上,山宝银介绍该运维平台将大大提高效率,同时降低了运维门槛,关于服务的部署、上线、迁移、扩容、监控与配置这些操作都可以轻松实现。 

嘉宾介绍

山宝银,腾讯后台高级工程师,专注于分布式 NoSQL 存储领域的技术研发工作,参与腾讯多个自研存储系统的开发,在分布式系统、高可用与高性能服务等领域有较丰富的经验。

  • 相关推荐
  • 大家在看
  • openEA专访丨浅谈开源的未来:中国开源社区建立是关键

    摘要:今天,openea.net重新上线,这次社区会给我们哪些便利呢?未来的发展方向又是什么呢?听说这次改版增加很多额外价值包!开源君独家采访了社区建设与运营相关负责人,现在带大家一起走进openEA开源社区吧。openEA开源社区(ID:openEA)| 出品小夕 | 编辑Dream | 作者开源君 | 采访openEA运营部 | 受访开源,天生带有“共享精神”的基因,开源生态同时也是被验证过的商业模式。目前国内领先的互联网企业也在开源领域争相布局:

  • OPPO 加入 OpenChain,与谷歌微软共建开源许可标准

    据外媒彭博新闻社 10 日报道,2020 年 5 月 27 日,OPPO 正式成为内地首家OpenChain 白金会员,与谷歌、微软、ARM等行业领军企业一起,参与开源许可标准的制定,共建更加健康的全球开源体系。 OpenChain 作为 Linux 基金会下的项目,旨在制定开源软件供应链标准,帮助各种组织更高效地解决开源许可证一致性地问题。通过 OpenChain 认证后,开源许可流程将更为轻松。目前 ARM、微软、谷歌、高通等各领域巨头纷纷加入 OpenChain,为

  • 早期红利不等人,开源征信助你把握信用经济财富先机

    古人说:“人无信不立,业无信不兴”。在如今信用经济时代,个人信用就更显重要,无论是就业升职、资格审查、出国签证、评先评优,还是买房买车办贷款,都绕不开征信,因此,建立与健全个人征信体系已经成为经济发展的要求之一。然而,目前我国的征信体系建设并不全面,一个完整的征信产业链应当包含前端的征信业务,中端的信用监测和后端的信用修复,相比于火热的前端市场,我国信用修复业务却发展缓慢,成为整个征信系统建设的薄

  • openEuler开源社区成立Ceph SIG

    「中国,深圳, 2020 年 6 月 16 日」今天,openEuler开源社区(以下简称“openEuler社区”)正式成立Ceph SIG(Special Interest Group 特别兴趣小组),完善openEuler操作系统在分布式存储场景的适配。openEuler社区参与者和用户可获得由专业存储团队维护的稳定的Ceph版本构建分布式存储系统,并通过openEuler社区获得技术支持。 Ceph是一个具备高性能、可靠性和可扩展性的分布式存储解决方案,可以同时提供块、文件和对象三种服务

  • 华为开源数据虚拟化引擎openLooKeng:统一SQL接口

    华为在开源软件上又迈出了坚定一步,正式宣布开源数据虚拟化引擎openLooKeng,开源社区官网(https://openlookeng.io)同步上线。openLooKeng致力于为大数据用户提供极简的数据分析体验,让用户

  • 老干妈回应腾讯起诉:没有与腾讯合作 腾讯可能被骗了

    今天下午,针对“腾讯的起诉”老干妈公司相关负责人回应称,并没有与腾讯有任何的合作,关于此事老干妈公司认为,腾讯公司被骗了!老干妈公司已经向警方报案,稍晚会发布声明。

  • 华为开源数据库能力 开放openGauss数据库源代码

    今日,华为正式宣布开源数据库能力,开放openGauss数据库源代码,并成立openGauss开源社区,社区官网(opengauss.org)同步上线。

  • 谷歌开源项目飞马PEGASUS:可以自动进行文章摘要

    谷歌于去年年底发布了一个精简型的机器语义分析项目:飞马(PEGASUS):预先机器学习及训练后的自动文章摘要项目。近期这个项目迎来的新的版本,这个小型项目可以非常精准的自动提取出文章中的摘要,并且只用一千个训练模型就可以生成媲美人类的摘要内容。 当对包括文本摘要在内的下游NLP任务进行微调时,最近针对大型文本语料库进行自我学习的目标的预训练工作已显示出巨大的成功。但是,尚未探讨为抽象文本摘要量身定制的预训练

  • 和鲸科技发布《数据科学教育白皮书》,开源打造最佳教学路径

    随着大数据应用和数据科学应用逐渐升温,数据科学教育项目也在世界每个国家迅速发展,数据科学项目部署不仅代表着高校水平,更能反映出城市发展与国家竞争力。那么,我们的教育距离真正的数据科学教育到底有多远呢?2020 年 3 月,国内领先的数据科学协同平台和鲸科技联合TalkingData旗下腾云大学、全球知名云计算服务平台AWS、开源学习社群Datawhale多家机构共同发布了《数据科学教育白皮书》,旨聚焦于数据科学教育领域,研究基?

  • 老干妈回应被腾讯起诉:腾讯被骗了!

    6 月 29 日,裁判文书网一份裁判文书显示,腾讯请求查封老干妈 1624 万财产,法院裁定同意。 6 月 30 日,腾讯回应称系因老干妈拖欠千万元广告费,腾讯多次催促对方付款却分文未获,遂起诉老干妈。

  • 老干妈回应被腾讯起诉:未与腾讯有过商业合作

    6月30日,“腾讯起诉老干妈”成为了当日互联网上一个热议话题,这两家企业在各自的领域在国内都是数一数二的。对于被腾讯起诉一事,老干妈也在当天晚上发布了声明,表示与腾讯没有商业合作,腾讯是被骗了。

  • 2019 年热门开源项目中的漏洞增加了一倍以上

    ​RiskSense 发布了一份新报告,该报告提供了有关目前热门的开源软件中漏洞的深入发现,其中包括武器化漏洞数、哪种软件最容易受到威胁、攻击的最主要类型等内容。

  • 老干妈负责人回应被腾讯起诉:不清楚腾讯是否会撤诉

    今日下午,老干妈相关负责人表示,对于腾讯方面是否会撤诉,暂时还不清楚。对于“之前有没有注意到腾讯的广告推广事宜”一事,该负责人称:“正在核实当中”。今日午间,腾讯起诉老干妈拖欠广告费一事真相终于水落石出,贵阳公安双龙分局发布公告称,经初步查明,系 3 名犯罪嫌疑人伪造老干妈公司印章,冒充该公司市场经营部经理,与腾讯公司签订合作协议。其目的是为了获取腾讯公司在推广活动中配套赠送的网络游戏礼包码,之后通?

  • 3人伪造老干妈印章与腾讯签合同 腾讯疑似回应被骗全文

    3 人伪造老干妈印章与腾讯签合同是怎么回事?据媒体报道, 3 名不法人员冒充贵阳南明老干妈风味食品有限责任公司(以下简称老干妈)市场经营部经理与腾讯签订合作协议,为了获取腾讯在推广活动中配套赠送的网络游戏礼包码,之后通过互联网倒卖非法获取经济利益。

  • 老干妈称从未与腾讯有过合作 网友:和腾讯合作的是“老千”妈?

    【TechWeb】7月1日消息,针对拖欠腾讯广告费并被立案一事,6月30日晚,老干妈方面发表声明称,经核查,我司从未与腾讯公司或授权他人与腾讯公司就“老干妈”品牌签署《联合市场推广合作协议》,且我司从未与腾讯公司进行过任何商业合作。并称公司已向公安机关报案,公安机关已于2020年6月20日予以立案。此事起源于6月29日,广东省深圳市南山区人民法院发布的一则民事裁定书。根据裁定书透露的信息,法院同意支持原告腾讯的请求,?

  • 老干妈:暂不清楚腾讯是否会撤诉 正在核实腾讯广告推广事宜

    据澎湃新闻消息,今日,老干妈相关负责人表示,暂时还不清楚腾讯是否会撤诉。针对“之前有没有注意到腾讯的广告推广事宜”一事,该负责人称,“我们正在核实当中。”

  • 3人伪造老干妈印章骗过腾讯 腾讯无语:今天中午辣椒酱突然不香了

    7月1日消息,腾讯状告老干妈一案水落石出。据媒体报道,3名不法人员冒充贵阳南明老干妈风味食品有限责任公司(以下简称老干妈)市场经营部经理与腾讯签订合作协议,为了获取腾讯在推广活动中配

  • 腾讯马晓轶:腾讯游戏官方社区“闪现一下”App已上线

    昨日,腾讯游戏年度发布会正式在线上召开,期间集中发布了四十余款游戏产品与品牌。同时,在会上,腾讯公司高级副总裁马晓轶表示,未来腾讯游戏将会做好自己的“新基建”。

  • 腾讯回应被骗

    ​今日午间,针对“ 3 人伪造老干妈印章与腾讯签合同”一事,腾讯在B站发布动态回应称:“今天中午的辣椒酱突然不香了”。在得知腾讯别骗之后,支付宝表示:“希望天下无假章”。

  • 腾讯增持蔚来汽车

    近日,腾讯通过全资子公司黄河投资有限公司买入蔚来汽车 168 万股美国存托股(ADS),相当于 168 万股A类普通股,耗资 1000 万美元。增持后,截至 6 月 10 日,腾讯持有蔚来约1. 59 亿股普通股,持股占比15.1%。

  • 参与评论
文明上网理性发言,请遵守新闻评论服务协议

热文

  • 3 天
  • 7天