惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

人人都是产品经理
人人都是产品经理
有赞技术团队
有赞技术团队
L
LangChain Blog
C
Check Point Blog
博客园 - 【当耐特】
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
V2EX
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
GbyAI
GbyAI
美团技术团队
博客园 - 司徒正美
Google DeepMind News
Google DeepMind News
WordPress大学
WordPress大学
aimingoo的专栏
aimingoo的专栏
S
SegmentFault 最新的问题
A
About on SuperTechFans
Blog — PlanetScale
Blog — PlanetScale
Hugging Face - Blog
Hugging Face - Blog
博客园 - 叶小钗
腾讯CDC
B
Blog
G
Google Developers Blog
The Cloudflare Blog
P
Proofpoint News Feed

博客园 - liuchen

我回来了 《全景探秘游戏设计艺术》读后感之引子 这不科学 —— 读《死亡之旅》 windows 64位 luajava编译 Effective C++ 读书笔记(45-50):杂项讨论 Effective C++ 读书笔记(35-44):继承关系与面向对象设计 Effective C++ 读书笔记(29-34):类与函数之实现 Effective C++ 读书笔记(18-28):类与函数之设计和声明 Effective C++ 读书笔记(11-17):构造析构和赋值函数 - liuchen Effective C++ 读书笔记(5-10):内存管理 Effective C++ 读书笔记(0-4) - liuchen 读《msyql完全手册》之三:管理与开发 读《msyql完全手册》之二:数据库使用 读《msyql完全手册》之一:介绍和安装 js中的定时器 php中readdir关于时间路径排序的代码 linux 配置服务器 Windows下配置SVN (Subversion) 转载 该适当的总结了
长连接和短连接
liuchen · 2013-01-13 · via 博客园 - liuchen

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

概念

  长连接是建立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的通告。一般会考虑一致性算法。