netty
netty
mazhongjia
这个作者很懒,什么都没留下…
展开
-
netty-实现同步socket示例
1、说明项目需要,需要实现一个socket同步请求的客户端,恰逢之前研究过netty,虽然netty的线程模型本身不适合同步、阻塞通信用,但是也懒得写OIO了,就用它直接实现了一下,有需要的同学可以使用,有什么问题还请留言指正。2、代码封装的被应用层调用的工具类package com.mzj.netty.protocol.decoder._03_LengthFieldBasedFrameDecoder.json;/** * @Auther: mazhongjia * @Date:原创 2021-04-01 17:48:18 · 880 阅读 · 0 评论 -
netty 之 异步处理双子星io.netty.util.concurrent.Future与io.netty.util.concurrent.Promise
一、JDK的java.util.concurrent.Future从这个类的注释中,我们可以了解到:Future 类就是代表了异步计算的结果,这个接口的主要方法就是检查计算是否已完成,等待计算,然后返回计算结果。当计算完成后,结果只能通过get方法返回;如果有必要会堵塞直到它计算完成。可以通过cancel方法取消。增加的方法来判断任务是否正常完成或者被取消。一旦计算已经完成,计算不能被取消。如果你想要使用Future 来取消,但是不提供一个可用的结果,你可以声明Futrue 的类型原创 2020-09-30 15:29:19 · 3684 阅读 · 0 评论 -
netty 之 耗时任务DefaultEventExecutorGroup 定时任务
一. 耗时任务static final EventExecutorGroup group = new DefaultEventExecutorGroup(16); // Tell the pipeline to run MyBusinessLogicHandler's event handler methods // in a different thread than an I/O thread so that the I/O thread is not blocked by // a ti转载 2020-09-30 08:48:18 · 2235 阅读 · 1 评论 -
netty 之 Pipeline的事件传播机制
一、说明ChannelPipeline的默认实现DefaultChannelPipeline中的双向链表中元素AbstractChannelHandlerContext中有inbound与outbound两个属性,用于标识Context中handler类型。看ChannelPipeline接口注释:1、由上图可以看出,inbound事件与outbound事件,在Pipeline中经过的Context(handler)流向是相反的:inbound事件(read,只经过inboundhand原创 2020-09-28 16:18:26 · 774 阅读 · 1 评论 -
netty 之 NioEventLoopGroup与Reactor线程模型
一、说明在我的《netty 之 高性能原因(理论)》一文中介绍了Reactor线程模型,其中常见的Reactor线程模型有三种,分别如下:Reactor单线程模型; Reactor多线程模型; 主从Reactor多线程模型;Netty是典型的Reactor模型结构,而应用Java NIO构建Reactor模式,Doug Lea(就是那位让人无限景仰的大爷)在“Scalable IO in Java”中给了很好的阐述(网址:http://gee.cs.oswego.edu/dl/cpjslide原创 2020-09-26 08:22:25 · 453 阅读 · 0 评论 -
netty 之 源码分析 之 服务端启动过程分析
XXX原创 2020-09-19 12:27:43 · 300 阅读 · 0 评论 -
netty 之 源码分析 之 客户端启动过程分析
netty官网官网:https://netty.io/github项目托管地址:https://github.com/netty/netty1、说明package com.mzj.netty.mynettysrc;import io.netty.bootstrap.Bootstrap;import io.netty.channel.*;import io.netty.channel.nio.NioEventLoopGroup;import io.netty.channel.soc原创 2020-09-09 17:01:53 · 737 阅读 · 0 评论 -
netty 之 高性能原因(理论)
一、说明网络通讯的高性能源自以下方面的设计细节1、I/O传输模型用什么样的通道将数据发送给对方,是BIO、NIO还是AIO,I/O传输模型在很大程度上决定了框架的性能。2、数据协议用什么样的通讯协议,是HTTP,还是内部私有协议。协议的选择不同,性能也就不同,一般来说内部私有协议比公有协议的性能更高。3、线程模型线程模型涉及如何读取数据包,读取之后的编解码在哪个线程中进行,编解码后的消息如何派发等方面。线程模型设计不同,对性能也会产生非常大的影响。二、Netty高性能原因原创 2020-09-05 15:48:07 · 1419 阅读 · 0 评论 -
五种网路通讯IO模型
一、说明1.阻塞 同步阻塞 请求响应2.非阻塞 同步非阻塞 过一会问一下,没数据前可以干别的3.多路复用 伪异步( 同步)阻塞 没有之前阻塞,有数据读取4.信号驱动 伪异步(同步)非阻塞,没有之前干别的,有数据读取5.异步 异步非阻塞二、概念区分1、同步和异步看请求的数据是需要用户线程主动去系统内核获取的还是由操作系统直接从内核空间内存拷贝到用户空间内存的,前面四中io模型都是主动获取,只有异步io模型是被动通知的2、阻塞和非阻塞看调用线程是都被挂起,如果不管有没有结果都立.原创 2020-08-23 09:14:25 · 371 阅读 · 0 评论 -
06.netty的心跳机制
一、场景集群环境下,如zookeeper(Leader与Follower)、mongodb(master与slave),中节点与从节点之间tcp通信 主节点与从节点同步采用日志方式 客户端与服务端长连接以上集群中节点直接数据的一致性是最终一致性,而不是实时一致性心跳heartbeat,常用于以上场景中,节点与节点之间、客户端与服务端判断是否对方存活的机制。二、必要性心跳在T...原创 2020-02-06 13:14:33 · 153 阅读 · 0 评论 -
05.netty实现简单的消息的广播
思路:1、使用netty提供的ChannelGroup来保存连接到服务端的客户端连接ChannelGroup的作用(好处)是:通过操作ChannelGroup,实现对加入到ChannelGroup中的所有的Channel进行统一操作2、在Server端的客户端与服务端建立好连接时的回调函数handlerAdded方法中,将新的连接加入到ChannelGroupchannelGrou...原创 2020-02-05 11:33:23 · 2156 阅读 · 0 评论 -
04.ServerBootstrap的childHandler()与handler()的区别
ServerBootstrap的childHandler()与handler()的区别ServerBootstrap的childHandler()与handler()添加的handlers是针对不同的EventLoopGroup起作用:通过handler添加的handlers是对bossGroup线程组起作用通过childHandler添加的handlers是对workerGroup线...原创 2020-02-04 14:55:03 · 4200 阅读 · 1 评论 -
03.Netty回调与Channel执行流程分析
向TestHttpServerHandler中添加如下回调方法:handlerAddedchannelRegisteredchannelActivechannelInactivechannelUnregistered通过chrome浏览器再次访问,发下如下结果其中发现并未执行:channelInactivechannelUnregistered当我们把浏...原创 2020-02-03 21:32:19 · 1132 阅读 · 0 评论 -
02.netty重要组件及职责
1、EventLoopGroup(事件循环线程组)Boss线程组职责:获取并接收客户端连接Worker线程组职责:处理客户端与服务端数据的收/发、消息的编解码,但是不要使用worker线程组处理业务逻辑待续。。。...原创 2020-02-02 11:44:25 · 88 阅读 · 0 评论 -
01.netty执行流程简述
netty执行流程简述TestServer.javapackage com.mzj.netty.ssy._01_simplehttp;import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.ChannelFuture;import io.netty.channel.EventLoopGroup;impo...原创 2020-02-02 11:41:46 · 255 阅读 · 0 评论