【Netty系列_1】Netty简介与I/O&线程模型

【前言】

原文:https://juejin.cn/post/7067039747180331022

netty作为Java领域中优秀的网络编程框架,其设计思想代码实现都非常值的我们去学习,同时,更好的了解netty概念设计细节后,我们使用起来也就会更踏实更称手,从而让netty这件神兵利器在我们手中发挥出最大的威力!!!


netty简介

What is netty?

  1. Netty 是一个异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端

netty的优势

  1. API使用简单,使用&开发 门槛低
  2. 预置多种编解码器,支持多种主流协议,亦可定制私有协议。
  3. 基于灵活且可扩展的事件模型
  4. 高度可定制的线程模型,真正的无连接数据报套接字支持(自 3.1 起)
  5. 解决了Java中NIO使用起来繁琐,空轮询等等问题
  6. 社区活跃,经历无数个商业&开源项目验证,稳定性好
  7. 完整的 SSL/TLSStartTLS 支持
  8. 高吞吐,低时延,更少的资源,减少不必要的内存拷贝
  9. … 总之一句话: 牛x。

netty架构

image.png

  1. 图中可以了解到netty 包含了事件模型,统一的API零拷贝,以及其丰富的协议支持

netty绕不开的知识点之 IO模型

  1. 然而,说起netty的IO模型,我们就不得不说到 UnixIO模型

Unix系统五种I/O模型

  1. 下面我们以UDPsocket 读为例来介绍一下五种I/O模型(但是在介绍I/O模型之前,我们需要了解下Unix系统函数recvfrom)
recvfrom系统函数介绍
  1. 说明: recvfrom函数用来从一个套接口(有的文献称为套接字)接收消息,也可以用来在一个面向连接(如TCP)或非连接(UDP)的套接口上接收数据(但是大部分时候都是在UDP协议中使用)

  2. recvfrom函数在Java中的应用 (可以看到Java中是通过调用c语言来调用的recvfrom函数),感兴趣可以看下系统函数accept在Java中都有哪几个地方使用到了。
    image.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值