详解netty长连接网关请求处理模型

本文深入探讨了基于Netty设计的长连接网关请求处理模型,以开源项目Sona-Gateway为例,解释了Netty的主从Reactor模型、Sona-Gateway的处理模型,包括NettyServerHandler、MercuryServerHandler和DispatchChannelHandler。通过自定义线程池OrderedChannelExecutor确保通道内请求顺序执行,同时保证高并发性能。文章还提及了线程池和队列设计的优化思考,以及开源项目的链接。
摘要由CSDN通过智能技术生成

想要支持海量的客户端请求,首先要有一套高效的请求处理模型。本文以开源项目SONA为例,详解如何基于netty设计请求处理模型,帮助读者动手实践。本文最后附上开源项目地址。


背景

Sona 平台是一个搭建语音房产品的全端解决方案,包含了房间管理、实时音视频、房间IM、长连接网关等能力。其中最基础核心的就是长连接网关,作为网关,首先要支持处理海量的客户端请求,要做到这一点,需要设计一套稳定高效的请求处理模型。


一、Netty 处理模型

Netty 使用 主从Reactor模型

bossGroup 负责处理 accept 事件 , workerGroup 负责处理 read 、write 事件。

其中 ChannelPipeline 是一个双向链表,netty 里面定义了十几种事件,触发之后会顺序调用所有 ChannelHandler 的指定方法,ChannelHandler的调用都是由 workerGroup中的同一个 eventloop 线程执行,不存在线程之间的切换。 

这种无锁化的设计,避免了上下文切换,在海量请求的情况下能提供很高的性能。但是也存在风险,如果执行某个 ChannelHandler 出现了阻塞,会拖累这个 eventloop 线程所负责的其他请求。

在实际场景中,ChannelHandler里面一般都会

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值