Netty使用概述

一、网络I/O框架

谈到网络I/O框架,大家通常脑海里边第一个闪现出来的是JAVA BIO(Blocking I/O,阻塞I/O)、JAVA NIO(Non-blocking I/O,非阻塞I/O)和JAVA AIO(Asynchronized I/O,异步I/O)。但是基于原生JDK的I/O组件对网络I/O功能进行实现并用于生产环境略有复杂,以基于JAVA NIO为例,需要开发者自行处理网络连接、事件注册与监听、事件处理、线程池创建与调度等必备操作。因此对原生JDK I/O组件进行必要的封装,仅将事件处理部分暴露出来,交由业务代码使用,是十分有必要的。

Netty就是这样一种封装了底层网络通信、线程池创建、事件注册与监听的网络I/O框架。Netty的主页为:https://netty.io/

二、Netty之前的网络I/O处理方式

假设没有Netty,那么网络I/O处理方式主要有以下几步(远古时代的JAVA BIO的方式我们就不举例了,我们直接用JAVA NIO进行举例)。

对于Server端:

  1. Open ServerSocketChannel;
  2. 设置非阻塞;
  3. 绑定到指定的IP地址和端口;
  4. Open Selector;
  5. 将ServerSocketChannel注册到Selector中,由Selector对Channel上的事件进行监听;
  6. 在循环中执行Selector的select方法,获取Channel上的事件;
  7. 根据获取的事件类型,调用相关的业务处理代码,比如channel被accept时、可读时、可写时,此时还需要考虑使用线程池来分配多线程对事件进行响应,以提升处理性能。

对于Client端:

  1. Open SocketChannel;
  2. 设置非阻塞;
  3. 连接到Server端的IP地址和端口;
  4. Open Selector;
  5. 将SocketChannel注册到Selector中,由Selector对Channel上的事件进行监听;
  6. 在循环中执行Selector的select方法,获取Channel上的事件;
  7. 根据获取的事件类型,调用相关的业务处理代码,比如c
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值