免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: mik

大家讨论一下 IM 的实现结构和方案 [复制链接]

论坛徽章:
0
发表于 2009-07-06 19:08 |显示全部楼层
原帖由 xinglp 于 2009-7-6 18:45 发表


如果一个用户在A区,他的经常通信的好友都在B区, 会不会把它迁移到B区呢?


一般不会这样设计, 比较难维护。 就跟你的手机是北京的号码, 注册到北京的某个基站上, 你经常跟上海某人打电话。  也不会把你换成上海的类似吧。

定位目标用户(by id or name) 在那个服务区内, 方法有很多, 要看你的系统有多大, 但通常都是比较容易找到对方的基站的。  呵呵。

在多说点, 希望对楼主有帮助

如果说到手机, 就涉及到语音或者视频了, 如果是这样的im, 其实协议是分两种的, signal and media,  两者用的server协议, 没任何关系, 完全独立,
信令方面, 有些类似传统电话的设计,
枚体方面就有很多方法解决了, 有用server  relay的, 有用tcp的, 有用udp的, 有直接nat打洞p2p的, 有的利用supernode, 就是有public ip的用户中转的。

最牛b的就是运营商自己部署cdn的, 不过这个要有大量的运营成本。 往往运营商都是多种方式组合使用。

这也就是我说的p2p的im很复杂的原因。

[ 本帖最后由 xhl 于 2009-7-12 00:37 编辑 ]

论坛徽章:
0
发表于 2009-07-06 19:47 |显示全部楼层
原帖由 xhl 于 2009-7-6 19:08 发表


一般不会这样设计, 比较难维护。 就跟你的手机是北京的号码, 注册到北京的某个基站上, 你经常跟上海某人打电话。  也不会把你换成上海的类似吧。

定位目标用户(by id or name) 在那个服务区内, 方 ...



qq的im server一般单机每秒能处理多少条message?

文本消息好像按规定都是要在服务器中转并且留记录的吧?图片呢?

[ 本帖最后由 wwwsq 于 2009-7-6 19:48 编辑 ]

论坛徽章:
0
发表于 2009-07-06 19:54 |显示全部楼层
原帖由 wwwsq 于 2009-7-6 19:47 发表



qq的im server一般单机每秒能处理多少条message?

文本消息好像按规定都是要在服务器中转并且留记录的吧?图片呢?



文本消息根本没必要搞什么p2p, 一般会在信令里做, 而且可以记录,

语音视频消息,文件传输,  即使可以支持p2p, 当也支持当政府要查某个人的时候, 把这个人的所有语音视频信息从定向到一个记录server上去的功能。 否则政府不会让他运营。

一般逻辑是, 能做到p2p的, 尽量p2p, 节省运营的成本, 因为煤体流的贷款跟cpu的压力都很大。

至于每秒能处理多少, 不清楚, 要看他的带宽跟机器配置还有就是程序写的怎么样了。

最instant的, 不是qq, msn这样的im, 因为一般这样的产品, 可以接受几秒甚至几是秒的时延,

最instant 的是网络游戏, 就是wow那种, 及时pk的, 基本两个client的时间应该同步在200 ms以内的误差, 才算好的游戏。

否则一个人砍了, 另外人看到的时候, 这个人已经死了, 呵呵。

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:53:172015亚冠之水原三星
日期:2015-06-02 16:34:202015年亚冠纪念徽章
日期:2015-10-19 18:13:37程序设计版块每日发帖之星
日期:2015-11-08 06:20:00
发表于 2009-07-06 20:00 |显示全部楼层
为什么instant这么有挑战性.  集群内部通知应该是很快的啊,

论坛徽章:
0
发表于 2009-07-06 20:03 |显示全部楼层
原帖由 xinglp 于 2009-7-6 20:00 发表
为什么instant这么有挑战性.  集群内部通知应该是很快的啊,


我上面白话的所有, 单独看, 都不难, 这里的很多人都可以做, 但如果做个中和的系统, 而且足够稳定,

可以支撑50w人以上同时在线的, 就不那样容易了。

