netty
沐雨金鳞
大行不顾细谨
展开
-
Netty实现tcp服务
服务器端:package com.netty.io;import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.ChannelFuture;import io.netty.channel.ChannelInitializer;import io.netty.channel.ChannelOption;import io.netty.channel.EventLoopGroup;import io.netty.c...原创 2020-11-25 19:54:12 · 1161 阅读 · 0 评论 -
十、NIO之Select/Poll、Epoll区别
Linux系统将所有设备都当作文件来处理,而Linux用文件描述符fd来标识每个文件对象。select:(1)每次调用select,都需要把fd集合从用户态拷贝到内核态,这个开销在fd很多时会很大(2)同时每次调用select都需要在内核遍历传递进来的所有fd,这个开销在fd很多时也很大(3)select支持的文件描述符数量太小了,默认是1024poll的原理与select非常相似,差别如下: 描述fd集合的方式不同,poll使用 pollfd 结构而不是select结构fd_se原创 2020-08-06 21:14:33 · 908 阅读 · 0 评论 -
九、Netty快速入门实例-TCP服务
实例要求:使用IDEA 创建Netty项目 Netty 服务器在 6668 端口监听,客户端能发送消息给服务器 "hello, 服务器~" 服务器可以回复消息给客户端 "hello, 客户端~" 创建maven工程,导入maven依赖: <dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artif原创 2020-08-06 19:50:03 · 274 阅读 · 0 评论 -
八、Netty模型简介
工作原理示意图-简单版 Netty 主要基于主从 Reactors 多线程模型做了一定的改进,其中主从 Reactor 多线程模型有多个 Reactor:流程:BossGroup 线程维护Selector , 只关注Accecpt 当接收到Accept事件,获取到对应的SocketChannel, 封装成 NIOScoketChannel并注册到Worker线程(事件循环), 并进行维护 当Worker线程监听到selector 中通道发生自己感兴趣的事件后,就进行处理(handl.原创 2020-08-06 19:29:29 · 209 阅读 · 0 评论 -
七、Reactor模式小结
Reactor 模式小结:3 种模式用生活案例来理解:单 Reactor 单线程:前台接待员和服务员是同一个人,全程为顾客服 单 Reactor 多线程:1 个前台接待员,多个服务员,接待员只负责接待 主从 Reactor 多线程:多个前台接待员,多个服务生 Reactor 模式具有如下的优点: 响应快,不必为单个同步时间所阻塞,虽然 Reactor 本身依然是同步的 可以最大程度的避免复杂的多线程及同步问题,并且避免了多线程/进程的切换开销 扩展性好,可以方便的通过增加 Re原创 2020-08-06 16:55:11 · 177 阅读 · 0 评论 -
六、主从Reactor多线程模式介绍
主从Reactor多线程模式:(多Reactor)针对单 Reactor 多线程模型中,Reactor 在单线程中运行,高并发场景下容易成为性能瓶颈,可以让 Reactor 在多线程中运行。优点:父线程与子线程的数据交互简单职责明确,父线程只需要接收新连接,子线程完成后续的业务处理。 父线程与子线程的数据交互简单,Reactor 主线程只需要把新连接传给子线程,子线程无需返回数据。缺点:编程复杂度较高结合实例:这种模型在许多项目中广泛使用,包括 Nginx 主从 Reac.原创 2020-08-06 16:51:30 · 976 阅读 · 0 评论 -
五、单Reactor多线程模式介绍
单Reactor多线程模式:Reactor 对象通过select 监控客户端请求事件, 收到事件后,通过dispatch进行分发 如果建立连接请求, 则右Acceptor 通过 accept 处理连接请求, 然后创建一个Handler对象处理完成连接后的各种事件 如果不是连接请求,则由reactor分发调用连接对应的handler 来处理 handler 只负责响应事件,不做具体的业务处理, 通过read 读取数据后,会分发给后面的worker线程池的某个线程处理业务 worker原创 2020-08-06 16:40:36 · 491 阅读 · 0 评论 -
四、单Reactor单线程模式介绍
单 Reactor 单线程模式:优点:模型简单,没有多线程、进程通信、竞争的问题,全部都在一个线程中完成缺点:(一个CPU工作,其他空闲、Handler处理业务耗时时,线程忙,其他事件无法处理、线程中断,系统崩)性能问题,只有一个线程,无法完全发挥多核 CPU 的性能 Handler 在处理某个连接上的业务时,整个进程无法处理其他连接事件,很容易导致性能瓶颈 可靠性问题,线程意外终止,或者进入死循环,会导致整个系统通信模块不可用,不能接收和处理外部消息,造成节点故障使用场景:客户原创 2020-08-06 16:12:56 · 452 阅读 · 0 评论 -
三、Reactor模式(线程池 + IO多路复用)简介
Reactor 模式(反应器模式、分发者模式(Dispatcher) 、通知者模式(notifier) )假设你是一个老师,让30个学生解答一道题目,然后检查学生做的是否正确,你站在讲台上等,谁解答完谁举手。这时C、D举手,表示他们解答问题完毕,你下去依次检查C、D的答案,然后继续回到讲台上等。此时E、A又举手,然后去处理E和A......1、针对传统阻塞 I/O 服务模型的 2 个缺点的改进:(IO多路复用 + 线程池)1、每个连接创建一个线程:(线程池)基于线程池复用线程资源2、每个连原创 2020-08-06 16:10:13 · 2918 阅读 · 0 评论 -
二、IO线程模型+传统阻塞IO模型介绍
一、线程模型基本介绍不同的线程模型,对程序的性能有很大影响。目前存在的线程模型有:传统阻塞 I/O 服务模型 Reactor 模型根据 Reactor 的数量和处理资源池线程的数量不同,有 3 种典型的实现 :单 Reactor 单线程 单 Reactor 多线程 主从 Reactor 多线程 Netty 线程模式(Netty 主要基于主从 Reactor 多线程模型做了一定的改进,其中主从 Reactor 多线程模型有多个 Reactor) 二、传统阻塞 I/O 服..原创 2020-08-06 16:06:39 · 440 阅读 · 0 评论 -
一、Netty简介
1、什么是netty?Netty 是由 JBOSS 提供的一个 Java 开源框架,现为 Github上的独立项目。 Netty 是一个异步的、基于事件驱动的网络应用框架,用以快速开发高性能、高可靠性的网络 IO 程序。 Netty主要针对在TCP协议下,面向Clients端的高并发应用,或者Peer-to-Peer场景下的大量数据持续传输的应用。 Netty本质是一个NIO框架,适用于服务器通讯相关的多种应用场景 Netty 可以帮助你快速、简单的开发出一个网络应用,相当于简化和流程化了 N.原创 2020-08-06 15:21:25 · 1534 阅读 · 0 评论
分享