写点什么

告诉你个广告业务存储神器

  • 2022-10-13
    中国香港
  • 本文字数:2080 字

    阅读完需:约 7 分钟

告诉你个广告业务存储神器

本文分享自华为云社区《广告业务存储神器:华为云GaussDB for Redis》,作者: GaussDB 数据库。

一、从需求场景说起,什么是 RTA 广告业务?


在互联网时代,媒体平台逐渐成为广告业务的主体,而作为广告主的企业往往每年需花费数亿甚至数十亿广告费,却依然难以准确触达目标用户,这就造成大量资金浪费。在这样的需求场景下,RTA 广告业务模式逐渐流行起来。


RTA 即 Realtime API 的简称,是一套接口服务,用于满足广告主实时个性化的投放需求,在竞价中减少资金浪费。简单来说,RTA 大体流程如下:


1. 媒体在将广告曝光给用户前,先通过 RTA 接口询问广告主是否参与本次竞价;


2. 广告主结合自己的画像数据(一般是百 GB~数 TB 的 key-value 数据)进行决策,快速响应媒体侧,表明是否要参与本次曝光竞价,以及具体的曝光策略;


3. 媒体平台根据价高者得原则,进行精准目标广告投放。


RTA 广告业务流程图


RTA 让广告投放变得更精准,更省钱,还可以满足许多不同的投放需求,例如获取新用户、召回流失用户等。

二、聊聊 RTA 中的数据存储选型


对广告主来说,RTA 业务价值明显,但媒体侧可是设置了不小的技术门槛,一般要求 RTA 系统高峰承载 20w+ QPS,50 到 100ms 快速响应。当不达标时,媒体侧会有降级和清退机制,例如暂时关闭广告主的 RTA 接入通道。


因此,RTA 业务的首要需求是使用靠谱的画像数据库:


1.毫秒级响应,支持数十万级 QPS


2.稳定性高,关键时刻不能掉链子


3.支持百 GB~数 TB 的画像存储,且成本可控


根据经验,很多公司会使用开源 Redis 集群来做这件事,但其实开源 Redis 并不太适合这类大数据场景:

一方面,虽然开源 Redis 并发性能和响应都很优秀,但终究只是缓存,无法提供数据库级的稳定性保障,丢数据、fork 抖动、分片不均 OOM、扩容耗时久等等,都是很常见的问题。


另一方面,由于开源 Redis 中存放的数据无法突破内存限制,上百 GB 的数据存储价格非常昂贵,例如 512GB 规格的开源 Redis 接近 5w/月。


在这类大数据业务场景下,我们推荐使用华为云数据库 GaussDB for Redis 做画像数据存储。

三、大数据业务存储神器:华为云数据库 GaussDB for Redis


GaussDB for Redis 是华为云企业级存算分离 Redis 数据库,使用上与开源 Redis 别无二致,并且能够兼顾缓存与存储两类典型场景


1. 内存+分布式存储池


提供毫秒级响应,同时实现大幅降本


2. 命令兼容度>98%


支持业务零改造平迁


3. 容量最大支持 36TB


保障数据库级别可靠存储,压缩比高


4. 算力按需原配


用多少买多少,最大支持千万级 QPS


5. 无感热扩容


128GB 到 512GB 也只需一秒


6. 增强版 ACL


支持多 DB 访问权限隔离


RTA 广告业务对画像存储的核心需求是:响应快、稳定性高、大容量且不贵,GaussDB for Redis 充分满足这类大数据业务需求。


超低时延,性能满足媒体侧要求


根据现网的案例经验,在数十万 QPS 流量下,GaussDB for Redis 可稳定保持平均时延 1ms,p99 时延 2ms


媒体侧一般对广告主端到端响应要求在 50~100ms,这其中包括了业务及网络链路的耗时,GaussDB for Redis 可以很好地满足响应要求,并给业务链路留有充足的余量。


为什么 GaussDB for Redis 在存算分离的架构下还能提供低时延访问?


1. 自动冷热分离,计算层的内存资源会被用来充分加速热数据


2. 存储池是基于高性能 Nvme SSD 和 RDMA 网络所构建,响应速度其实也很快


实际上,响应快速并非内存的专利,Nvme SSD 同样有优秀的时延表现,下图是市面上某款 Nvme SSD 的性能指标:



作为存算分离的数据库,稳定性远超缓存 Redis


开源 Redis 的稳定性问题存在已久,单线程、fork 机制、Gossip 协议……这些都是让开源 Redis 稳定性不够好的原因。在小数据量缓存场景问题不一定经常出现,但在百 GB 的大数据存储场景下很容易成为打破系统稳定的隐患。


GaussDB for Redis 存算分离架构对稳定性的提升是巨大的。在扩容场景,只需调整存储池配合,即可 1 秒完成扩容,业务 0 感知。由于数据全部存储在分布式存储池中,当计算节点发生故障,数据依然可见,业务只感知秒级抖动。同时,也不会发生分片数据不均 OOM 问题。


存储百 GB 画像数据,比缓存 Redis 成本节省 50%以上


GaussDB for Redis 在这类场景下能够帮助企业实现有效降本,原因是:


1. 内存+分布式存储池(Nvme SSD)


开源 Redis 技术上无法突破内存限制,因此成本会随着每涨 1GB 而线性增长,大数据业务中很容易带来成本痛点。


GaussDB for Redis 分布式存储池采用的高性能 Nvme SSD 硬件成本虽然比普通 SSD 高,但是跟内存相比还是比较高性价比的。另外还支持根据实际所需 QPS 购买计算节点,避免不必要的算力成本浪费。


2. 高压缩比


很多画像类业务使用 protobuf 格式,GaussDB for Redis 采用了逻辑数据+块数据双重压缩机制,对于 protobuf 的压缩比效果很好。根据现网案例经验,500GB 的 protobuf 数据写入 GaussDB for Redis 后,实际占用的存储空间可压缩到 160G,压缩率 30%。

四、总结


RTA 广告竞价业务近年来发展潜力巨大,一方面要满足媒体侧的性能指标要求,另一方面又要承担企业降本重任。


在这类典型大数据业务中,往往需要一款能够兼顾性能与存储降本需求的 KV 数据库来做画像存储,华为云数据库 GaussDB for Redis 无论从性能、稳定性,还是大容量、低成本,都充分满足这类场景的需求,是其最佳存储选型。


点击关注,第一时间了解华为云新鲜技术~

发布于: 刚刚阅读数: 3
用户头像

提供全面深入的云计算技术干货 2020-07-14 加入

华为云开发者社区,提供全面深入的云计算前景分析、丰富的技术干货、程序样例,分享华为云前沿资讯动态,方便开发者快速成长与发展,欢迎提问、互动,多方位了解云计算! 传送门:https://bbs.huaweicloud.com/

评论

发布
暂无评论
告诉你个广告业务存储神器_数据库_华为云开发者联盟_InfoQ写作社区