IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 即时通讯软件做到大组织架构秒更新的技术 -> 正文阅读

[系统运维]即时通讯软件做到大组织架构秒更新的技术

对于企业级即时通讯软件来说,组织架构是否支持实时刷新,将是影响用户体验的关键要素;如果即时通讯软件连组织架构都不能实时刷新和加载,对于用户来说,联系人的信息都看不到,如何沟通?如何能提高沟通效率,减少沟通成本呢?

?

在组织架构实时刷新的实现上,可能有的人觉得“不就是从服务器上下载组织架构吗?完整下载就行了”;实际上并不是如此,对于小型企业来说,组织架构较小,这种方式可能满足使用需求,不影响客户端使用;但是对于大型企业来说,组织架构庞大,这种组织架构同步机制弊端就暴露无遗了,如下:

在网络波动情况下,大组织架构刷新缓慢问题。服务器组织架构更新,客户端更新显示慢,影响使用。最重要的一点,对服务器的压力很大。试想一下,在移动网络质量不稳定的情况下,下载组织架构数据需要花费相当长的时间,若此时在客户端查看组织架构将显示为空白,那么,客户端收到新消息就无法显示发送者信息;

此外,服务器组织架构维护变更,客户端还需要等到下一个更新周期,才能显示最新数据,如果是几千或上万人的组织架构,客户端同时向服务器获取组织架构,此时服务器的负载将是巨大的。

技术方案

那么,为了解决上述问题,在组织架构更新机制上是怎样考虑的呢?

即时通讯采用了按需拉取+完整下载组织架构两种方式相结合,并且服务器组织架构服务已将组织架构数据缓存在内存中,客户端可以快速从服务器获取子部门和用户列表 。

即时通讯客户端首次登录,切换到了组织架构界面,本地组织架构为空,立即向服务器按需拉取一级部门列表并显示,底层启动异步线程下载完整组织架构。

用户展开某个部门时,此时完整组织架构未下载完成,立即通过按需拉取到服务器获取该部门的子节点(子部门和用户),并显示出来。

完整组织架构未下载完成时,接收到其他客户端发送过来的新消息时,立即到服务器上请求人员信息并显示。

完整组织架构下载到本地,后续用户切换到组织架构界面时,一级部门从本地获取并显示出来,同时底层异步向服务器检查当前部门是否发生变化,如有变化,从服务器获拉取新数据,更新到界面。即时通讯开发

上述技术方案,利用按需拉取,无需等待全部组织架构下载完成,可立即查看当前节点的部门组织信息,减少等待时间。而下载完整组织架构,可以弥补网络中断时,也能浏览组织架构,从多个维度保证用户又快又全的浏览组织架构。

实现方式

本地不存在完整组织架构时的更新机制

用户首次登录成功后,点击界面组织架构面板,此时界面向底层获取一级部门列表,底层检查本地数据库组织架构没有数据,调用服务器接口获取一级部门列表,服务器返回后显示到界面。

用户展开某个一级部门,流程跟上述一样,界面向底层获取该部门的子部门和用户,底层检查本地数据库该一级部门没有子部门和用户,调用服务器接口获取该部门的子部门和用户,服务器返回后显示到界面。

界面下拉获取部门的子部门和用户时,底层都将执行相同流程,检查到数据库没有该部门的子部门和用户时会向服务器获,然后返回给界面。

此外每天用户第一次上线,底层都会启动独立线程去更新完整组织架构,由于有以上机制保障,更新时间长短不影响用户正常使用。

本地已经存在完整组织架构时的更新机制

用户点击界面组织架构面板,此时界面向底层获取一级部门列表,底层检查本地数据库组织架构不为空,直接从数据库获取一级部门列表返回给界面显示,因此用户即使在断网情况下也可以正常浏览组织架构。

在有网情况下,底层将本地数据抛回给界面后,还异步向服务器检查更新此部门节点数据,如果服务器组织架构已更新,底层将最新数据再次抛给界面,界面更新最新数据,如此一来,服务器任何时候修改组织架构,在有网的情况下,客户端都可以马上更新。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-04-01 23:49:45  更:2022-04-01 23:51:17 
 
开发: 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/15 23:51:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码