平台2
2017-03-25 14:53:05 0 举报
平台2是一个集创新、交流和合作于一体的多功能平台。它为各类用户提供了丰富的资源和服务,包括在线教育、远程办公、电子商务等。在这个平台上,用户可以自由地分享知识、经验和技能,与志同道合的人建立联系,共同探讨问题和解决方案。同时,平台2还为企业和个人提供了一个展示自己才华的舞台,帮助他们实现价值和梦想。通过平台2,我们可以更好地连接世界,拓展视野,实现个人和社会的共同发展。总之,平台2是一个充满无限可能和机遇的空间,值得我们去探索和利用。
作者其他创作
大纲/内容
发送异常后
待响应消息队列处理
查找这条消息需要发送的终端会话
丢弃
判断是否可以发送消息当待响应消息队列满了,消息不可发送如果想减少进入持久化队列的次数可以增加待响应队列长度
判断消息重要性
发送给终端
判断消息是否超时
可发送
原则,一个会话不代表一个设备,发送的消息中会带有设备信息,这个会话管理通过这个会话发送消息的设备,包括等待超时队列也是这个会话管理,不同的设备不同的等待超时队列服务器会维护一张设备和会话对应表,在发送时通过消息找这张表,可以找到会话
终端
TCP超时有2种可能1、真的网络慢(可恢复)2、网络阻塞,数据永远无法返回UDP超时可能网络慢,或者丢包
断开重连
终端回应收到
不断开,重发
之前会设置几个消息超时后网络断开网络,等待重连这里判断是否需要断开网络
发送消息
有连接会话
发送异常,网络异常,断开,等待重连
判断是否超过重发次数不需要重发的消息可以吧重发次数设置为1
设备消息
没有连接会话
获取要发送到的终端会话
超时
这个设计tcp和udp逻辑可以通用如果是tcp协议,可以考虑减少重发次数,甚至可以吧重发设置为0,不重发udp需要依赖重发机制,重发间隔时间可以待响应消息自我管理,不断递增重发时间,比如第一次重发5秒,第二次重发10秒,第三次重发15秒,直到重发次数用完,消息发送异常udp没有保持长连接,需要一个机制来处理断开连接,重新连接需要定义什么情况下断开连接 什么情况下连接成功TCP设备建立连接以后,设备登陆以后为设备建立队列,标记这个会话中连接了该设备,可能一个会话连接多个设备(网关的情况)TCP断开连接后标记这个会话不可用,会话绑定的设备不可用,等待2分钟,如果该会话中的设备没有被再次激活,标记设备下线,如果会话重新连接并且收到设备消息,该设备重新标记在线状态UDP没有建立连接的过程,收到某个地址发来的UDP消息时建立这个地址的会话,收到设备登陆,标记这个会话中连接了该设备UDP断开连接策略,等待队列连续3个消息发送失败(重发次数用完未收到响应)这个时候判断断开连接,(后面逻辑和tcp一致)
处理等待消息,清空等待消息队列
手机消息
持久化消息队列/kafka消息队列
待响应消息队列一个终端会话一个队列,队列有长度,有超时时间
不可发送
标记sessionID的消息已经收到并从队列中移除
服务器发起一条消息包括ping消息
没有超时
重要
不重要
等待响应队列设计一个设备一个队列(不是一个会话一个队列,只针对设备不针对网关,如果和网关连接,这些设备队列由网关会话管理)一个用户一个队列(用户下设备越多队列越长)设一个队列中的消息占用200字节一个独立终端的队列大小默认是 r = 5一个用户默认队列长度是r = 5,如果用户下面有n个设备,用户队列长度为5+n*5
超过重发次数
0 条评论
下一页