Chinaunix
标题:
类似YY语音的动态创建房间问题讨论
[打印本页]
作者:
XOXOJ
时间:
2013-11-23 12:57
标题:
类似YY语音的动态创建房间问题讨论
本帖最后由 XOXOJ 于 2013-11-23 12:58 编辑
大家好,小弟刚刚初学linux,因为平时有玩游戏的习惯,会用到YY语音,在用的时候,心里也在默默的想着其内部的技术实现,介于技术能力有限,所以把心里没想明白的问题,发帖向大家求问,希望能有几个认真负责的大牛能抽出时间来为我解惑,谢谢了!
第1个问题是这样的,用户登录YY语音后,可以自行创建频道,创建完频道后,就可以立刻登录进该频道,所以这里就有个疑问了,我自己的理解是这样的,按理说向服务器发起一个创建的频道的请求,创建成功后,服务器应该来启动这个频道啊,否则用户该如何登录连接进这个频道呢?而且用户创建的频道数据是持久化的。换句话说,哪怕是服务器重启了,这个频道还是存在的(肯定是数据库里有保存这些频道信息)。希望大家能说说,这个创建频道的机制是怎样的,服务器如何来处理这些请求。
第2个问题,上面刚刚说到了服务器重启,如果说有1000个用户,创建了1000个频道,甚至有更多的频道的话,那是不是意味着,服务器重启后,需要依次挨个启动这1000个频道呢?还是怎样做啊。
希望大家能踊跃的说说自己的想法,我现在刚刚毕业,在一家小公司工作,所以很多时候自己有很多的疑问,都没办法跟同事去讨论,只能借助CU这个平台,希望能得到指点。谢谢!
作者:
crazyhadoop
时间:
2013-11-24 10:02
我觉得,频道应该是存在数据库中的。用户会有个自己的频道列表,创建频道就增加一个频道id,所有该频道的数据,会绑定这个id,频道没有启动一说。也不用重启。只要有人发数据给频道,频道转发给其他人就好了。
作者:
linux_c_py_php
时间:
2013-11-26 10:34
频道在DB里有条记录,记录一些基本信息。
作为一个后台系统,尤其是IM这种,通常会把相同群组的用户引导到同一个进程中维护,这样是最简单可靠的。
一般来说接入层会根据你的频道号计算(哈希,或者有一个全局映射存储)出将为你服务的逻辑服务器是哪一台,并为你在对应的逻辑服务器上建立会话(登录到频道)。当第一个用户加入频道,逻辑服务器会从DB里加载频道信息到内存,后续用户加入只是在内存里维护一些信息。
逻辑服务器崩溃也没关系,因为接入层获知逻辑服务器崩溃会通知加入过该逻辑服务器的连接说“这个频道掉线了“。
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2