请求头什么的也被运营商算在流量里面吗?
#7 楼 @hick 聊天是小数据高并发,封包拆包性能非常关键,HTTP 是第 7 层,TCP 是第 4 层,这个天壤之别,他们的层次差别,就像电脑和光纤的差别那么大。
当年奔 3 的机器,Windows 2000 Server 用 Port Complete 方式,单机可以 3000-4000 clients 并发。 要是用 HTTP,你可以试一下能不能达到 1/10。
还有,聊天是允许数据包丢失的,到达顺序错乱也可以,实效性比一致性更重要。如果你直接操作 UDP,很容易搞。如果你用 HTTP,丢了一个包,反复重发,它不收到,后续的包都不会被返回给应用层。
而且这不是用不用 HTTP 的问题,而是本来用 TCP 和 UDP 很方便的场景,为什么要用一个更麻烦,更慢,又不是为该场景设计的其他协议呢?
我说完了~
当然,如果你只是实现一个简单的送达平台,使用 tcp,http 都完全没问题。但考虑到效率,杀鸡用牛刀就不花算了。
#26 楼 @kgen 哎,啥攻击不攻击的... 还楞给扣帽子说我鄙视 TCP+UDP 实现,这下我罪过大了... 我要不要说你鄙视 http ? 嘿嘿... 咱真没法讨论了,只建议心态平和点,沟通理解才能对称。前面说毕业不毕业的,只是针对你拿 OSI 模型说性能那种学生气的话,
强调好几次只对 TCP/HTTP 简单运用性能差异有兴趣,没兴趣也不反对你其他观点。倒是可以解释下简单短连接运用就是几个字节的请求,输出几 k 不等的打包或者不打包文本,
不是说你做 IM 别人说的就是 IM . 我做的 qzone 的服务我还真心觉得是玩具,都不涉及多媒体什么的,最多每秒几千次的 tcp 短连接请求; 冒昧请教下十几年前就潜心研究好几年的不是玩具的 IM 叫啥?这么问会不会被判嘴毒刻薄被封?嘿嘿
俩大神都别闹了,我来分享个干货 (不是我写的), http://blog.csdn.net/russell_tao/article/details/18711023
HTTP 实现的话,如果每个消息都发一个请求,肯定是很慢的... 如果保持长连接,其实就和 TCP 没什么区别了... 用 SSE 这种既成协议,也可以少写很多代码...
考虑丢包和性能的话,还是 TCP 实现比较便利,简单改改就能利用上很多新的基于擦除码的类 TCP 协议了,要达到同样的消息抵达率,erasure code 比用 UDP 重复发同一个包要节省很多流量。而且现在也有 SCTP 协议,广播也不用自己鼓捣 UDP 了...