| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> 即时通讯软件做到大组织架构秒更新的技术 -> 正文阅读 |
|
[系统运维]即时通讯软件做到大组织架构秒更新的技术 |
对于企业级即时通讯软件来说,组织架构是否支持实时刷新,将是影响用户体验的关键要素;如果即时通讯软件连组织架构都不能实时刷新和加载,对于用户来说,联系人的信息都看不到,如何沟通?如何能提高沟通效率,减少沟通成本呢? ? 在组织架构实时刷新的实现上,可能有的人觉得“不就是从服务器上下载组织架构吗?完整下载就行了”;实际上并不是如此,对于小型企业来说,组织架构较小,这种方式可能满足使用需求,不影响客户端使用;但是对于大型企业来说,组织架构庞大,这种组织架构同步机制弊端就暴露无遗了,如下: 在网络波动情况下,大组织架构刷新缓慢问题。服务器组织架构更新,客户端更新显示慢,影响使用。最重要的一点,对服务器的压力很大。试想一下,在移动网络质量不稳定的情况下,下载组织架构数据需要花费相当长的时间,若此时在客户端查看组织架构将显示为空白,那么,客户端收到新消息就无法显示发送者信息; 此外,服务器组织架构维护变更,客户端还需要等到下一个更新周期,才能显示最新数据,如果是几千或上万人的组织架构,客户端同时向服务器获取组织架构,此时服务器的负载将是巨大的。 技术方案 那么,为了解决上述问题,在组织架构更新机制上是怎样考虑的呢? 即时通讯采用了按需拉取+完整下载组织架构两种方式相结合,并且服务器组织架构服务已将组织架构数据缓存在内存中,客户端可以快速从服务器获取子部门和用户列表 。 即时通讯客户端首次登录,切换到了组织架构界面,本地组织架构为空,立即向服务器按需拉取一级部门列表并显示,底层启动异步线程下载完整组织架构。 用户展开某个部门时,此时完整组织架构未下载完成,立即通过按需拉取到服务器获取该部门的子节点(子部门和用户),并显示出来。 完整组织架构未下载完成时,接收到其他客户端发送过来的新消息时,立即到服务器上请求人员信息并显示。 完整组织架构下载到本地,后续用户切换到组织架构界面时,一级部门从本地获取并显示出来,同时底层异步向服务器检查当前部门是否发生变化,如有变化,从服务器获拉取新数据,更新到界面。即时通讯开发 上述技术方案,利用按需拉取,无需等待全部组织架构下载完成,可立即查看当前节点的部门组织信息,减少等待时间。而下载完整组织架构,可以弥补网络中断时,也能浏览组织架构,从多个维度保证用户又快又全的浏览组织架构。 实现方式 本地不存在完整组织架构时的更新机制 用户首次登录成功后,点击界面组织架构面板,此时界面向底层获取一级部门列表,底层检查本地数据库组织架构没有数据,调用服务器接口获取一级部门列表,服务器返回后显示到界面。 用户展开某个一级部门,流程跟上述一样,界面向底层获取该部门的子部门和用户,底层检查本地数据库该一级部门没有子部门和用户,调用服务器接口获取该部门的子部门和用户,服务器返回后显示到界面。 界面下拉获取部门的子部门和用户时,底层都将执行相同流程,检查到数据库没有该部门的子部门和用户时会向服务器获,然后返回给界面。 此外每天用户第一次上线,底层都会启动独立线程去更新完整组织架构,由于有以上机制保障,更新时间长短不影响用户正常使用。 本地已经存在完整组织架构时的更新机制 用户点击界面组织架构面板,此时界面向底层获取一级部门列表,底层检查本地数据库组织架构不为空,直接从数据库获取一级部门列表返回给界面显示,因此用户即使在断网情况下也可以正常浏览组织架构。 在有网情况下,底层将本地数据抛回给界面后,还异步向服务器检查更新此部门节点数据,如果服务器组织架构已更新,底层将最新数据再次抛给界面,界面更新最新数据,如此一来,服务器任何时候修改组织架构,在有网的情况下,客户端都可以马上更新。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |