前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >疫情成本遭不住?一招降本85%,架构特性全部公开!

疫情成本遭不住?一招降本85%,架构特性全部公开!

作者头像
腾讯云数据库 TencentDB
发布2021-01-27 19:10:44
4850
发布2021-01-27 19:10:44
举报

在20年12月20日,我们开源了腾讯云数据库Tendis存储版,同时这款产品也在一周内就Star上千。这款产品为什么这么香?对于它的适用场景、架构、特性和发展历程,在很多开发者心中都是一片空白。

时隔一个月,在Tendis第一次开发者交流会上,这些问题得到了解答。

那么,Tendis到底为何而生?答案是降本和增效

这还要从当年Redis大热的时代开始说起,Redis得益于高性能以及丰富的数据结构命令,成为当时最受欢迎的KV内存数据库。然而,“高丘之下,必有峻谷”,社区版Redis纵然强大,但也只覆盖了缓存场景,并且纯内存的成本特别高。

而Tendis的出现,就解决了Redis纯内存成本过高和场景单一的问题,通过Tendis的数据降冷和压缩,数据库成本最高可以降低85%,同时冷热分级还解决了缓存的三大难题,一举两得。因此,Tendis是为了解决Redis难以解决的业务问题,而非产品的简单替代。

Tendis的发展历程并不短,从立项到开源,蛰伏了五年,要是算上想法的萌芽,时间还要再往前推,最终,腾讯结合了近10年Redis的使用和研发经验,终于打磨出这款自主研发的开源分布式高性能KV存储,并推出了混合存储版和存储版两种不同产品形态,另外还将存储版开源。

那么,Tendis的具体场景、架构、特性到底是怎样的?接下来让我一一揭晓。

1

Tendis的应用场景

场景1:Tendis Cache,所有数据放到内存中

Tendis Cache基于Redis社区版定制,同样是高性能缓存解决方案,并且在社区版本的基础上还有以下优势:

实现幂等aof

增量rdb,slave断开支持只同步增量变化的rdb

减少集群版的内存消耗

对比社区版redis,性能提升10%

基于rdb搬迁方案,解决大key搬迁导致卡死的问题

场景2:Tendis存储版,所有数据落地存储

Tendis Cache解决了性能问题,并支持线性扩展,但受限于内存的容量和成本,以及数据可靠性不够。因此,我们实现了Tendis的存储版,支持Redis协议和数据结构,所有数据落地存储。用户可以从Redis快速迁移到Tendis存储版,并且保证数据可靠性。

场景3:Tendis冷热混合存储

Tendis Cache和Tendis存储版解决了业务对数据可靠性、成本和性能的不同要求,但它们是完全独立的两个解决方案,仅仅是协议和数据结构兼容。Tendis冷热混合存储可以说是综合了Tendis Cache和Tendis存储版的优点,缓存层存放热数据,所有数据存放于存储层。这既保证了热数据的访问性能,同时保证了全量数据的可靠性,同时热数据支持自动降冷(同时Tendis冷热混合存储版已经上线腾讯云官网,欢迎使用)。

总的来说,Tendis于2015年在腾讯游戏中孵化,通过不断的迭代,逐步上线存储版、混存版,解决了缓存,存储以及混合存储三个场景的问题。目前在大量游戏中使用,包括LOL,DNF,王者营地,火影忍者OL等,同时也得到腾讯的内部大量业务的验证,例如社交,短视频,音乐等。

1

Tendis架构解读

产品能力依托于优秀的架构设计。Tendis存储版完全兼容redis协议,因此,用户可以通过redis client访问Tendis存储版,几乎不用修改代码。同时,Tendis存储版支持远超内存的磁盘容量,可以大大降低用户的存储成本。

一、tendis存储版架构

类似于Redis Cluster, Tendis存储版使用去中心化的集群管理架构。数据节点之间通过gossip协议通讯,用户访问集群中的任意数据节,请求都能路由到正确的节点。并且集群节点支持自动发现、故障探测、自动故障切换、数据搬迁、副本迁移等能力,极大降低运维成本。

二、tendis特性

1. Redis兼容性:完全兼容redis协议,支持绝大多数redis的指令

2. 持久化存储:使用rocksdb作为存储引擎,所有数据以特定格式存储在rocksdb中,最大支持PB级存储

3. 去中心化架构:类似于redis cluster的分布式实现,所有节点通过gossip协议通讯,可指定hashtag来控制数据分布和访问,使用和运维成本极低。

4. 水平扩展:集群支持增删节点,并且数据可以按照slot在任意两节点之间迁移,扩容和缩容过程中对应用运维人员透明,支持扩展至1000个节点。

5. 故障高可用:自动检测故障节点,当故障发生,slave会提升为master继续对外服务。

