会话存档-如何高性能存储海量聊天记录

场景

每天大约500w条数据,存档消息,并对消息进行统计分析。

大概计算一下:

  • 每天的工作时间是8小时,大约是8小时处理400w条数据就足够了,为避免某时刻的峰值超负荷,还按照8小时处理500w条数据的标准来搭建环境;每秒钟大概要处理180条数据;
  • 客户提供了3台应用服务器(8核16G),单台机器每秒需处理60条数据
  • 每条消息(不考虑文件等消息,只考虑文本)平均大小为1kb,每天大约产生5个G的数据

思路

需求已经提出来了,只做其中的一个功能,就是获取消息,保存数据(数据查询、分析是其他需求);

企业微信API:

  • 通过本sdk接口来获取公司一段时间内的会话记录。一次拉取调用上限1000条会话记录,可以通过分页拉取的方式来依次拉取。调用频率不可超过600次/分钟。
  • 获取会话记录内容不能超过3天,如果企业需要全量数据,则企业需要定期拉取聊天消息。返回的ChatDatas内容为json格式。
  • image-20220224161756108

技术选择

因为海量数据的检索,所以需要使用 elasticsearch,但是用elasticsearch来存储的话,太多不需要进行查询的数据会占用大量的存储空间(服务器不够啊),而且很影响检索的速度,数据维护起来还很麻烦;所以还是需要将数据都存入MySQL,es中只存储一些需要查询的关键信息;这样既保留了完整的数据,又能提升检索速度

redis肯定必不可少;分布式锁、处理队列、缓存热点信息等;

大致流程

msgSeq的就是消息的序号;唯一且递增

// 获取 msgSeq
seq = selectSeq();
// 请求企业微信,获取加密消息
encryptionMsg = getEncryptionMsg();
// 消息解密;解密的时候只能一条一条解密
msgList = getDencryptionMsg();
// 消息存mysql;
insertAll(msgList);
// 处理消息结构,以便存入es
msgEs = handlerData(msgList);
// 消息存es;
insertEs(msgEs);
// 其他业务处理
event();
// 修改msgSeq;
updateSeq();// 重新执行此流程

存在的问题点以及优化

1️⃣ 分布式服务,多台机器同时执行以上流程,seq的值无法控制,拉取的消息会重复,加锁又会导致只能有一台机器执行,影响效率

解决方式:

拆分上述流程,把拉取消息、解密消息、消息入mysql、修改seq归为一个流程;

  • 因为涉及seq的变更,这个流程只能单独一台机器执行;每5秒处理1000条数据也足够使用

  • 解密消息,要在入库前进行解密,存储在mysql肯定不能存储密文数据,如果多台机器执行的话,处理流程又多出几步,还需要再依赖redis,性能得不偿失,考虑使用多线程

  • mysql批量插入,只需一条SQL,不浪费时间;同时也必须入库成功了才能修改seq,防止消息丢失

处理结构,存es,对其他业务发布事件等耗时操作归为一个流程

  • 该流程不会出现公有数据,可以多机器一起执行
2️⃣ 解密失败怎么办,线程中断吗?之前成功的消息如何处理?

每次批量拉取500条,循环单条解密,如果解密到第499条数据,解密失败了,重新来一次?那肯定不行,浪费时间,可耻

解密失败的消息也不能直接丢了,考虑把这条消息的seq 记录到redis队列中,然后使用定时任务轮询这个队列,尝试重新拉取,解密

3️⃣ 每天500w消息,MySQL和ES怎么存呢?

如果只存一个表和一个索引;那估计过段时间,这个项目就跑不动了;

那就只能分表,分索引:

  • MySQL数据库设计:

  • 字段类型解释
    idbigint自增主键 mysql为什么建议使用自增主键 - 知乎 (zhihu.com)
    msg_seqbigint消息的顺序,也是一个自增的序号
    msg_idvarcharmsgid的命名规则:19~20位随机数字_时间戳,如果是外部消息会以 _external 结尾
    contentjson消息内容,json格式
    create_datetimedatatime创建记录的时间
  • 每天按照500w计算,每月大概1.5个亿条数据,因为非工作日产生的数据很少,所以肯定不到1.5亿数据,因为这张表查询的次数很少,所以按照月份分表足够了

  • es索引同样如此,因为简化了大量的数据,es比较最初的结构瘦身了70%,所以es也可以按照月份分索引

解决方案

会话存档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/50282.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开通会话存档查看聊天记录需要准备什么?

会话存档是腾讯企业微信推出的一项付费增值功能,开通会话存档之后企业可以通过会话存档API接口获取员工的聊天记录,可以获取到员工与员工之间的聊天记录、员工与客户的聊天记录,员工所在群的聊天记录,企业可以通过企小码会话存档存…

一个网站查遍所有英文文章 “会议地点及出版商”(亲测搜了80篇全部有效)

说明:本人用下面方法进行会议文章——会议地点及出版商 ——的搜索,连搜80篇文章没有任何问题! 前提使用学校网络,可能有的学校没有买会议的权限 第一步:点击所有版本 打开谷歌学术镜像网站,不用翻墙的那…

全国跨境电商联合运营服务平台,定义跨境新力量!

近年来,我国跨境电商行业不断发展,预计2021年跨境电商进出口交易规模有望达到14.3万亿元,疫情催化的市场需求、不断扩大的市场规模、频繁释放利好的政府政策,让跨境的风愈吹愈旺,面对波谲云诡的市场环境,如…

跨境电商卖家,如何运营Facebook?

