2T带来的思考 --- AeroSpike 计划

2T应该很多同学没有见过这样的Redis集群吧「我是第一次遇到」,很庆幸用的是阿里云的「舒服很多啊」,但是依然有很多蛋碎的地方需要跟进解决。

阿里云的Redis架构如下,其实是一个类Codis解决方案,控制台最大规格2T,Proxy 1:1 默认「如果是大客户你可以找他们后台搞」。以2T集群版为例,标配为128个Proxy、128个16G的Redis,理论上普通公司应该不可能用到这么大的单集群规格「官方QPS建议只能作为参考,毕竟都是有业务场景的而且大于1k的key和小于1k的key能一样吗」,但是我们遇到了这个问题升啊升最后都变成256个Proxy、256个8G的Redis了「计算了下还能混半年、一年最多了」

问题

看着架构图很美哦,用云了啥都不用管了,但是慢慢发现Proxy变成瓶颈了「大家自行脑补虽然Redis是单线程的但是内存啊还能慢多少呢,为什么大家自己Google去吧」,容量完全不是问题还是QPS上不去了,Proxy到达了瓶颈两条路要么拆「哎怎么又是拆」,要么自己搞Codis「那基本上不用睡觉了」。

这边就引入一个好东西了Aerospike「这个东西开始玩的时候也不待见,被迫接受维护在之前的公司」,突然发现这个东西其实是可以替换部分2TRedis使用场景的,比如只要把key控制在1k以内那速度接近Redis了,并且可以堆机器了。

AeroSpike是啥

Aerospike是一个高性能、可扩展、可靠性强的NoSQL解决方案,支持RAM和SSD作为存储介质,并专门针对SSD特殊优化,广泛应用于实时竞价「我是互联网广告公司出来的所以晓得这个东西」等实时计算领域。官方保证99%的操作在1ms内完成,并提供集群数据自动Rebalance、集群感知客户端等功能,且支持超大规模数据集(100T级别)的存储。作为KV存储,Aerospike提供多种数据类型,其操作方式和Redis比较类似。除基础功能之外,Aerospike还支持AMC控制台、API等多种监控方式,有集群QPS、健康度、负载等多项监控指标,对运维比较友好。支持集群内数据的自动Rebalance,和Redis集群方案相比,维护成本下降不少,东西是好东西这边就不展开了。「官方文档


数据类型说明

Aerospike采用无模式存储,数据模型类似RDBMS,因而在理解与使用上相对亲切:每个namespace包含多个set,每个set包含多条record,每个record包含多个bin(数据库列),可通过索引key来查询record。不同的业务可以使用同一个集群的不同namespace来作做资源隔离,从而实现资源池化、最大化利用资源的目的。


结构说明


官方测试

优点

混合架构:索引存储在 RAM 中,而数据存储在闪存/固态硬盘 (SSD) 上

群集感知客户端软件:客户端知晓数据的存放位置,因此通常能够通过一次单跳检索到数据

无热点:使用哈希函数确保数据均等分布到所有可用节点

数据完整性:保持了高度的一致性,或者允许对跨越多个群集和数据中心的一致性进行调节

线性扩展:添加节点,无需分片,无需人工干预

跨数据中心支持:不同数据中心内的群集能够自动协调,从而实现绝对的可靠性「官方多数据中心同步XDR

不足之处

Aerospike Rolling Start时间过长(scan整个SSD重建索引)

无法支持复杂的数据类型,例如hyperlog

每个record不能超过1MB

在做rebalance过程中,响应会有所抖动

商业版 Vs 社区版

数据一致性:最终一致性

节点限制:Version 4.x 8Node 「这个就有点坑了、3.x版本可以31个node 但是下不到咯」

跨机房同步:无

快速启动:无

相关文档:企业版与社区版区别社区版限制「这个就是As无法大规模推广的问题吧、至少在中国」

适合场景

用户画像、用户关系、防作弊

如何迁移呢

直接从Redis迁移到As是不可能的,我们不要一个过渡阶段,万能的Git又发挥了它牛*的作用了。引入一个组件aerodis,想法就是依然保持Redis操作不变后端开始替换数据存储节点,给到研发时间来熟悉As的过渡方案。

Aerodis

Use Aerospike through a Redis interface.Redis is a great product, but can be difficult to scale. Redis cluster solves some issues, but still uses one thread for each server. Aerospike is natively distributed, multi-threaded and has excellent performance.Aerodis implements most of Redis primitives above an Aerospike Cluster.Architecture: Application (which use Redis driver) => Aerodis => Aerospike cluster.I'm using Aerodis from a big PHP application which have used Redis from a long time.I have deployed one instance of Aerodis on each PHP server, and have achieved 50k queries per second on each server, and have reached 500k queries per second on five Aerospike nodes.

Aerodis这个东西其实就是一个指令转换中间件,我们调整了部分指令的实现「毕竟这个东西有点年纪了」,调整了Aerodis连接As失败重试机制而不是原有直接宕了的问题。

注意点

充分利用Cloud的扩展性在SLB、aerodis使用AutoScaling「吐槽Aws的ELB是可以水平扩展的、阿里云的SLB就不行只能垂直升」

在使用的时候需要区分SLB集群配合多套来区分业务,同样Aerodis同样需要,我们也不希望一套组件走天下「SLB+Aerodis」


过渡方案

成本预估

依然按照2TRedis计算接近 200w 一年的花费,ecs.i2.8xlarge * 18 86w 一年的花费,显而易见了是吧「阿里云应该各家公司都有自己的折扣,剩下的钱可以去买企业版、经验告诉我价格肯定是可以谈的,As最多可以到128个node、不够了我们加盘、升配」

测试分享


Proxy


直连As

写在最后

Redis本身是没有问题的,还是使用的上的不妥导致这套方案的出生,希望能给打大家借鉴,这边要感谢两位研发同学给到的充分帮助,感谢「自己动手的研发架构师才是真的架构师」。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,809评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,189评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,290评论 0 359
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,399评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,425评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,116评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,710评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,629评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,155评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,261评论 3 339
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,399评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,068评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,758评论 3 332
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,252评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,381评论 1 271
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,747评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,402评论 2 358