netty学习笔记

Netty 系列知识

BIO、AIO与NIO的区别

Netty系列| Netty创始人告诉你为什么选择NIO
本文狼王带你了解了NIO,了解了为什么Netty选择NIO,解析了NIO三大核心组件:Buffer(缓冲区),Channel(通道),Selector(多路复用器)

Netty的线程模型

https://netty.io/wiki/user-guide-for-4.x.html

websocket

基于netty实现websocket高并发服务

MINA、Netty、Twisted为什么放在一起学习?首先,不妨先分别看一下它们官方网站对其的介绍。

MINA:

Apache MINA is a network application framework which helps users develop high performance and high scalability network applications easily. It provides an abstract event-driven asynchronous API over various transports such as TCP/IP and UDP/IP via Java NIO.

Netty:

Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients.

Twisted:

Twisted is an event-driven networking engine written in Python and licensed under the open source MIT license.

Twisted 官从上面简短的介绍中,就可以发现它们的共同特点:event-driven 以及 asynchronous。它们都是事件驱动、异步的网络编程框架。由此可见,它们之间的共同点还是很明显的。所以我这里将这三个框架放在一起,实现相同的功能,不但可以用少量的精力学三样东西,而且还可以对它们之间进行各方面的对比。网的文案不专业啊,居然不写 asynchronous。

从上面简短的介绍中,就可以发现它们的共同特点:event-driven 以及 asynchronous。它们都是事件驱动、异步的网络编程框架。由此可见,它们之间的共同点还是很明显的。所以我这里将这三个框架放在一起,实现相同的功能,不但可以用少量的精力学三样东西,而且还可以对它们之间进行各方面的对比。

其中 MINA 和 Netty 是基于 Java 语言的,而 Twisted 是 Python 语言的。不过语言不是重点,重点的是理念。

使用传统的 BIO(Blocking IO/阻塞IO)进行网络编程时,进行网络 IO 读写时都会阻塞当前线程,如果实现一个 TCP 服务器,都需要对每个客户端连接开启一个线程,而很多线程可能都在傻傻的阻塞住等待读写数据,系统资源消耗大。

而 NIO(Non-Blocking IO/非阻塞IO)或 AIO(Asynchronous IO/异步IO)则是通过 IO 多路复用技术实现,不需要为每个连接创建一个线程,其底层实现是通过操作系统的一些特性如 select、poll、epoll、iocp 等。这三个网络框架都是基于此实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不对法

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值