如何快速开发一个IM系统
本文将会给大家介绍如何开发一个简单的即时通讯系统(IM)。
为什么不简单
我们的站点加一个即时通讯(IM)的功能,那么我们怎么做?
在回家的路上,问了同是实习生(网络方向)的舍友这样一个问题,他回答:“很简单,只需要在服务端保存一个list,收到一个人的message后,我转发给list中指定的另一个人就好啦”
接着,我们讨论了一晚上下面的几个问题
- 对方不在线怎么办?
- 内存里保存list的话,人多了怎么办?
- 怎么查看历史记录?怎么多端同步数据?
- 为什么微信用户只能建立有限个群,并且群聊功能很晚才开放?为什么微信好友数是有上线的?
- 怎么保证消息有序、不丢失数据?
- 如何保证消息的时效性?
如何承担高并发流量?
最后讨论的结果是:开发一个稳定高效的IM产品是相对困难的,上面这些难题,QQ、微信等产品都遇到过。而且IM产品一旦量达到一定程度,性能、稳定性、可用性
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
记录一次spark连接mysql遇到的问题
在使用spark连接mysql的过程中报错了,错误如下 08:51:32.495 [main] ERROR - Error loading factory org.apache.calcite.jdbc.CalciteJdbc41Factory java.lang.NoClassDefFoundError: org/apache/calcite/linq4j/QueryProvider at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.8.0_144] at java.lang.ClassLoader.defineClass(ClassLoader.java:763) ~[?:1.8.0_144] at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[?:1.8.0_144] at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) ~[?:1.8.0...
- 下一篇
TypeScript基础入门 - 函数 - 简介
转载 TypeScript基础入门 - 函数 - 简介 项目实践仓库 https://github.com/durban89/typescript_demo.git tag: 1.1.6 为了保证后面的学习演示需要安装下ts-node,这样后面的每个操作都能直接运行看到输出的结果。 npm install -D ts-node 后面自己在练习的时候可以这样使用 npx ts-node 脚本路径 函数 介绍 函数是JavaScript应用程序的基础。 它帮助你实现抽象层,模拟类,信息隐藏和模块。 在TypeScript里,虽然已经支持类,命名空间和模块,但函数仍然是主要的定义 行为的地方。 TypeScript为JavaScript函数添加了额外的功能,让我们可以更容易地使用。说实话我都不想看这块的东西,函数嘛是个写程序的都会写,但是为了追求整体及探索新的知识,没准有意外发现,还是要学习下。 函数 和JavaScript一样,TypeScript函数可以创建有名字的函数和匿名函数。 你可以随意选择适合应用程序的方式,不论是定义一系列API函数还是只使用一次的函数。通过下面的例子可以迅速回...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7设置SWAP分区,小内存服务器的救世主
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题