加入收藏 | 设为首页 | 会员中心 | 我要投稿 广元站长网 (https://www.0839zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

数据源集市建设的初步思路和规划

发布时间:2021-01-27 15:26:56 所属栏目:外闻 来源:互联网
导读:炸弹、礼花和彩条漫天飞舞,1月21日傍晚,不少微信群都被这些微信8.0版本的新玩法刷了屏。 几天前,张小龙在微信公开课Pro上对这次更新的绝大部分功能进行了预告,期待之余,人们对这次更新并不感到意外。就连微信在App Store上的更新说明也十分简短:本次更

炸弹、礼花和彩条漫天飞舞,1月21日傍晚,不少微信群都被这些微信8.0版本的新玩法刷了屏。

几天前,张小龙在微信公开课Pro上对这次更新的绝大部分功能进行了“预告”,期待之余,人们对这次更新并不感到意外。就连微信在App Store上的更新说明也十分简短:本次更新的内容为——更新了若干功能。

根据此前刺猬公社(ID:ciweigongshe)的梳理,张小龙在微信公开课Pro2021上主要预告了6个方面的更新,分别是直播、“状态”、表情、可视化歌曲、新版浮窗和微信输入法。

现在看来,除了微信输入法还未上线,其他的5个方面均做出了一定调整。

其中,最显而易见的就是沿用多年的静态版系统自带表情,变成了动态的。表情的设计也多有优化,默认表情也开始变得生动起来了。诸如炸弹、礼花和彩条等表情,还会触发聊天中的特殊效果。

状态,也是微信此次更新的重点。在“我”页面中,用户可以选择心情想法、工作学习、活动等多个类别的状态,具体可以是美滋滋、郁闷、搬砖、摸鱼、数羊等等,还可以设置为未知状态,自定义填写心情。
 

该方案的难点即重试处理器的实现设计,接下来我们将重点讲述这部分的详细设计

重试队列存储设计

我们采用阿里云表格存储TimeLine模型来存储下行消息的到达状态,阿里云表格存储是阿里云自研的多模型结构化数据存储,提供海量结构化数据存储以及快速的查询和分析服务。表格存储的分布式存储和强大的索引引擎能够支持PB级存储、千万TPS以及毫秒级延迟的服务能力。而Timeline 模型是针对消息数据场景所设计的数据模型,它能满足消息数据场景对消息保序、海量消息存储、实时同步的特殊需求,在IM、Feed流等消息场景应用广泛。

我们给每个用户设备定义一个TimeLine,timeline-id定义为userId_deviceId,sequenceId自定义为消息位点,存储结构如下:
 

在心跳协议设计上,要注意心跳包的核心目标是检测长连通道是否畅通,客户端主动上行心跳包且能收到服务端回包,就认为长连通道健康,所以上行消息以及回包的数据包应尽可能小,一般来说,通过协议头标识心跳包及响应即可

心跳策略

心跳策略是实现我们上述目标的核心机制,但关于心跳策略的详细设计甚至可以单独写一篇文章,本文仅简单列举几种心跳策略,有兴趣的同学可以阅读文末推荐的文章继续深入研究。

  • 短心跳检测 初始状态连续 ping 3次 收到 ack 后,可以认为进入稳定状态
  • 常规固定时长心跳(根据app状态不同,频率可调Mid+,Mid-, Long)
  • 自适应心跳 根据设备网络状态变化自动适应的心跳间隔
  • 冗余心跳,app后台切前台,主动心跳一次

消息ack与重发

为了解决上面的问题,引入消息ack与重发机制,整体思路是客户端在收到accs消息并处理成功后,给服务端回一个ack,服务端下行accs消息时将消息加入重试队列,收到ack后更新消息到达状态,并终止重试。

整体设计流程图:

(编辑:广元站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读