分层架构 IM 系统之架构演进
在电商业务日活几百万的情况下,IM 系统采用分层架构方式,如下图。

分层架构的 IM 系统,整体上包含了【终端层】、【入口层】、【业务逻辑层】、【路由层】、【数据访问层】和【存储层】,我们在上篇文章(分层架构 IM 系统之架构解读)中进行了介绍。今天讨论局部的架构调整和演进!
随着用户日活量的增多,业务规模也在逐步增大(即后端接口数量越来越大),而且业务逻辑也越来越复杂;为了引流,平台几乎每周都会做运营活动,此时 IM 系统的业务逻辑全部集中在 Logic 中实现,会愈加繁杂;此时系统表现出的最大的问题是:非核心的业务(如各类运营活动)影响核心的业务(如收发消息、联系人)。
怎样解决该问题呢?将非核心的业务和核心的业务进行拆分即可。上图 IM 系统我们称之为分层架构1.0,那么分层架构2.0见下图。

在业务逻辑层中,包含 Logic 和 Extlogic 两个服务:由 Logic 负责处理核心的、实时性较高的、轻量级的业务,比如:用户登录、点对点消息、群消息、消息已读等; 由 Extlogic 负责处理处理非核心的、实时性较低的,重量级的业务,比如:广播系统消息、离线用户召回等;然后由 Logic 通过 RPC 方式远程调用 Extlogic;Extlogic 如果要推送消息到客户端,直接将其推送到 Entry 即可。
业务逻辑层拆分成 Logic 和 Extlogic 之后,各类运营活动的代码直接在 Extlogic 完成,核心的 Logic 逻辑不会受到运营活动代码的侵入;再一个,频繁重启的是 Extlogic 进程,核心的 Logic 进程大大减少了被重启的次数,保证了核心业务的稳定性。
随着业务的不断迭代,仔细分析 Extlogic 的业务,其业务接口的执行逻辑结果如何,并不会影响到 Logic 的执行逻辑,也就是说:Logic 在执行业务逻辑的过程中,并不关注 Extlogic 的执行结果,只是将业务事件通知到 Extlogic 即可。此时,Logic 和 Extlogic 通过 RPC 这样一种高耦合的方式进行通讯就不是太合适。
再一个,自研的内存存储 Router,随着在线用户量的增多,其维护的复杂度也增大,可以通过成熟的组件进行优化。分层架构 IM 系统3.0见下图。

