一个海量在线用户即时通讯系统(IM)的完整设计:腾讯分分彩开奖

编辑:凯恩/2018-12-12 11:19

  移动端重点是移动端,支持IOS/Android系统,包括IM App,嵌入消息功能的瓜子App,未来还可能接入客服系统。

  接入层主要任务是保持海量用户连接(接入)、攻击防护、将海量连接整流成少量TCP连接与逻辑层通讯。

  逻辑层负责IM系统各项功能的核心逻辑实现。包括单聊(c2c)、上报(c2s)、推送(s2c)、群聊(c2g)、离线消息、登录授权、组织机构树等等内容。

  存储层负责缓存或存储IM系统相关数据,主要包括用户状态及路由(缓存),消息数据(MySQL也可采用NoSql,如MangoDB),文件数据(文件服务器)。

  客户端从Iplist服务获取接入层IP地址(也可采用域名的方式解析得到接入层IP地址),建立与接入层的连接(可能为短连接),从而实现客户端与IM服务器的数据交互;业务线服务器可以通过服务器端API建立与IM服务器的联系,向客户端推送消息;客户端上报到业务服务器的消息,IM服务器会通过mq投递给业务服务器。

  5、msg-gate得到登录结果后,设置session状态,并向客户端返回授权结果。

  1、客户端发起logout请求,msg-gate设置对应Peer为未登录状态。

  用户请求授权时,可能在另一个设备(同类型设备)开着软件处于登录状态。这种情况需要系统将那个设备踢下线。

  7、如果在其他地方登录,发起kickout命令。(如果没有登录,整个流程结束)

  8、Gate向用户发起kickout请求,并在短时间内(确保客户端收到kickout数据)关闭socket连接。

  2、Logic向redis检索目标用户状态。如果目标用户不在线,丢弃数据(未来可根据业务场景定制化逻辑);如果用户在线,查询到用户连接的接入层gate

  4、Gate向用户推送数据。(如果用户不在线,通知logic用户不在线、

  注:在第6步和第7步之间,启动计时器(DelayedQueue或哈希环,时间如5秒),腾讯分分彩开奖计时器时间到后,探测该条消息状态,如果消息未送达,考虑通过APNS、米推、个推进行推送

  (而非扩散读)的方式。群聊是多人社交的基本诉求,一个群友在群内发了一条消息:

  用户接收消息表:用来描述一个用户的所有收到群消息(与单对单消息表是同一个表)

  1、X向gate发送信息(信息最终要发给这个群,A、B在线、Gate将消息发给logic

  7、存储每个用户的消息数据(用户视图),按照msg_to水平分库(并发、批量写入

  13、向缓存(Hash)中更新收到ack的时间。然后在通过一个定时任务,每隔一定时间,将数据更新到数据库(注意只需要写入时间段内有变化的数据)。

  1、App端登录成功后(或业务触发拉取离线消息),向IM系统发起拉离线个主要参数,uid表明用户;msgid表明当前收到的最大消息id(如果没收到过消息,或拿不到最大消息id则msgid=0)即可;size表示每次拉取条数(这个值也可以由服务器端控制)。

  App得到数据,判断得到的数据不为空(表明可能没有拉完离线条做判断拉完条件,因为服务端需要下下次拉离线的请求来确定这次数据已送达),继续发起拉取操作。Msgid=110(取得到的离线消息中最大的msgid)。

  2.2万在我的《服务器端编程心得》这个系列的第一篇至第六篇都是讲了一些零散的不成体系的网络编程细节。今天,在这篇文章中,我将介绍一款我自主开发的即时通讯软件flamingo(中文:火烈鸟),并...

  2442因为项目的需要,需要在产品中内嵌即时通讯和消息提醒这个功能。前期的调研过程中看了蛮多的产品,看过环信和openfire,甚至包括androidpn。因为是android出身,所以对即时通讯这个模块尤为...

  1046在IM通讯中,通常需要管理自己的小伙伴,经常联系的,重要的用户需要标识在同一用户列表里,方便自己快速联系以及查看好友动态。那么如何可以做到类似QQ的好友列表功能呢,下面以一款在市面上功能强大的SDK为...

  首先我写这篇博客所要探讨的问题是什么,自己查询资料得出的结论或者理解记录下来,产生了这篇博客问题背景:              我相信现在几乎我们每个人都在使用微信,那么你知道微信平台每天的信息量有...来自:lyztyycode的博客

  转载请注明出处,原文地址:最近项目需要使用WebSocket实现即时通...来自:lucherr 的学习历程

  207这里接着上一篇说,这篇也主要介绍我攻读API和SDK的心得体会,但是还要加上使用的时候我的一些思考,因为这些思考会影响后期的产品 1.读API的技巧 API链接戳这里 我首先看的是API,想知道...

  项目不用部署直接下载在本地运行index.html 就能跑起来了。可以修改成自己想要的效果。

  11-05javaIM即时通讯系统源码,里面有详细使用说明,数据库文件可以直接导入,亲测sql server2005,2000正常使用(有问题联系我) 分客户端和服务端,直接编译运行就行 实现功能有:注册,添加

  参考 需求缘起 当发送方用户A发送消息给接收方用户B时,如果用户B在线,之前的文章《微信为啥不丢“在线消息”?》聊过,可以通过应用层的确认,发送方的超时重传,接收方的去重保证业...

  参考 【需求缘起】 之前的一些文章简单介绍了 《“单人消息”》《“离线消息”》《“群消息”》《“用户状态”》的一些相关技术(点击上面的link直接阅读),今天来聊一聊“多点登陆”...来自:BlackhorseMe的专栏

  一份即时通讯系统的Java源代码,模仿qq的即时通讯设计基于netty的企业

  用JAVA实现的即时通讯系统,很经典,需要的朋友可以下下来看看用Netty实现

  6353最近做IM项目,找了一些IM相关的项目了解,以下是一些开源IM项目,可以借鉴下。 一 蘑菇街开源的IM项目,广东11选5。各个端都有。 二 MingQQ是一个使用WebQQ协议开发的山寨QQ客户端,目前实现了Win...

  H5+MUI+Node.js+Socket.io实现即时聊天以及发送+图片压缩+图片预览保存,可以做成长按图片保存,这里是点击按钮保存的。...来自:云上人间钦自赏

  前面写了那么多代码,所在这里我想用最少的代码完成这个功能!用一句js脚本,定时请求生成图片的Servlet并将图片更新到页面中,displayMonitorChart.html页页代码如下:   &a...来自:蓝杰

  2621前言在线客服是一个比较流行的功能,网络上有很多提供在线客服服务的公司,但介绍在线客服技术的文章却很少。另外,网上有一些免费的在线客服框架,但大部分都只适用与小规模的在线客服服务,对于大规模应用(几万人...

  4393转载自:早在一年之前,就曾负责一款IM移动通信类型的App开发...

  1.7万即时通信聊天工具的原理与设计        该软件采用P2P方式,各个客户端之间直接发消息进行会话聊天,服务器在其中只扮演协调者的角色(混合型P2P)。 1.会话流程设计 ...

  09-10存储技术原理分析(基于Linux2.6内核源代码)》(作者敖青云)通过对Linux 2.6内核源代码的分析,详细讨论存储技术的内在实现原理。分为三条主线:解释PCI设备、SCSI设备及块设备的发现过程;跟踪存储I/O路径,即用户对文件的读...

  一个海量在线用户即时通讯系统(IM...zy:楼主能不能尊重一下别人劳动成果?直接从别人那拷贝过来的的代码写原创?有意思? 附原文网址链接带图片...

  mingxingxinxing:很不错,linux安装的时候 管理员权限容易忽略,切记要把账号写入数据库

  一个海量在线用户即时通讯系统(IM...:文章写的不错,但是图片一张都没看到