长连接和短连接

做了这么久的网络游戏, 总结下长连接和短连接

概念

  长连接是建立socket之后,一直不关闭该socket, 一般是tcp协议,我们知道tcp是双工的, 能够保证cs两端可以互发数据。

  短连接建立socket之后,做一次很短的交互(只发不收,或者发了就收)之后,就关闭该socket,一般都是基于http(在tcp之上)

优缺点

  长连接的优点:节省建立连接的时间;服务器能够感知客户端,可以向客户端主动推送消息

  长连接的缺点:占用服务器的fd资源;使逻辑变复杂,需要关注断线等各种异常处理;负载均衡比较复杂

  短连接的优点:简单,容易进行负载均衡,节省服务器的fd

  短连接的缺点:每次都要建立连接、关闭连接,费时

session的管理

  长连接只需要在建立连接的第一次验证之后,该socket就等同于session,服务器对socket的检索就可以确定客户端。

  短连接登陆认证之后,由于无状态,必须通过cookie等手段,每次告诉服务器我是XXX

负载均衡的处理

  短连接比较简单, 一般搭建LVS即可。LVS能够感知后端的服务器机组,将每个客户端的请求转发给随机的服务器。LVS可以采用七层,也可以采用四层。

  长连接比较麻烦,四层LVS也可以搞定, 但是缺少更大的网络架构的扩展性。一般来讲网络游戏里面都是用一组connector来当前前端的连接器,在逻辑层封装用户id然后转到后端的server来处理,connector和server之间是NN连接,能够感知状态,或者两者中间搭建个serverManager来进行server管理。

宕机的处理

  短连接的服务器宕机没有任何影响,直接拿standby的机器顶上去即可。

  长连接如果服务器宕机了,必须要在逻辑层做好通知客户端网路的方案,如果connector宕机,则必须通知客户端,让客户端重新选择其他的connector建立连接,如果是server宕机了,那么connector重新选择其他的server,但是数据必须重新加载一下, 用户会有退档的现象。

扩容的处理

  短连接的扩容直接加机器即可,通知LVS即可。

  长连接的扩容必须要注意和前端LVS、connector或者serverManager的通告。一般会考虑一致性算法。

 

posted on 2013-01-13 23:04  liuchen 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/liuchen/archive/2013/01/13/2858998.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值