我是从做产品的角度说制作难, 不是写程序难。

论坛徽章:
0
发表于 2009-07-06 20:04 |显示全部楼层
原帖由 xhl 于 2009-7-6 20:03 发表


我上面白话的所有, 单独看, 都不难, 这里的很多人都可以做, 但如果做个中和的系统, 而且足够稳定,

可以支撑50w人以上同时在线的, 就不那样容易了。

我是从做产品的角度说制作难, 不是写程序难。


Nod.

论坛徽章:
0
发表于 2009-07-06 20:07 |显示全部楼层
原帖由 xhl 于 2009-7-6 19:54 发表



文本消息根本没必要搞什么p2p, 一般会在信令里做, 而且可以记录,

语音视频消息,文件传输,  即使可以支持p2p, 当也支持当政府要查某个人的时候, 把这个人的所有语音视频信息从定向到一个记录serv ...



你是说语音视频通常是p2p的,只有某些特定用户的语音视频才会通过server中转并记录,我理解的对吗?

几千万qq用户同时在线,每秒钟的text message大概有多少条?其中多少是1对1(普通聊天)的,多少是1对多(qq群)的?

论坛徽章:
0
发表于 2009-07-06 20:08 |显示全部楼层
贡献给LZ一个最简单的好友关系图把,这个比qq的要简单的多。 用这个加上tcp relay, 很容易就做出来一个简单的文本im. 支持在线下线加删好朋友。
                                   (null/null)
                      A offer B                 B offer A
                          |                        |
                          v                        v
               (offered/offeredBy)        (offeredBy/offered)
       B reject A            B accept A    A accept B        A reject B
            |                      \         /                   |
            v                       v       v                    v
     (rejected/rejectedBy)          both/both           (rejectedBy/rejected)
         B offer A            A remove B  B remove A         A offer B
            |                    /            \                  |
            v                   /              \                 v
    (offeredBy/offered)        /                \      (offered/offeredBy)
                              v                  v
                    (ignored/ignoredBy)  (ignoredBy/ignored)
             A offer B  B remove A         A remove B  B offer A
                /             \                 /           \
               /               \               /             \
              v           (bothIgnored/bothIgnored)           v
        (both/both)      A offer B           B offer A   (both/both)
                             |                   |
                             v                   v
                     (ingoredBy/ignore)   (ingore/ignoredBy)              

论坛徽章:
0
发表于 2009-07-06 20:15 |显示全部楼层
原帖由 wwwsq 于 2009-7-6 20:07 发表



你是说语音视频通常是p2p的,只有某些特定用户的语音视频才会通过server中转并记录,我理解的对吗?

几千万qq用户同时在线,每秒钟的text message大概有多少条?其中多少是1对1(普通聊天)的,多少是 ...



qq的文本聊天全部是server中转的, 但不是一个server, 是几w台server可能。

qq的语音跟视频基本是不用server 中转的, 因为如果你不能p2p, 则qq认为你无法享受这个服务。 所以有些人的网络环境下, 就是不能语音视频。

qq的文件传输也是不用server中转的。 如果你不是被跟中的用户。

基本原则就是, 用udp实现p2p, qq启动后, 本顶绑了很多port, 有些是为了udp 打洞用的。 这个做好了, 可以保证95%以上的用户, 都可以p2p.

qq这些做的都很强。

论坛徽章:
0
发表于 2009-07-06 20:54 |显示全部楼层
原帖由 xhl 于 2009-7-6 20:15 发表



qq的文本聊天全部是server中转的, 但不是一个server, 是几w台server可能。

qq的语音跟视频基本是不用server 中转的, 因为如果你不能p2p, 则qq认为你无法享受这个服务。 所以有些人的网络环境下, 就 ...



听你说了这么多,本来都有点手痒想做个im server玩了,看了下wiki上好多开源的jabber server实现。。。。。然后就没兴趣了。。。。

那些开源的jabber server有没有什么重大的功能或者性能上的不足?如果有,我倒是有兴趣再做一个。最近闲得很。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP