首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 互联网 >

腾挪互联网长连接方案实例

2012-09-28 
移动互联网长连接方案实例1.笔者本人现在在一家创业公司担当整个平台架构的角色,而这家公司是做一移动互联

移动互联网长连接方案实例

1.笔者本人现在在一家创业公司担当整个平台架构的角色,而这家公司是做一移动互联网相关的一些应用产品,由其现在正在和中国最大的互联网公司之一进行合作,负责该互联网公司的手机终端的长连接推送服务,所以有一些总结特在此和大家分享一下。


2.下面这篇文章是笔者在几个月前做的一篇长连接的总结,所以可能写的不是非常严谨,特给javaer们进行一些参考即可,有如下几个数据和大家一起分享下:

? ? 1) 单JVM实现了50W以上长连接,每秒消息处理“Hello Word”和心跳包6W次

? ? 2)该长连接,不仅实现了手机终端的摸拟,而且该框架也是一个成熟的RPC框架,已经在笔者所在的公司使用。比阿里巴巴开源版本出来的"dubbo"性能要高,而且更节省带宽,大家可以测试比较一下。

? ? 3)因为netty支持的长连接,每条连接占有用内存是5K,笔者经过包装之后每条连接占用5.3K,每条长连接系统要占用8K;所以大家可以计算一下每条长连接一共要消耗的系统内存量。

? ??4)通过“3)”我们可以计算,50W长连接需要多少内存量(JVM):500000*5.3K=2650000K=2.53G,50W长连接需要多少内存量(OS):500000*8K=3.8G

? ? ? ? ? 也就是说,50W长连接的话,大约需要总占用系统10G的内存空间(当然这是保守值,也希望大家多测试测试给出更多的一些数据)



3.好了,说了这么多,看看笔者的一些测试数据吧(笔者只是把几个月前的测试邮件内容发出,因为某些原因笔者不能发出现在公司正在使用的完全代码实现)

? ? 1)如果要支持这么多的长连接,一定要修改一下系统的一些内核参数,如下:


?

3.?资源使用情况:

腾挪互联网长连接方案实例


?

?

关注了比较长时间了,谢谢分享 2 楼 dragonsoar 2012-07-11   没有关系了,呵呵。这个项目其实,有更新的grizzly版本,内存消耗更少;呵呵~

正在整理中,在这个月会开源出来,:) 3 楼 dragonsoar 2012-07-11   写东西没有 人回复很是让人郁闷的,哈哈~

笔者正在考虑做一个跨平台的一个序列化协议;现在已经有解决方案,到时候会一并放入其实,为码农们提供一点点的微溥之力。:) 4 楼 yunnysunny 2012-07-26   到底是哪个公司啊,说的这么神秘。 5 楼 yunnysunny 2012-07-26   我想问的问题是,这个框架是不是只支持java之间的通信。 6 楼 dragonsoar 2012-07-27   不能透露公司的名字,因为我之前说过,结果我的博客全被屏蔽了。

不是java和java之间的,序列化可以自定义的。只要有客户端的标准和服务端的标准一样就行了。我这个里面有demo,有更新的长连接方案,更省内存,不过现在不方便发出来~ 7 楼 yunnysunny 2012-07-29   iteye屏蔽你的博客,这是什么行为?
我是问的你的通信框架,看样子是基于netty的,类似于php能支持吗?
你的序列化协议已经实现了吗?如果已经实现了,有没有压力测试数据。 8 楼 dragonsoar 2012-07-30   序列化是需要自己自定义的,比如说你定义一个byte[]长度,前四位是代表长度,再四位代表版本号,再四位代表语言类型,最后的内容是php和java都可以解码的通用方式不就OK了吗? 9 楼 lingyulin 2012-08-16   序列化可以考虑改成AMF,这样可以同时支持flash、iOs、java客户端 10 楼 dragonsoar 2012-08-16   lingyulin 写道序列化可以考虑改成AMF,这样可以同时支持flash、iOs、java客户端
好的,多谢,我回去试试,呵呵,这个文档也要整理放出来了 11 楼 yunnysunny 2012-08-16   dragonsoar 写道序列化是需要自己自定义的,比如说你定义一个byte[]长度,前四位是代表长度,再四位代表版本号,再四位代表语言类型,最后的内容是php和java都可以解码的通用方式不就OK了吗?
其实我想问,你这个是用的http协议,而不是用的更底层的socket协议。 12 楼 yunnysunny 2012-08-16   dragonsoar 写道lingyulin 写道序列化可以考虑改成AMF,这样可以同时支持flash、iOs、java客户端
好的,多谢,我回去试试,呵呵,这个文档也要整理放出来了
不是说阿里的fastjson很快吗,json这个东西支持的范围是最广的了。 13 楼 dragonsoar 2012-08-16   yunnysunny 写道dragonsoar 写道lingyulin 写道序列化可以考虑改成AMF,这样可以同时支持flash、iOs、java客户端
好的,多谢,我回去试试,呵呵,这个文档也要整理放出来了
不是说阿里的fastjson很快吗,json这个东西支持的范围是最广的了。

兄弟,你问的问题不回答了,多了解了解吧,确实是再讨论这些我感觉意义不大了
包括netty怎么传输的 14 楼 lingyulin 2012-08-24   你好,请问你用的Kryo是2.16版本吗?为什么KryoKryoSerializer里面有很多类编译找不到的

com.esotericsoftware.kryo.Context
com.esotericsoftware.kryo.Kryo.RegisteredClass
com.esotericsoftware.kryo.serialize.BigDecimalSerializer
com.esotericsoftware.kryo.serialize.BigIntegerSerializer
import com.esotericsoftware.kryo.serialize.DateSerializer 15 楼 dragonsoar 2012-08-25   lingyulin 写道你好,请问你用的Kryo是2.16版本吗?为什么KryoKryoSerializer里面有很多类编译找不到的

com.esotericsoftware.kryo.Context
com.esotericsoftware.kryo.Kryo.RegisteredClass
com.esotericsoftware.kryo.serialize.BigDecimalSerializer
com.esotericsoftware.kryo.serialize.BigIntegerSerializer
import com.esotericsoftware.kryo.serialize.DateSerializer

那不能吧,我们用的是1.04,现在是05了。经过测试,2版本性能不够高,因为Object缓冲对象无法缓存 16 楼 dragonsoar 2012-09-11   本人本来不想多说啥,但是本人从某一家互联网公司出来后,发表这篇论文实际是为开源社区想做一些事,但是被前公司告知说以前公司某人不高兴。。。

这是为何?
1. 我的代码是他写的?我操,这可能吗?
2. 我的代码是他研究的方案?我操,这可能吗?
3. 以为我走了接了我的位置,我的成果就都成某人的了?我操,这可能吗?

做技术,不是靠说别人不行来证明自己行,这个世界是小人得势的世界,但是知道的人都心知肚明,我也承认我不是啥大度的人,我是看那些成天只吹牛逼的人得到领导的欢心上去。本来想删除此文,毕竟一家小公司也没有啥技术实力,我弄的这些东西也是给某家公司有一些积累。但是,说别人不开心的理由让我关闭此博客,我想来想去不太好。

1. 我删了证明我是真的拿原公司的产品或是方案了,我不怕上法庭,因为代码一比便知,这些资料和成果是上一家公司没有的
2. 我删了证明接我班的人的成果被某人占有,所以想来想去还是不删了 17 楼 yunnysunny 2012-09-11   dragonsoar 写道本人本来不想多说啥,但是本人从某一家互联网公司出来后,发表这篇论文实际是为开源社区想做一些事,但是被前公司告知说以前公司某人不高兴。。。

这是为何?
1. 我的代码是他写的?我操,这可能吗?
2. 我的代码是他研究的方案?我操,这可能吗?
3. 以为我走了接了我的位置,我的成果就都成某人的了?我操,这可能吗?

做技术,不是靠说别人不行来证明自己行,这个世界是小人得势的世界,但是知道的人都心知肚明,我也承认我不是啥大度的人,我是看那些成天只吹牛逼的人得到领导的欢心上去。本来想删除此文,毕竟一家小公司也没有啥技术实力,我弄的这些东西也是给某家公司有一些积累。但是,说别人不开心的理由让我关闭此博客,我想来想去不太好。

1. 我删了证明我是真的拿原公司的产品或是方案了,我不怕上法庭,因为代码一比便知,这些资料和成果是上一家公司没有的
2. 我删了证明接我班的人的成果被某人占有,所以想来想去还是不删了
我已经下载了,你现在删除了没啥用。你没有用代码赚钱,他们告你没有用。再说版权怎么能说是他们的呢,如果他们告你,你就反告他们,拿开源代码赚钱。

热点排行