Netty原理 & 手写简化版Netty

背景&目的

本文提出netty有这么4个核心概念:

  1. Reactor线程模型:一种高性能的多线程程序设计思路
  2. nettyChannel:增强版的通道概念
  3. ChannelPipeline 职责链:事件处理机制
  4. 内存管理:增强的 ByteBuf 缓冲区

这么 4 个概念结合在一起,让 netty 这么美妙:

  1. 支持Socket等多种传输方式;
  2. 提供了多种协议的编码实现;
  3. 有多美妙,参看官网:https://netty.io/

那么,试着手写一个简化版本的netty,探探这里面究竟是什么?

本文分为两个部分:

  • 手写简化版 Netty
  • Netty 原理

手写简化版Netty

netty 源码稍微有些复杂,考虑了许多可扩展、安全、性能等,netty 的核心就隐藏在这百花深处。那么,何不拨开这些,自己尝试尝试,触及 netty 的核心原理呢~

陆续完善中,详见 github:https://github.com/leishiguang/netty-simplified.git

Netty 原理

Reactor 线程模型

Reactor线程模型
大致的步骤是这样:

  1. 客户端的请求进来,首先到达 reactor 线程,由它专门负责轮询;
  2. reactor 线程不对请求进行处理,而是轮询事件,分发到对应的 worker 线程;
  3. worker 线程依据配置,继续分发,或者对请求进行处理;
简化为两个线程组

抽象线程对象

  • 每个线程有自己的选择器:来源于构造器,与线程对象一起完成初始化。
  • 有自己的任务队列:保存所需要处理的工作。
  • 通道注册的方法:提交注册任务到自己的任务队列,会把通道注册在自己的选择器上。
  • 有启动的方法与状态:线程对象初次创建的时候,没
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值