首页 > 数据库 >广告业务存储神器:华为云GaussDB(for Redis)

广告业务存储神器:华为云GaussDB(for Redis)

时间:2022-11-24 22:01:01浏览次数:52  
标签:存储 RTA GaussDB Redis 开源 广告业务


摘要:高性能、大容量、低成本、强稳定性,广告业务需要的Ta都有​


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

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

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

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

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

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

广告业务存储神器:华为云GaussDB(for Redis)_redis


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.内存+分布式存储池(Nvme SSD),提供毫秒级响应速度,并实现了大幅降本​

2. 命令兼容度>98%,业务零改造平迁​

3. 容量最大支持36TB,高压缩比,且保障数据库级别可靠存储​

4. 算力用多少买多少,支持水平扩展到千万级QPS​

5. 无感热扩容,128GB到512GB也只需一秒​

6. 支持多DB租户访问权限隔离(增强版ACL)​


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

  1. 超低时延,性能满足媒体侧要求根据现网的案例经验,在数十万QPS流量下,GaussDB(for Redis)可稳定保持平均时延1ms,p99时延2ms。
    媒体侧一般对广告主端到端响应要求在50~100ms,这其中包括了业务及网络链路的耗时,GaussDB(for Redis)可以很好地满足响应要求,并给业务链路留有充足的余量。
    为什么GaussDB(for Redis)在存算分离的架构下还能提供低时延访问?
    1. 自动冷热分离,计算层的内存资源会被用来充分加速热数据
    2. 存储池是基于高性能Nvme SSD和RDMA网络所构建,响应速度其实也很快
    实际上,响应快速并非内存的专利,Nvme SSD同样有优秀的时延表现,下图是市面上某款Nvme SSD的性能指标:
  2. 作为存算分离的数据库,稳定性远超缓存Redis开源Redis的稳定性问题存在已久,单线程、fork机制、Gossip协议……这些都是让开源Redis稳定性不够好的原因。在小数据量缓存场景问题不一定经常出现,但在百GB的大数据存储场景下很容易成为打破系统稳定的隐患。​
    GaussDB(for Redis)存算分离架构对稳定性的提升是巨大的。在扩容场景,只需调整存储池配合,即可1秒完成扩容,业务0感知。由于数据全部存储在分布式存储池中,当计算节点发生故障,数据依然可见,业务只感知秒级抖动。同时,也不会发生分片数据不均OOM问题。​
  3. 存储百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)无论从性能、稳定性,还是大容量、低成本,都充分满足这类场景的需求,是其最佳存储选型。​

标签:存储,RTA,GaussDB,Redis,开源,广告业务
From: https://blog.51cto.com/u_15805954/5885112

相关文章

  • centos7简单登录redis
    登录数据库:redis_cli-h[host]-p[port]输入用户名、密码登录auth[username]password选择数据库selectindex12.1对key操作的命令keys*:查询所有的ke......
  • Windows 下安装多个Redis 实例
    1.在Redis目录下复制redis.windows-service.conf文件,建议命名规则redis.windows-service-port.conf,我们以6380端口为例。2.打开redis.windows-service-6380配置文件。......
  • RedisConfig.java--开启缓存支持,配置RedisTemplate,缓存到java虚拟机而非Redis,redis支
    @Configuration@EnableCaching//开启缓存支持publicclassRedisConfigextendsCachingConfigurerSupport{@ResourceprivateLettuceConnectionFactorylettuceC......
  • windows下Redis安装
    1.下载编译https://github.com/mythz/redis-windows需要下载后,自己编译生成exe文件选择已经打包好的zip包使用2.运行2.1运行服务器端D:\Code\Redis>redis-server.e......
  • Java使用Redis
    1.下载jedis.jar2.四个数据类型以及键操作publicclassRedisTest{publicstaticvoidmain(String[]args)throwsInterruptedException{RedisTes......
  • 【Java】将枚举类转换为Redis字典缓存
     字典翻译框架实现看这篇:https://www.cnblogs.com/mindzone/p/16890632.html枚举的特性首先是枚举的一些特性:1、枚举实例直接在枚举类中声明2、重载构造器,......
  • redis配置说明
    ##################################INCLUDES####################################包含的其他配置:主要用于多个实例时,共同部分的模板化#include/path/to/local.c......
  • redis基本使用
    Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sortedset:有序集合)。以下是一些基本用法1.string添加获取setname"xiaoxiaohei"getname获取字串GETR......
  • 一文详解GaussDB(DWS) 的并发管控和内存管控
    摘要:DWS的负载管理分为两层,第一层为cn的全局并发控制,第二层为资源池级别的并发控制。本文分享自华为云社区《GaussDB(DWS)并发管控&内存管控》,作者:fighttingman。1背景......
  • 一文详解GaussDB(DWS) 的并发管控和内存管控
    摘要:DWS的负载管理分为两层,第一层为cn的全局并发控制,第二层为资源池级别的并发控制。本文分享自华为云社区《​​GaussDB(DWS)并发管控&内存管控​​》,作者:fighttingman。......