[发明专利]一种基于timeline模型的即时通讯多端同步的方法在审
| 申请号: | 202110548966.9 | 申请日: | 2021-05-20 |
| 公开(公告)号: | CN113407622A | 公开(公告)日: | 2021-09-17 |
| 发明(设计)人: | 刘超群 | 申请(专利权)人: | 合肥市智享亿云信息科技有限公司 |
| 主分类号: | G06F16/27 | 分类号: | G06F16/27;G06F16/22;H04L12/58 |
| 代理公司: | 暂无信息 | 代理人: | 暂无信息 |
| 地址: | 230000 安徽省*** | 国省代码: | 安徽;34 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 基于 timeline 模型 即时通讯 多端 同步 方法 | ||
1.一种基于timeline模型的即时通讯多端同步的方法,其特征在于:包括如下步骤:
步骤一:消息同步库的发送、读取与缓存;
步骤二:消息同步库存储到每个用户的消息队列;
步骤三:消息同步库的放大存储。
2.如权利要求1所述的基于timeline模型的即时通讯多端同步的方法,其特征在于:步骤一的具体操作为:所有消息发送至Rabbitmq服务器,消息消费程序从消息队列读取,由于群聊会有写放大的问题,此处采用批量插入的方式,群内的一条消息批量写入到N个成员的消息队列里,此处会出现消息的冗余存储,把消息内容存储到redis缓存空间中,插入ElasticSearch中的冗余的只有消息Id,大大减少了消息存储占用的空间。
3.如权利要求1所述的基于timeline模型的即时通讯多端同步的方法,其特征在于:同步库存储每一个用户的消息队列,每当有关于该用户的消息就会存储到该用户的消息队列中,为了实现该消息队列,存储的字段包括了sourceUid字段标识该消息属于谁的消息,isReaded标识消息是否已读,created标识消息存储的时间戳,msgId标识消息的ID,targetGid标识群消息的id,targetUid单聊时标识对方的id。
4.如权利要求1所述的基于timeline模型的即时通讯多端同步的方法,其特征在于:步骤三的具体操作为:一条单聊消息会插入到发送人的消息队列,也会插入到接收人的消息队列,也就是单聊写放大两份,群聊写放大N份,消息内容写入Redis缓存中,过期时间设置为一个月,此外写一份到mysql数据库中,保证消息在缓存失效后可以从数据库中查询到,存入消息队列时不必写入完整消息,只需要记录消息id,查询时通过消息id就可以从redis或者msyql中查询出完整消息内容。
5.如权利要求1所述的基于timeline模型的即时通讯多端同步的方法,其特征在于:步骤三中存储消息写放大过程中,单聊放大2份,群聊放大N份,此处采用ElasticSearch提供的批量插入api,单聊的2条消息批量插入,群聊的N份消息也批量插入,大大提高了消息的存储效率。
6.如权利要求1所述的基于timeline模型的即时通讯多端同步的方法,其特征在于:步骤二中的消息存储时机为当消息抵达客户端时,客户端会有一个回执消息发送到服务器端,服务器端接收到这个消息,则可确认此消息已经抵达客户端,服务器此时存储消息。
7.如权利要求1所述的基于timeline模型的即时通讯多端同步的方法,其特征在于:步骤二中的消息存储方式为将消息按照群聊和单聊发送到消息队列Rabbitmq中进行异步存储消息,即当消息发送到消息队列之后,立即推送给客户端,此时消息可能还未存储,消息推送和消息存储是异步进行的。
8.如权利要求1所述的基于timeline模型的即时通讯多端同步的方法,其特征在于:步骤三中存储消息数据与放大存储方式如下:
单聊,队列存储详情:
From:发送人id;
To:接收人id;
IsReaded:消息是否已读;
Msgs:消息体;
Created:时间戳;
MsgId:消息唯一标识id;
群聊,队列存储详情:
Sender:发送人id;
Gid:群id;
IsReaded:消息是否已读;
Created:时间戳;
MsgId:消息唯一标识id;
Members:群成员数组信息;
放大存储即单聊时消息需要存储两份,调换sourceUid和targetGid,各存储一份,群聊时存储N份。
9.如权利要求1所述的基于timeline模型的即时通讯多端同步的方法,其特征在于:步骤三中的消息写放大:
单聊消息存储两份:
存储字段为:
sourceUid:当前消息发送人的id;
created:消息的时间戳;
Msgs:消息体的存储;
TargetUid:对方的id;
遍历members,每一个遍历的id作为sorceUid,其余字段:
Gid:群id;
msgid:消息id;
created:消息时间戳;
IsReaded:消息是否已读;
写放大即单聊时消息需要存储两份,调换sourceUid和targetGid,各存储一份,群聊时存储N份。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于合肥市智享亿云信息科技有限公司,未经合肥市智享亿云信息科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110548966.9/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种液相放电辅助气泡静电纺丝装置
- 下一篇:一种防爆喷阀和选矿设备