在 3.0 版本的 IM 系统中,引入了 MQ 消息中间件:MQ 一方面解耦了 Logic 和 Extlogic,同时解耦了 “平台业务” 对整个 IM 系统的调用;在整个电商平台中,有非常多的业务(比如订单、支付、物流、客服等)需要借助于 IM 系统,实现定制化消息的推送。
另外,引入缓存(Redis),替换 Router,大大降低了对用户在线状态中央存储维护的复杂度。
最后,总结文中关键:
1、分层架构 IM 1.0,业务逻辑层通过 Logic 实现所有的业务逻辑;
2、分层架构 IM 2.0,业务逻辑层通过 Logic 实现核心的业务逻辑,通过 Extlogic 实现非核心的业务逻辑;
3、分层架构 IM 3.0,引入 MQ,一方面解耦 Logic 和 Extlogic,一方面解耦电商平台和IM系统;引入 Redis,替换 Router,降低对中央存储维护的复杂度。
大家思考一下:
在分层架构 IM 系统中,入口层 Entry 需要处理哪些问题呢?
相关文章:
分层架构 IM 系统之架构演进
在电商业务日活几百万的情况下,IM 系统采用分层架构方式,如下图。 分层架构的 IM 系统,整体上包含了【终端层】、【入口层】、【业务逻辑层】、【路由层】、【数据访问层】和【存储层】,我们在上篇文章(分层架构 IM 系…...
基于YOLOv8深度学习的医学影像阿尔兹海默症检测诊断系统研究与实现(PyQt5界面+数据集+训练代码)
阿尔茨海默症(Alzheimer’s disease)是一种常见的神经退行性疾病,主要表现为记忆丧失、认知能力下降以及行为和人格改变。随着全球老龄化问题的加剧,阿尔茨海默症的发病率也在逐年上升,给患者及其家庭带来了巨大的经济…...
【支持向量机(SVM)】:相关概念及API使用
文章目录 1 SVM相关概念1.1 SVM引入1.1.1 SVM思想1.1.2 SVM分类1.1.3 线性可分、线性和非线性的区分 1.2 SVM概念1.3 支持向量概念1.4 软间隔和硬间隔1.5 惩罚系数C1.6 核函数 2 SVM API使用2.1 LinearSVC API 说明2.2 鸢尾花数据集案例2.3 惩罚参数C的影响 1 SVM相关概念 1.1…...
Android kotlin之配置kapt编译器插件
配置项目目录下的gradle/libs.versions.toml文件,添加kapt配置项: 在模块目录下build.gradle.kt中增加 plugins {alias(libs.plugins.android.application)alias(libs.plugins.jetbrains.kotlin.android)// 增加该行alias(libs.plugins.jetbrains.kotl…...
时序数据库TDEngine
TDengine 是一款开源、高性能、云原生的时序数据库(Time Series Database, TSDB), 它专为物联网、车联网、工业互联网、金融、IT 运维等场景优化设计。同时它还带有内建的缓存、流式计算、数据订阅等系统功能,能大幅减少系统设计的复杂度&…...
jd-easyflow中inclusive的用法
在jd-easyflow中,inclusive通常与流程中的条件分支(conditions)配置相关,用于控制多个条件分支的执行逻辑。当conditionType设置为inclusive时,表示多个条件分支中的所有条件都会被评估,而不是像exclusive那…...
sqlmap图形化安装使用(附文件)
1.需要python环境,我这里就不教如何安装python环境了。 2.下载压缩包并且解压 3. 凭自己喜好选择大窗口小窗口 4.进入图形化界面后,1.输入url地址。2.选择要执行的操作。3.构造命令语句 5.点击一把梭,然后就可以发现出结果了 6. 对于喜欢自己…...
从二维到一维:动态规划矩阵问题的优化之道
动态规划中的矩阵问题是非常经典的应用场景,比如最小路径和问题。这类问题很自然地可以想到使用二维 dp 数组来求解。 我们定义: dp[i][j] 表示从矩阵的第 i行第 j列到右下角的最小路径和。 基本解法 求解过程从右下角开始,向左上角遍历&am…...
计算机视觉(CV):让机器看懂世界
引言 计算机视觉(Computer Vision, CV)是人工智能的重要领域,致力于让机器能够“看懂”世界。CV技术广泛应用于自动驾驶、医疗影像、安防监控和娱乐领域,正在改变我们的生活方式。 本文将从基本概念、技术方法、应用场景和发展方向…...
记录下,用油猴Tampermonkey监听所有请求,绕过seesion
油猴Tampermonkey监听所有请求,绕过seesion 前因后果脚本编写 前因后果 原因是要白嫖一个网站的接口,这个接口的页面入口被隐藏掉了,不能通过页面调用,幸好之前有想过逆向破解通过账号密码模拟登录后拿到token,请求该…...
服务器产品
一 存储产品 3.1 3PAR 3.2 X10000 3.3 SAN Switch 3.4 Nimble 3.5 SimpliVity 3.6 XP 3.7 MSA 3.8 StoreOnce 3.9 StoreEver 3.10 StoreBlade 3.11 StoreEasy(WindowsNAS) 3.12 JBOD 3.13 CB 二 服务器产品 4.1 红牌服务器 4.1.1 红牌…...
pyhton django web集群基于linux定时任务
基于django management/commands目录下的脚本 from django.core.management import BaseCommand import logging import uuid from pia.utils.cache import reset_redis_expire from pia.utils.reids_key import TASK_KEYlogging logging.getLogger(task)""" …...
探索 Python 字典的奥秘:Future 对象为何能成为字典的键?
本质在于作为字典的key能不能执行hash(key) 问题 import concurrent.futuresdef task(n):return n * n# 创建一个线程池 with concurrent.futures.ThreadPoolExecutor() as executor:# 提交任务并获取 Future 对象future_to_num {executor.submit(task, i): i for i in rang…...
多品牌摄像机视频平台EasyCVR视频融合平台+应急布控球:打造城市安全监控新体系
在当今快速发展的智慧城市和数字化转型浪潮中,视频监控技术已成为提升公共安全、优化城市管理、增强应急响应能力的重要工具。EasyCVR视频监控平台以其强大的多协议接入能力和多样化的视频流格式分发功能,为用户提供了一个全面、灵活、高效的视频监控解决…...
Spark 中 RDD checkpoint 是通过启动两个独立的 Job 完成的。
在 Spark 中,RDD checkpoint 是通过启动两个独立的 Job 完成的。这两个 Job 分别用于生成 checkpoint 数据和更新依赖关系。下面从源码角度深入分析这个机制。 1. 为什么需要两个 Job? 当调用 RDD.checkpoint() 后: 第一个 Job:…...
如何下载TikTok视频没有水印
随着短视频平台的普及,TikTok(抖音国际版)成为了全球最受欢迎的社交媒体平台之一。它吸引了无数创作者发布自己的短视频内容,内容涵盖了舞蹈、搞笑、挑战、教程、旅行等各个方面。与此用户也常常希望能够下载自己喜欢的TikTok视频…...
天童美语:提升孩子的自信心的方法
每个孩子都渴望展翅高飞,但在成长的旅途中,难免会遇到风雨。不自信,就像一层薄雾,有时悄悄笼罩在孩子心头,阻碍了他们向阳而生的脚步。宁波天童教育认为,身为家长,我们的使命不仅是孩子的庇护伞…...
【网络编程】字节序:大端序和小端序
端序(Endianness),又称字节顺序,又称尾序,在计算机科学领域中,指存储器中或在数字通信链路中,组成多字节的字的字节的排列顺序。 在几乎所有的机器上,多字节对象都被存储为连续的字…...
视频融合×室内定位×数字孪生
随着物联网技术的迅猛发展,室内定位与视频融合技术在各行各业中得到了广泛应用。不仅能够提供精确的位置信息,还能通过实时视频监控实现全方位数据的可视化。 与此同时,数字孪生等技术的兴起为智慧城市、智慧工厂等应用提供了强大支持&#…...
RK3568平台开发系列讲解(platform虚拟总线驱动篇)注册 platform 驱动
🚀返回专栏总目录 文章目录 一、注册 platform 驱动二、platform_driver 结构体沉淀、分享、成长,让自己和他人都能有所收获!😄 一、注册 platform 驱动 platform_driver_register 函数用于在 Linux 内核中注册一个平台驱动程序。 下面是对该函数的详细介绍: 函数原型…...
解锁论文写作新范式:Paperzz AI 全流程赋能,让本科毕设从 “启动” 到 “成稿” 高效落地
Paperzz-AI官网免费论文查重复率AIGC检测/开题报告/文献综述/论文初稿paperzz - 毕业论文-AIGC论文检测-AI智能降重-ai智能写作https://www.paperzz.cc/dissertation 当毕业季的钟声敲响,不少本科生正陷入论文写作的僵局:对着空白文档无从下笔、文献检索…...
AI 短剧创作卷疯了?这个平台让成本降 85%,单人也能做爆款
2025 年 AI 短剧赛道彻底火了!日流水超 3200 万、抖音漫剧年播放量破 757 亿,这个背靠 AIGC 技术的新赛道,正在成为内容创作者的掘金新风口。但传统制作流程里的工具切换繁琐、团队协作低效、成本居高不下,却让很多创作者望而却步…...
百川2-13B量化版调优指南:提升OpenClaw任务成功率的关键参数
百川2-13B量化版调优指南:提升OpenClaw任务成功率的关键参数 1. 为什么需要专门调优百川模型参数? 第一次用OpenClaw对接百川2-13B量化版时,我遇到了典型的"自动化尴尬"——明明是个简单的文件整理任务,AI却总在奇怪的…...
3个颠覆性技巧:让Mermaid文本图表成为你的效率倍增器
3个颠覆性技巧:让Mermaid文本图表成为你的效率倍增器 【免费下载链接】mermaid mermaid-js/mermaid: 是一个用于生成图表和流程图的 Markdown 渲染器,支持多种图表类型和丰富的样式。适合对 Markdown、图表和流程图以及想要使用 Markdown 绘制图表和流程…...
Delphi 综合实战:整合所有知识点,打造企业级进销存小系统(可直接商用)
前面我们陆续学会了 Delphi 开发的所有核心技能:基础语法、桌面工具、数据库操作、串口通信、网络请求、JSON 解析、Excel 导出、UI 美化、多窗体管理、权限控制。 这一篇,我们将 整合所有知识点,做一个完整的 企业级进销存小系统࿰…...
ollama-QwQ-32B微调实践:优化OpenClaw技术文档理解能力
ollama-QwQ-32B微调实践:优化OpenClaw技术文档理解能力 1. 为什么需要微调大模型理解技术文档? 去年冬天,我在用OpenClaw自动化处理技术文档时遇到了一个尴尬场景:当我让AI助手"整理OpenClaw的403错误解决方案"时&…...
接口测试,接口间数据传递,数组和字符串类型
一、接口传递说明接口1:输出如下接口2:输入如下:接口2的入参employeeId和userName需要从接口1的出参中获取二、解决方案ApiFox脚本:1、接口1后置操作:设置环境变量如下:var employeeList pm.response.json().data[0].employeeLis…...
mcp和skills 有什么区别?
MCP(Model Context Protocol)和 Kimi Skills 是协议标准与功能实现的关系——MCP 是底层的标准化接口规范,而 Skills 是基于该协议构建的具体功能模块。核心关系图解┌──────────────────────────────────…...
OpenClaw/阿里copaw/阿里QoderWork/腾讯Qclaw/腾讯workbuddy综合对比
1、功能介绍 核心能力:自然语言交互、本地文件操作、代码执行 支持模型:Qwen、Deepseek、OpenAI 等主流厂家模型均支持(硬件条件允许,也可通过ollama连接本地模型) 机器人助手:飞书、企业微信、QQ等创建…...
4步掌握glTF-Blender-Exporter实现3D模型高效导出
4步掌握glTF-Blender-Exporter实现3D模型高效导出 【免费下载链接】glTF-Blender-Exporter Moved to https://github.com/KhronosGroup/glTF-Blender-IO. 项目地址: https://gitcode.com/gh_mirrors/gl/glTF-Blender-Exporter glTF-Blender-Exporter是一款由Khronos Gro…...
