数据源集市建设的初步思路和规划
|
炸弹、礼花和彩条漫天飞舞,1月21日傍晚,不少微信群都被这些微信8.0版本的新玩法刷了屏。 几天前,张小龙在微信公开课Pro上对这次更新的绝大部分功能进行了“预告”,期待之余,人们对这次更新并不感到意外。就连微信在App Store上的更新说明也十分简短:本次更新的内容为——更新了若干功能。 根据此前刺猬公社(ID:ciweigongshe)的梳理,张小龙在微信公开课Pro2021上主要预告了6个方面的更新,分别是直播、“状态”、表情、可视化歌曲、新版浮窗和微信输入法。 现在看来,除了微信输入法还未上线,其他的5个方面均做出了一定调整。 其中,最显而易见的就是沿用多年的静态版系统自带表情,变成了动态的。表情的设计也多有优化,默认表情也开始变得生动起来了。诸如炸弹、礼花和彩条等表情,还会触发聊天中的特殊效果。
状态,也是微信此次更新的重点。在“我”页面中,用户可以选择心情想法、工作学习、活动等多个类别的状态,具体可以是美滋滋、郁闷、搬砖、摸鱼、数羊等等,还可以设置为未知状态,自定义填写心情。 该方案的难点即重试处理器的实现设计,接下来我们将重点讲述这部分的详细设计 重试队列存储设计 我们采用阿里云表格存储TimeLine模型来存储下行消息的到达状态,阿里云表格存储是阿里云自研的多模型结构化数据存储,提供海量结构化数据存储以及快速的查询和分析服务。表格存储的分布式存储和强大的索引引擎能够支持PB级存储、千万TPS以及毫秒级延迟的服务能力。而Timeline 模型是针对消息数据场景所设计的数据模型,它能满足消息数据场景对消息保序、海量消息存储、实时同步的特殊需求,在IM、Feed流等消息场景应用广泛。
我们给每个用户设备定义一个TimeLine,timeline-id定义为userId_deviceId,sequenceId自定义为消息位点,存储结构如下: 在心跳协议设计上,要注意心跳包的核心目标是检测长连通道是否畅通,客户端主动上行心跳包且能收到服务端回包,就认为长连通道健康,所以上行消息以及回包的数据包应尽可能小,一般来说,通过协议头标识心跳包及响应即可 心跳策略 心跳策略是实现我们上述目标的核心机制,但关于心跳策略的详细设计甚至可以单独写一篇文章,本文仅简单列举几种心跳策略,有兴趣的同学可以阅读文末推荐的文章继续深入研究。
消息ack与重发 为了解决上面的问题,引入消息ack与重发机制,整体思路是客户端在收到accs消息并处理成功后,给服务端回一个ack,服务端下行accs消息时将消息加入重试队列,收到ack后更新消息到达状态,并终止重试。
整体设计流程图: (编辑:广元站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