6. 冷热混合存储关键组件:得益于Tendis存储版的设计和内部优化,Tendis Cache和Tendis存储版可以一起工作成为Tendis冷热混合存储。混合存储区非常适用于KV存储场景,并平衡了性能和成本。相比于redis,占用大量存储空间的冷数据降冷后可以最多减少80%的成本,同时保证热数据的访问性能。

对于Tendis存储节点来说,具有以下特点:

整体使用线程池模式,不同功能模块使用不同的线程池,每个线程池支持动态调整线程资源

支持多线程,实现key lock来保证并发控制。并实现key lock, slot lock, store lock的分层并发控制。

支持配置多个rocksdb,突破单一rocksdb的性能瓶颈,并控制单个rocksdb的容量规模

binlog保存在rocksdb中,保证数据和binlog的事务一致性

三、Tendis存储版 vs Redis Cluster

Tendis存储版在设计和实现上继承了Redis的大量优点,包括丰富的数据结构,去中心化架构等。同时Tendis在可靠性、复制机制、并发控制、gossip实现以及数据搬迁等做了大量的优化,并且解决了一些Redis cluster比较棘手的问题。

四、去中心化架构

从Redis 3.0开始,Redis推出了去中心化的分布式方案,此架构跟一般基于Proxy Based的集群架构有很大的差别,刚开始接受和使用的人并不太多。并且随着Redis的迭代,redis cluster方案也越来越成熟,理解这个架构的人也越来越多,已经成为Redis集群的默认选项。

最终,Tendis经过大量的讨论和调研,也选择了这样的去中心化架构,是其他同类产品中第一个支持去中心化架构的产品。选择去中心化架构后,也带来了不少的好处:

1. 运维简单。Redis Cluster只需集群创建并指定slot分布之后,内核可以自动完成路由广播,节点发现,故障探测等日常运维最常见的问题,很大程度上降低维护成本。如果使用Proxy Based方案,多个proxy的路由一致性往往依赖外部组件(proxy+etcd等)来保证,故障处理一般也需要额外组件来实现。

2. 架构统一。使用了去中心化架构,可以将Tendis的缓存,存储和混合存储3个场景都统一成相同的架构,开发和维护成本更低。

内嵌搬迁。由于Tendis解决了路由共识的问题,那么Tendis的搬迁可以比较方便在内核中实现,并且可以基于Gossip协议来保证集群路由的一致性。这里细节比较多,暂时不展开。

3. 访问层次更少。基于MOVE协议等特征,Redis Smart Client能够直接访问Tendis而无需依赖proxy,部分场景中可以减少一次网络转发。这个在混合存储的架构中特别重要,否则Tendis Cache和Tendis存储版之间就需要增加一个proxy。

当然我们也需要正视去中心化的缺点的,首先是实现相对复杂,其次,相对于Proxy Based集群规模更小。节点间的通讯变多,有可能会出现gossip广播风暴等问题。不过Tendis也对Gossip消息进行了压缩,同时有独立的Gossip线程池处理相关消息,能够比Redis提供更大的集群规模。

1

Tendis开源背后

开源是技术圈一个令人激动的话题,对于广大企业和开发者,可以低成本享受技术的魅力,而对于开发产品的团队本身,目的是为了打磨一个更好的产品。纵观目前所有优秀的开源存储产品,都利用了开源的力量,不断地修复bug,收集需求和想法,并采纳一些优秀的贡献等,集思广益,最终产品得到不断的完善。因此,Tendis也希望如此。

另外,Tendis是目前第一个支持去中心化架构的Redis存储项目,我们认为其故障探测、自动故障切换、数据搬迁、副本迁移等能力在同类产品中是具备竞争力的,Redis的使用和运维习惯得以延续,使用门槛可以大大降低。这样的产品对于企业和开发者,也是有重大意义的。

Tendis的设计和实现深深受到了Redis Cluster的影响,可以说Tendis也是踩在了巨人的肩上成长的,并且经过腾讯海量业务验证的Tendis回馈社区,希望可以帮助用户解决Redis部分场景问题。

1

Tendis社区招募计划——不仅是开源

除了代码开源,一个好的社区发展离不开持续的运营,因此,为了让更多人能理解Tendis的架构、使用方法及内部实现,帮助到更多的企业解决业务难题。因此,Tendis后续会不断完善相关文档,定期push版本更新和组织线上/线下沙龙,并且积极解决用户提出的issue等。

另外,Tendis社区招募计划启动,我们将征集社区开发者,开展开发者培育计划,提供专业的指导和定期的培训,一起建设Tendis社区。

最后,我们希望,基于开源的力量,吸引大量的项目共建者,将Tendis打造成能业界最受欢迎的KV存储之一。欢迎点击「阅读原文」,在开源社区中提出您宝贵的Issue和Pull Requests!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-01-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯云数据库 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档