android,心跳,服务器,来android大神,最好是懂服务器的,没找到合适的板块发,只好来这里了

酒笑生 2014-01-07 03:18:43
现在小弟要做一个用于android心跳的服务器,tcp,5分钟,目前只用mina框架写了个demo。问题如下
我们是个小公司,却有着大梦想(你懂的),所以希望服务器能维持尽量多的长连接,可我压根儿不知道该从哪里下口!
求有经验的前辈,有知识的同行,有见地的高知们给点思路,分不多都散了
...全文
308 点赞 收藏 28
写回复
28 条回复
bluefoxah 2014年07月09日
我们目前是20W长连接!
回复 点赞
屌丝中的战斗屌丝 2014年01月09日
这架势貌似是要做开放的推送服务,,
回复 点赞
Birds2018 2014年01月08日
引用 22 楼 shumozhisi 的回复:
[quote=引用 21 楼 birdsaction 的回复:] 长连接其实不需要知道客户端的IP,因为一直连着 服务器和客户端是一条链子困在一起的。 如果断开了,客户端需要主动练服务器,再次建立,然后长期保持不断开 就OK。 如果做推送 需要阻塞服务器的线程,这样服务器发现有数据可以立即发送给客户端,但需要阻塞服务器端的线程,这样的话 一般一台电脑开5000个线程阻塞 就差不多了(根据一般的硬件配置)。 http://blog.csdn.net/birdsaction/article/details/12612441
首先谢谢你的耐心回复,我头儿想要把客户端的地址存数据库,有一个服务器专门做心跳,保持长连接,要推送消息时去数据库取地址再发送,这样可行吗?我总觉得这样哪里不太对,是吗?[/quote] 客户端的地址是固定的那就可以,如果取到地址再发送 问题是客户端也需开启一个服务用于接收请求。
回复 点赞
酒笑生 2014年01月08日
引用 21 楼 birdsaction 的回复:
长连接其实不需要知道客户端的IP,因为一直连着 服务器和客户端是一条链子困在一起的。 如果断开了,客户端需要主动练服务器,再次建立,然后长期保持不断开 就OK。 如果做推送 需要阻塞服务器的线程,这样服务器发现有数据可以立即发送给客户端,但需要阻塞服务器端的线程,这样的话 一般一台电脑开5000个线程阻塞 就差不多了(根据一般的硬件配置)。 http://blog.csdn.net/birdsaction/article/details/12612441
首先谢谢你的耐心回复,我头儿想要把客户端的地址存数据库,有一个服务器专门做心跳,保持长连接,要推送消息时去数据库取地址再发送,这样可行吗?我总觉得这样哪里不太对,是吗?
回复 点赞
Birds2018 2014年01月08日
长连接其实不需要知道客户端的IP,因为一直连着 服务器和客户端是一条链子困在一起的。 如果断开了,客户端需要主动练服务器,再次建立,然后长期保持不断开 就OK。 如果做推送 需要阻塞服务器的线程,这样服务器发现有数据可以立即发送给客户端,但需要阻塞服务器端的线程,这样的话 一般一台电脑开5000个线程阻塞 就差不多了(根据一般的硬件配置)。 http://blog.csdn.net/birdsaction/article/details/12612441
回复 点赞
Birds2018 2014年01月08日
检测是否心跳结束 最简单的方法就是尝试发送一个字节的数据,如果异常就表示断开了。 有点轮转的意思。
回复 点赞
媒体盒子 2014年01月08日
引用 18 楼 shumozhisi 的回复:
引用 15 楼 luowenlong860502 的回复:
[quote=引用 14 楼 shumozhisi 的回复:] [quote=引用 13 楼 luowenlong860502 的回复:] [quote=引用 4 楼 shumozhisi 的回复:] [quote=引用 3 楼 luowenlong860502 的回复:] 想维持比较多的连接 最好用短连接,这是经验之谈
android的心跳,之前是用的udp,但是这没法做消息推送,只能客户端主动去轮寻,所以要用长链接,那别的方面您还有经验可以分享下吗?
我们是这样做的,在客户端(android)上面建立TCP的监听,然后server主动连客户端进行推送,客户端要连接服务端的话也是服务端有监听,客户端主动连,不用了立马断开,这样就能解决荷载重的问题[/quote]客户端连服务器时倒是好说,因为服务器地址固定的,但是您说的服务器要推送时,主动去连客户端,可是客户端地址不是固定的,怎么连?[/quote] 客户端连服务器时服务器记录客户端的IP地址[/quote]android在没有WIFI的情况下,地址很快就会变的[/quote] 首先,肯定是确保有网络的情况下客户端和服务器才能通信,所以肯定是需要你客户端在本地的IP变化后都需要主动通知服务器的
回复 点赞
酒笑生 2014年01月08日
引用 15 楼 luowenlong860502 的回复:
引用 14 楼 shumozhisi 的回复:
[quote=引用 13 楼 luowenlong860502 的回复:] [quote=引用 4 楼 shumozhisi 的回复:] [quote=引用 3 楼 luowenlong860502 的回复:] 想维持比较多的连接 最好用短连接,这是经验之谈
android的心跳,之前是用的udp,但是这没法做消息推送,只能客户端主动去轮寻,所以要用长链接,那别的方面您还有经验可以分享下吗?
我们是这样做的,在客户端(android)上面建立TCP的监听,然后server主动连客户端进行推送,客户端要连接服务端的话也是服务端有监听,客户端主动连,不用了立马断开,这样就能解决荷载重的问题[/quote]客户端连服务器时倒是好说,因为服务器地址固定的,但是您说的服务器要推送时,主动去连客户端,可是客户端地址不是固定的,怎么连?[/quote] 客户端连服务器时服务器记录客户端的IP地址[/quote]android在没有WIFI的情况下,地址很快就会变的
回复 点赞
酒笑生 2014年01月08日
引用 9 楼 sinom 的回复:
你们现在能有多少客户同时在线?一般的服务器只要服务端与客户端写得不太糟糕,同时在线1K没什么问题的
1k,其实我们现在一个用户都还没有,但是我头儿肯定不会满足1K这个数字的,据说极光推送能到达峰值300W,1K实在太小了
回复 点赞
酒笑生 2014年01月08日
引用 10 楼 birdsaction 的回复:
维持更多的连接 1. 要有较好的硬件系统,内存,CPU, 操作系统 64位 2. apache mina并没有限制多少个连接数,如果要保存所有的mina 客户端session 需要及时释放断开的session,减少资源消耗,提高性能。
请问下,您是怎么做到判断session是否失效了呢,是用mina自带的sessionClosed这个方法?顺便问下,我们有台Intel(R) Xeon(R) CPU E5-2407 0 @ 2.20GHz 4核 8G内存的服务器,您觉得最多能同时维持多少用户,一台,再问点,你有经验,我多问点,操作系统上有需要设置或者做的吗?会不会有连接数限制,而且我们的服务器是双网卡,这个可以利用吗?
回复 点赞
媒体盒子 2014年01月08日
引用 14 楼 shumozhisi 的回复:
引用 13 楼 luowenlong860502 的回复:
[quote=引用 4 楼 shumozhisi 的回复:] [quote=引用 3 楼 luowenlong860502 的回复:] 想维持比较多的连接 最好用短连接,这是经验之谈
android的心跳,之前是用的udp,但是这没法做消息推送,只能客户端主动去轮寻,所以要用长链接,那别的方面您还有经验可以分享下吗?
我们是这样做的,在客户端(android)上面建立TCP的监听,然后server主动连客户端进行推送,客户端要连接服务端的话也是服务端有监听,客户端主动连,不用了立马断开,这样就能解决荷载重的问题[/quote]客户端连服务器时倒是好说,因为服务器地址固定的,但是您说的服务器要推送时,主动去连客户端,可是客户端地址不是固定的,怎么连?[/quote] 客户端连服务器时服务器记录客户端的IP地址
回复 点赞
酒笑生 2014年01月08日
引用 13 楼 luowenlong860502 的回复:
引用 4 楼 shumozhisi 的回复:
[quote=引用 3 楼 luowenlong860502 的回复:] 想维持比较多的连接 最好用短连接,这是经验之谈
android的心跳,之前是用的udp,但是这没法做消息推送,只能客户端主动去轮寻,所以要用长链接,那别的方面您还有经验可以分享下吗?
我们是这样做的,在客户端(android)上面建立TCP的监听,然后server主动连客户端进行推送,客户端要连接服务端的话也是服务端有监听,客户端主动连,不用了立马断开,这样就能解决荷载重的问题[/quote]客户端连服务器时倒是好说,因为服务器地址固定的,但是您说的服务器要推送时,主动去连客户端,可是客户端地址不是固定的,怎么连?
回复 点赞
媒体盒子 2014年01月08日
引用 4 楼 shumozhisi 的回复:
引用 3 楼 luowenlong860502 的回复:
想维持比较多的连接 最好用短连接,这是经验之谈
android的心跳,之前是用的udp,但是这没法做消息推送,只能客户端主动去轮寻,所以要用长链接,那别的方面您还有经验可以分享下吗?
我们是这样做的,在客户端(android)上面建立TCP的监听,然后server主动连客户端进行推送,客户端要连接服务端的话也是服务端有监听,客户端主动连,不用了立马断开,这样就能解决荷载重的问题
回复 点赞
酒笑生 2014年01月08日
引用 24 楼 wula0010 的回复:
干嘛要长连接啊?推送,只是一种表现而已,你每5分钟轮寻一次,效果就和推送差不多,又不是即时通讯,qq需要长连接,一般的完全没必要...............
是做即时消息啊,我这里说的推送,是说服务器推送一个消息给客户端,这个消息就是即时的消息,所以还是有必要的,不死推送广告那种推送
回复 点赞
wula0010 2014年01月08日
你所说的极光推送的原理:http://blog.csdn.net/xieebajinzhi/article/details/9445281,最多也就每台服务期300万连接,你要是有1亿的用户,要30台服务器,还得有备机,数据库服务器,负载均衡服务器,...........
回复 点赞
wula0010 2014年01月08日
干嘛要长连接啊?推送,只是一种表现而已,你每5分钟轮寻一次,效果就和推送差不多,又不是即时通讯,qq需要长连接,一般的完全没必要...............
回复 点赞
aSysBang 2014年01月07日
必须完全重新写吗?在其他服务器上改不行吗? Openfire,ejabberd 这些并发数都很高的
回复 点赞
Birds2018 2014年01月07日
我之前做的apache mina长连接, 同时维持3000用户长连接 都没问题。
回复 点赞
Birds2018 2014年01月07日
维持更多的连接 1. 要有较好的硬件系统,内存,CPU, 操作系统 64位 2. apache mina并没有限制多少个连接数,如果要保存所有的mina 客户端session 需要及时释放断开的session,减少资源消耗,提高性能。
回复 点赞
LichKingSZ 2014年01月07日
你们现在能有多少客户同时在线?一般的服务器只要服务端与客户端写得不太糟糕,同时在线1K没什么问题的
回复 点赞
发动态
发帖子
Android
创建于2009-10-09

4.6w+

社区成员

9.0w+

社区内容

移动平台 Android
社区公告
暂无公告