长连接网关设计与实践的一些理解

前言

HTTP协议是一种无状态的、基于TCP的请求/响应模式的协议,请求只能由客户端发起、服务端进行响应。在大多数场景,这种请求/响应的Pull模式已经可以满足需求。但在某些情形,例如消息推送、通知等应用场景,需要实时将数据同步到客户端,这就要求服务端支持主动Push数据。

短连接与长连接,短轮询与长轮询

短连接:每次Http请求都会建立Tcp连接,管理容易
长连接:只需要建立一次Tcp连接,以后Http请求重复使用同一个Tcp连接
长、短连接是客户端与服务端建立和保持TCP连接的机制;而长、短轮询是指客户端请求服务端,服务端给予应答的方式。
短轮询:重复发送Http请求,查询目标事件是否完成,优点:编写简单,缺点:浪费带宽和服务器资源
长轮询:在服务端hold住Http请求(死循环或者sleep等等方式),等到目标时间发生(保持这个请求等待数据到来或者恰当的超时),返回Http响应。优点:在无消息的情况下不会频繁的请求,缺点:编写复杂

WebSocket和HTTP长连接区别

HTTP1.1通过使用Connection:keep-alive进行长连接,HTTP 1.1默认进行持久连接。在一次 TCP 连接中可以完成多个 HTTP 请求,但是对每个请求仍然要单独发 header,Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。
websocket的长连接,是一个真的全双工,第一次tcp链路建立之后,后续数据可以双方都进行发送,不需要发送请求头,并且这个连接会持续存在直到客户端或者服务器端的某一方主动关闭连接,与HTTP长连接不同,WebSocket可以更灵活的控制连接关闭的时机,而不是HTTP协议的Keep-Alive一到,服务端立马就关闭(这样很不人性化)。
通常建立一个WebSocket连接,客户端浏览器首先要向服务器发起一个HTTP请求,这个请求和通常的HTTP请求不同,包含了一些附加头信息,其中附加头信息“Upgrade: WebSocket”表明这是一个申请协议升级的HTTP请求。服务器端解析这些附加的头信息,然后生成应答信息返回给客户端,客户端和服务器端的WebSocket连接就建立起来了,双方可以通过这个连接通道自由地传递信息,并且这个连接会持续存在直到客户端或者服务器端的某一方主动关闭连接。

技术选型及架构

服务端推送技术历史悠久,经历了短轮询、长轮询的发展,一定程度上能够解决问题,但也存在着不足,例如时效性、资源浪费等。WebSocket规范基本结束了这一局面,成为目前服务端推送技术的主流方案。在众多的WebSocket实现中(八种 WebSocket 框架的性能比较),基于Netty实现WebSocket长连接网关应该也是目前比较主流的实践方式。

WebSocket不同于HTTP,是有状态的,因此无法直接以集群的方式实现负载均衡,连接建立之后会与服务端某实例节点保持会话。因此在进行下行推送的时候,往往需要找到uid对应的长连接,总体两种方案:
(1)通过注册中心例如zk来维护全局的会话映射关系,即外部存储,维护uid和长连接所在主机ip的关系,流量路由到对应ip主机上,获取连接进行推送

在这里插入图片描述

对于注册中心方式,映射关系直接存储比较清晰,尤其是大集群的场景更合适。缺点是实现复杂度会提升,强依赖注册中心,需要有运维保障。

(2)使用事件广播的形式,送消息时发布消息,所有长连接服务节点都会收到,uid长连接在自己内存队列中的进行消费,即消息推送

在这里插入图片描述

对于事件广播(广播可以基于mq,redis,zk等,也是各有利弊),优点是实现比较轻量,缺点就是当节点较多时,所有节点都被广播,资源是浪费的,并且集群规模大的情况,会出现性能瓶颈。

方案优点缺点
注册中心映射关系直接存储比较清晰,尤其是大集群的场景更合适实现复杂度会提升,强依赖注册中心,需要有运维保障
事件广播广播可以基于mq,redis,zk等,也是各有利弊,实现比较轻量当节点较多时,所有节点都被广播,资源是浪费的,并且集群规模大的情况,会出现性能瓶颈

一个简单的基于netty的IM系统实现可以参考之前的文章如何用Netty写一个IM聊天系统

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 背景介绍 IPsec是一种网络安全协议,用于保护IP数据包的机密性、完整性和身份验证。它提供了一种安全的通信方式,使得网络数据传输过程中可以得到保护,防止数据被非法截获和篡改。IPsec协议可用于VPN连接、远程访问、网关网关连接等场景下的网络通信。 在这个课程设计中,我们将重点关注IPsec路由实现的原理和实践操作,通过实验学习IPsec协议的相关知识,掌握IPsec路由的配置和管理技能。 2. 课程目标 通过本课程的学习,你将能够: - 理解IPsec协议的基本原理和安全机制 - 掌握IPsec路由的配置和管理技能 - 实现IPsec VPN连接和网关网关连接 - 学习IPsec路由的故障排除和维护方法 3. 课程内容 本课程的内容包括以下几个方面: 3.1 IPsec协议的原理和安全机制 - IPsec协议的基本原理和安全机制 - IPsec协议的安全性和可靠性评估 3.2 IPsec路由的配置和管理技能 - IPsec路由的基本概念和特点 - IPsec路由的配置和管理方法 - IPsec路由的性能优化技巧 3.3 IPsec VPN连接和网关网关连接 - IPsec VPN连接的配置和管理方法 - 网关网关连接的配置和管理方法 - IPsec VPN连接和网关网关连接的差异和应用场景 3.4 IPsec路由的故障排除和维护方法 - IPsec路由故障排除的基本原则和方法 - IPsec路由故障排除的实践操作 - IPsec路由的日常维护和管理方法 4. 实验环境 本课程的实验环境需要具备以下条件: - 一台或多台路由器 - 一台或多台计算机 - 一条或多条网络连接线 - 一份或多份IPsec路由器配置文件 5. 实验步骤 本课程的实验步骤包括以下几个方面: 5.1 IPsec协议的原理和安全机制 - 学习IPsec协议的基本原理和安全机制 - 了解IPsec协议的安全性和可靠性评估 5.2 IPsec路由的配置和管理技能 - 学习IPsec路由的基本概念和特点 - 配置和管理IPsec路由器 - 学习IPsec路由的性能优化技巧 5.3 IPsec VPN连接和网关网关连接 - 配置和管理IPsec VPN连接 - 配置和管理网关网关连接 - 比较IPsec VPN连接和网关网关连接的差异和应用场景 5.4 IPsec路由的故障排除和维护方法 - 掌握IPsec路由故障排除的基本原则和方法 - 实践IPsec路由故障排除的操作 - 学习IPsec路由的日常维护和管理方法 6. 实验总结 本课程的实验总结包括以下几个方面: - 总结IPsec协议的基本原理和安全机制 - 总结IPsec路由的配置和管理技能 - 总结IPsec VPN连接和网关网关连接的配置和管理方法 - 总结IPsec路由的故障排除和维护方法 7. 参考资料 - RFC 2401– RFC 2409, IP Security Architecture - RFC 4301, Security Architecture for the Internet Protocol - Cisco IOS IPsec Configuration Guide, Release 15M&T - Juniper Networks ScreenOS VPN Implementation Guide - IPsec VPN Design (Cisco Press) by Vijay Bollapragada, Mohamed Khalid, Scott Wainner, and Patrick Grossetete

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值