| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> 消息系统设计 -> 正文阅读 |
|
[大数据]消息系统设计 |
目录 PS: 最近在做一些消息相关的内容,对消息做了一下总结,包括发送、接收、存储等,记录一下,欢迎大家交流拓展。 存储消息redis临时存储,数据结构zset kafka异步持久化到db,由于消息表数据量比较大,msg表按照createdTime分区。 发件箱sendBox? redis zset实现。 zadd nx,key:固定前缀+senderId,score:msgId,member:clientId 发件箱的作用?
最大消息限制 最多保留100条消息,zremrangebyrank 收件箱inBox:redis zset实现。 zadd,key:固定前缀+receiverId,score:msgId,member:msg 发送消息最终是添加到receiver的收件箱,这样拉取消息时,每个人拉取自己的收件箱即可。 最大消息限制 最多保留最近一个月的消息,zremrangbyscore 消息结构消息类型发消息设计的数据结构需要支持文本、语音、图片、视频等格式。 可以统一定义一个字段为msgType,然后区分不同类型,定义枚举,每一种类型对应一种结构。 如msgType为“text”,对应结构为: “text": { ??? "value": "发送文本消息" } 如msgType为”image“,对应结构为: ”image": { ??? "url": "https://xxxxxxxx", ??? "width": 80, ??? "height": 80 } 其他类型同理。 最终类似于这种:
拓展发送消息肯定不止这几种类型,其它一些特殊样式的如卡片、系统提示信息、问卷、跳转等等。 上面的结构也是易于拓展的,只要定义不同的msgType及其对应的结构,前后端统一结构即可。 校验内容敏感词服务校验,接口调用判定。 资金来往、索要联系方式等风险提示。 风险用户提示,审核服务,接口调用判定。 拉取消息
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 7:23:50- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |