关于华为云:华为云PB级数据库GaussDBfor-Redis揭秘第六期Feed流场景中的应用

摘要:探讨常见的Feed流零碎蕴含的概念、架构和挑战以及如何应用高斯Redis设计一个Feed流零碎。

本文分享自华为云社区《华为云PB级数据库GaussDB(for Redis)揭秘第六期:Feed流场景中的利用》,原文作者:高斯Redis官网博客。

一、背景

GaussDB(for Redis)(下文简称高斯Redis),是华为自研的强统一、长久化NoSQL数据库,兼容Redis5.0协定。

在互联网时代,咱们日常生活充斥着Feed流,微信朋友圈、微博、抖音以及头条等等都在应用Feed流,将咱们关注的好友或感兴趣的内容及时推送给咱们,使咱们沉沦其中无法自拔,带来商业价值的晋升。接下来将和大家一起探讨常见的Feed流零碎蕴含的概念、架构和挑战以及如何应用高斯Redis设计一个Feed流零碎。

二、 概念

Feed流零碎从模式上是Feed生成者将生产的Feed通过存储散发零碎传递给Feed消费者,最终以某种展示模式。

  1. Feed:单次推送的内容。 一条微博就是一个Feed。
  2. Feed流:由间断的Feed组成的信息流。
  3. 展示模式:展现模式目前次要有Timeline和Rank。比方微博以Timeline展现。头条客户端次要以举荐Rank来进行展现。
  4. Feed生产者:对于微博就是每个用户,针对头条就是举荐算法。
  5. Feed消费者:接管Feed告诉的主体。
  6. 同步存储系统:这部分个别又能够分为三局部(具体实现会略有差别)。
    6.1 内容存储模块:这部分关怀Feed原始内容如何存储。如你发的一条微博。
    6.2 关联关系存储模块:对于微博存储的是用户的关注人和被关注人,对于头条存储的是人群(依据用户画像对所有用户进行分类)
    6.3 信箱模块:个别又可叫做消息传递模块,Feed音讯存储到信箱,能力最终造成Feed流。

三、架构设计

通过上述的概念介绍,咱们来看Feed如何从Feed生产者最终流转到Feed消费者。

Feed生产者创作一条内容后发到Server端,Server端先将音讯内容存储到音讯存储模块,接着依据信箱模块的设计查问关系存储库将告诉信息写入信箱模块, Feed消费者通过查问信箱获取及时音讯。

音讯存储模块:
Feed内容个别都是半结构化数据,数据量大,须要长久化内容,逻辑上就是一个KV零碎,ID到内容的映射关系。

关系存储模块:
关联关系会产生新增和删除,是一个变长的汇合,须要可能反对疾速的增删查动作,个别不须要反对join等简单操作。因而NoSQL数据库比拟适宜这类数据的存储。

信箱模块:
说到信箱模块个别大家都会探讨是采纳推模式、拉模式或推拉模式联合形式。在华为云PB级数据库GaussDB(for Redis)揭秘第五期:高斯 Redis 在IM场景中的利用 也有过探讨。
推模式,在查问完关联关系后,将Feed告诉写入到每个Feed消费者的收件箱中,Feed消费者查问本人的收件箱就能获取残缺的Feed流,告诉会写入每个须要告诉的人收件箱,写会放大。

拉模式,将Feed告诉写入本人的发件箱,Feed消费者先查问关系库,而后从所有关注人的发件箱中获取Feed音讯后合并展现,因而收件箱被读次数和被关注人数目无关,读会放大。

推拉模式联合:针对大多数用户的写入用推模式,特定用户采纳拉模式,Feed消费者读取时别离读取本人的收件箱和特定用户的发件箱,合并之后展现。

到底选用哪种模式,看具体业务场景和要求。

很多业务在具体实现的时候,会先将音讯写入音讯队列,一方面能够起到流量削峰的作用,另一方面能够实现一些特定的推送优化逻辑,如判断为垃圾广告或者敏感词不进行推送。

四、技术挑战

