• 长连接和短连接


    一、概念

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

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

      TCP/IP是传输层协议,主要解决数据如何在网络中传输;而HTTP是应用层协议,主要解决如何包装数据

      Socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议。我们在传输数据时,可以只使用传输层(TCP/IP),但是那样的话,由于没有应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用应用层协议,应用层协议很多,有HTTP、FTP、TELNET等等,也可以自己定义应用层协议。WEB使用HTTP作传输层协议,以封装HTTP文本信息,然后使用TCP/IP做传输层协议将它发送到网络上。

    二、优缺点

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

      长连接的缺点:占用服务器的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的通告。一般会考虑一致性算法。

     【LVS-LVS(Linux Virtual Server)是Linux服务器集群系统

    from 


    作者:PEPE
    出处:http://pepe.cnblogs.com/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    mysql8.0.20安装
    MySQL EXPLAIN结果集分析
    初次安装aliSql
    升级vim到8.0
    REPL环境对语言的帮助
    Python环境搭建及pip的使用
    mysql数据库分库分表(Sharding)
    Git的使用
    Promise的初步认识
    对引用的文件起别名
  • 原文地址:https://www.cnblogs.com/PEPE/p/3570046.html
Copyright © 2020-2023  润新知