随着跨境电商的兴起,越来越多的卖家开始运营Facebook,以吸引更多的潜在客户和提高品牌知名度。那么,作为跨境电商卖家,我们可以在Facebook上做些什么呢? 首先,我们可以通过Facebook建立一个专业的品牌页面&…

新手运营适合哪个跨境电商平台

很多企业的网站被收录却没有排名,关键词优化不上去,网站也没有什么流量,不断更新文章,即使是原创,也排不上去,这究竟是由于哪些原因造成的呢?米贸搜作为专业的SEO平台,整理了以下几种…

跨境电商运营做什么的?跨境电商运营怎么样?

图片来源:123rf.com.cn 随着国内电商的逐渐饱和,越来越多的人涌入了跨境电商领域,那么作为一个跨境电商运营工作,每天是做什么工作呢?今天就主要为大家分析跨境电商运营做什么的?跨境电商运营怎么样&#x…

使用Foxmail登录阿里企业邮箱(钉钉邮箱)

pop服务器和SMTP服务器地址分别是:pop.qiye.aliyun.com smtp.qiye.aliyun.com 可以到邮箱里查: 开源项目: https://github.com/xutongbao/learn-chatgpt

第一批因 AI 失业的人已经出现!有公司直接裁掉一半人

点关注公众号,回复“1024”获取2TB学习资源! 当大家还在讨论ChatGPT未来将如何发展的时候,第一批因AI失业的人已经出现了。 据媒体报道,已经有一众游戏公司迅速拥抱技术变革,将AI绘画引进工作流程,用以摆脱…

ChatGPT:AI不取代程序员,只取代的不掌握AI的程序员

作者:成都兰亭集势信息技术有限公司技术总监张雄 可能大家会有如下的问题,我就使用chatGPT这个AI工具的API来问一下。 问:chatGPT会替换掉程序员吗?如果能,预计好久? 答:作为一名 AI 语言模型&a…

我看世界杯——来自一个“假”球迷视角

世界杯还有一个星期就要结束了,说实话,我之前是一场球都没有,对足球知道也甚少,妥妥一个假球迷了。这次世界杯感觉离自己特别近,身边的很多朋友都在看,也不乏赌球的小伙伴,自己的感悟也比较深&a…

2022卡塔尔世界杯互动游戏|运营策略

2022世界杯将于11月20日-12月18日在卡塔尔举办,四年一度的全球最大狂欢节开启! 足球是世界上最受欢迎和追捧的竞技体育项目,超越了国界、性别、种族和年龄,是世界上最早的一项体育项目。但作为展现世界最高足球水平的世界杯,在足球…

【黄啊码】如何用小程序实现世界杯参赛队伍投票

本次只分享小程序端的代码实现,后端每个人都有自己的实现方法,就不写在此。 好了,先看实现样式: 本次投票实现需要一个页面和一个弹窗实现,我们做的是淘汰赛部分,在此,黄啊码将淘汰赛部分直接选…

华人AI女神:从洗碗工到谷歌首席科学家,她是如何逆袭的?

来源 | 北美留学生观察 ID | collegedaily “如果获得诺贝尔奖,我希望是以中国人的身份去领奖。” 提到人工智能,我们首先想到前段时间大火的ChatGPT,其实早在2009年,一位华裔女孩已经钻研起了人工智能,而当时在当时…

大模型时代的“Linux”生态,开启人工智能新十年

演讲 | 林咏华 智源人工智能研究院副院长 整理 | 何苗 出品 | CSDN(ID:CSDNnews) 2018 年以来,超大规模预训练模型的出现推动了 AI 科研范式从面向特定应用场景、训练专有模型,转变为大模型微调模型服务的AI工业化…

巴比特 | 元宇宙每日必读:关闭寄售市场,承诺的“元宇宙”不见踪迹,数字藏品平台iBox被指涉嫌诈骗,多地警方已立案...

摘要:据澎湃新闻报道,4月12日,多名iBox用户向澎湃质量观投诉平台反映,他们在海南链盒科技旗下iBox平台购买数字藏品时被诈骗。针对多名用户报案称被链盒科技诈骗,4月13日,海南省澄迈县公安局正式受理该案。…

外国小哥用 ChatGPT 完成 80% 工作,同时打 4 份工,笑疯。。

点击上方“Java基基”,选择“设为星标” 做积极的人,而不是积极废人! 每天 14:00 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | Java 2021 超神之路,很肝~中文详细注释的开源项目RPC 框架 Dubbo 源码解析网络应…

【设计欣赏】新颖包装设计欣赏

本组是16组设计新颖的包装设计,各具特色,请欣赏。

怎样设计食品包装袋,才能够吸引用户?-东莞吉祥包装

一般咱们去购买食物的时候,首要映入咱们眼帘的是食物的外包装袋子,因而一款食物能不能够卖的好,有很大的一部分原因取决于食物包装袋的好坏,有些产品即便自身的颜色可能不是那么的招引人,可是经过各种办法加以渲染&…

vi设计中产品与包装类设计

vi设计中产品与包装类设计 编辑:AGO(安可)品牌顾问 企业应该注重塑造产品外观式样的独特个性,从而以鲜明的设计吸引消费者。在将北京vi设计的基本要素应用于产品外观设计中时,还应注意vi中的各种要素应与产品特点相结合,与企业整体…

【产品】平面设计之产品包装排版设计

1、产品包装设计分类 1)设计升级 原来包装设计太丑,需要优化视觉形象; 企业战略性调整,原来的设计不符合全新定位导致的重新设计。 2)原创包装设计 根据产品属性、定位,设想突破性的设计创意&#xff…