咱们首先从微信朋友圈颁布的数据来感受一下。在2021年1月19日,在微信公开课Pro上微信创始人张小龙披露微信最新数据:微信每天有7.8亿用户进入朋友圈,1.2亿用户发表朋友圈。均匀每人关上浏览十几次,每天100亿次浏览量。若咱们想实现相似的Feed流零碎会有什么挑战。从存储量上来看,若用户均匀每天发送3次朋友圈,每条内容1kB,一年大概1000亿条记录,存储容量靠近100TB。从拜访申请次数来看,每天写入和读取OPS峰值至多百万级别,用户写入和读取提早都要有实时性,响应工夫至多都要在秒级内,否则用户分分钟敞开APP。因而咱们须要一个长久化、海量存储、高吞吐、易扩大、低提早、低存储老本的分布式存储系统。

五、高斯Redis的劣势

5.1 高斯Redis简介

高斯Redis是华为云数据库团队自主研发且兼容Redis5.0协定的云原生数据库,采纳计算存储拆散架构。存储侧应用自研的存储系统DFV,容量有限扩大、强统一、高牢靠。计算侧基于 LSM 存储引擎实现,具备极佳的写性能和读性能。利用计算拆散架构的劣势,高斯Redis扩容无需进行数据拷贝,实现秒级扩容,充分发挥了云原生的弹性伸缩、资源共享的劣势。

5.2 Feed流场景如何利用高斯Redis劣势

针对Feed流场景,能够依照如下形式应用高斯Redis:

  1. 音讯内容存储
    利用高斯Redis的KV构造即可实现,高斯Redis采纳存储计算拆散架构,能够轻松撑持海量数据存储及低提早拜访提早。
  2. 关联关系存储
    高斯Redis汇合构造或字典构造能够轻松实现关联关系的增删改查。
  3. 信箱存储
    信箱从实现上就是一个队列,反对从指定地位生产的能力。高斯Redis的Stream构造能够实现队列能力,轻松实现Feed流音讯读取。

5.3 高斯Redis Feed流实际

以下用高斯Redis实现一个简略的微博样例,采纳写扩散模型,用以阐明可行性。
零碎中存在四个用户,Jay、Jolin、ZhangSan、LiSi。其中ZhangSan、LiSi关注了Jay,LiSi同时关注了Jolin。

以上实现了一个简略的微博零碎,实在零碎会比这个简单,会波及业务场景特定解决逻辑。用高斯Redis作为Feed流存储底座是比拟现实的技术选型。

六、总结

高斯Redis具备长久化、海量存储、高吞吐、易扩大、低提早、低存储老本等长处, 作为Feed流存储底座十分适合,其优异的读写性能和高级个性将会极大简化利用开发。同时,高斯Redis在开源Redis根底之上,较好均衡了性能和老本,可能广泛应用在智慧医疗、流量削峰、计数器等畛域。

七、完结

本文作者:华为云高斯Redis团队。
更多技术文章,关注高斯Redis官网博客:https://bbs.huaweicloud.com/community/usersnew/id_1614151726110813

八、参考资料

  1. 《GaussDB(for Redis)官方主页》
    https://www.huaweicloud.com/product/gaussdbforredis.html
  2. 《华为云GaussDB(for Redis)与自建开源Redis的老本比照》
    https://www.modb.pro/db/42739
  3. 《华为云PB级数据库GaussDB(for Redis)揭秘第一期:Redis与存算拆散》
    https://bbs.huaweicloud.com/blogs/238584
  4. 《华为云PB级数据库GaussDB(for Redis)揭秘第二期:Redis音讯队列Stream的利用探讨》
    https://bbs.huaweicloud.com/blogs/245623
  5. 《华为云PB级数据库GaussDB(for Redis)揭秘第五期:高斯 Redis 在IM场景中的利用》
    https://bbs.huaweicloud.com/blogs/249247
  6. 《feed流拉取,读扩散,到底是啥?》
    https://cloud.tencent.com/dev…
  7. 《朋友圈微博feed流,推拉实际》
    https://cloud.tencent.com/dev…

点击关注,第一工夫理解华为云陈腐技术~

【腾讯云】轻量 2核2G4M,首年65元

阿里云限时活动-云数据库 RDS MySQL  1核2G配置 1.88/月 速抢

本文由乐趣区整理发布,转载请注明出处,谢谢。

您可能还喜欢...

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据