netty
文章平均质量分 80
netty 使用案例和源码分析
吴法刚
从现在我下了一个决定把自己学习过的东西都写成文章发表出来,大家共同学习共同探讨,知识无边界。。欢迎交流技术
展开
-
netty基础_12.用 Netty 自己实现简单的RPC
远程过程调用,是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程两个或多个应用程序都分布在不同的服务器上,它们之间的调用都像是本地方法调用一样(如图)过程:调用者(Caller),调用远程API(Remote API调用远程API会通过一个RPC代理(RpcProxyRPC代理再去调用RpcInvoker(这个是PRC的调用者)RpcInvoker通过RPC连接器(RPC连接器用两台机器规定好的PRC协议()把数据进行编码。原创 2024-03-20 23:00:00 · 1000 阅读 · 0 评论 -
netty源码学习之-HashedWheelTimer
该部分源码是netty的时间轮,netty的时间轮是单轮,其他时间轮是多轮设计,今天先了解下netty的时间轮设计。原创 2023-04-22 16:30:00 · 640 阅读 · 0 评论 -
netty源码系列之-03_ChannelPipeline,channelhanddler,channelcontext
我读源码的思路就是先找其中一个一个的小组件看看如何设计和实现的,感觉了解的差不多了再进行串起来,今天先看看Pipeline,从使用的过程中我就一个印象双向链表,并且创建的时候 默认创建一个head和一个tail,里面存放的都是Channelcontext, ChannelConetext从名字上可以理解为上下文,里面主要包装Handler, 这些就是我读源码之前的一点点理解,接下来看看 我理解的是否有偏差,还有哪些没理解的,今天安排上…服务端accept一个新的Channel之后,需要监听这个Channel原创 2022-07-10 17:40:30 · 589 阅读 · 0 评论 -
netty源码系列之-02_EventLoopGroup和EventLoop
我们知道netty的启动是需要实力话两个EventLoopGroupEventLoopGroup 组EventLoopGroup 继承EventExecutorGroup , EventExecutorGroup 就是一个线程池,继承了线程包中的ScheduledExecutorService,我们都知道,改接口有定时执行的功能它本身继承了4个重要接口,以及它们各自的功能:它优化了JDK提供的关于中断的方法:标记过时(shutdown,shutdownNow),并且新加了几个方法增加了一个中断状态原创 2022-06-25 13:13:06 · 365 阅读 · 0 评论 -
netty源码系列之-01_EventLoop选择策略EventExecutorChooser
eventloopGroup中我们知道 里面包含**[线程数]**的EventLoop,但是每次真正执行的是选择其中一个EventLoop,这里说的选择策略 是完全靠的EventExecutorChooserEventExecutorChooserFactory从下面的代码可以看出:1.DefaultEventExecutorChooserFactory 是单列模式2.根据传入的线程数是否为2的次幂进行创建不同的EventExecutorChooser判断是否2的次幂轮询算法得到一个0计数器.原创 2022-06-25 07:15:39 · 263 阅读 · 2 评论 -
netty基础_11.Netty 应用实例-群聊系统
服务端:代码如下:原创 2022-07-10 18:47:49 · 166 阅读 · 0 评论 -
netty基础_10.Netty TCP 粘包和拆包及解决方案
假设客户端分别发送了两个数据包 和 给服务端,由于服务端一次读取到字节数是不确定的,故可能存在以下四种情况:在编写 程序时,如果没有做处理,就会发生粘包和拆包的问题看一个具体的实例:MyServerHandlerMyClientMyClientHandler关键代码: 这个地方是一个依赖tcp长链接,进行循环效果可以看到第一次运行时,服务器一次性将10个数据都接收了,第二次运行时分六次接收的,这就很形象的看出了TCP的粘包现象。服务器端接受到的消息都不一样,由于tcp是长链接导致原创 2022-07-10 18:46:06 · 288 阅读 · 0 评论 -
netty基础_09.Netty整合log4j
配置 ,在 演示整合原创 2022-07-10 18:44:44 · 288 阅读 · 0 评论 -
netty基础_08.Netty 编解码器和 Handler 调用机制
2. 由于不可能知道远程节点是否会一次性发送一个完整的信息, 有可能出现粘包拆包的问题,这个类会对入站数据进行缓冲,直到它准备好被处理.【后面有说TCP的粘包和拆包问题】3. 一个关于 实例分析解码原理示意图如下:实例要求:MyServerInitializerMyServerHandlerMyClientMyClientInitializerMyClientHandlerMyByteToLongDecoderMyLongToByteEncoder效果上面是接受客户端信原创 2022-07-10 18:43:08 · 212 阅读 · 0 评论 -
netty基础_07.netty 编码和编码应用之protobuf
编写程序,使用 完成如下功能Student.proto编译protoc.exe --java_out=.Student.proto将生成的 StudentPOJO 放入到项目使用这个方式比较不友好,我们使用maven插件的方式生成的StudentPOJO代码太长就不贴在这里了NettyServerHandlerNettyClientNettyClientHandler功能实现了,但是我们发现就适合demo案例,不适合开发使用,固定的类型一个studen如果传递多个不同的类型原创 2022-07-10 18:15:06 · 418 阅读 · 0 评论 -
netty基础_06.Netty 通过 WebSocket 编程实现服务器和客户端长连接
实例要求:MyTextWebSocketFrameHandlerhello.html可以看到并不是发一次数据,连接就关闭了,而是可以继续发送。原创 2022-07-10 18:12:15 · 321 阅读 · 0 评论 -
netty基础_05.Netty 心跳检测机制案例
实例要求:IdleStateHandler 主要是用的IdleStateHandler实现心跳是在TCP长连接中,客户端和服务端定时向对方发送数据包通知对方自己还在线,保证连接的有效性的一种机制在服务器和客户端之间一定时间内没有数据交互时, 即处于 idle 状态时, 客户端或服务器会发送一个特殊的数据包给对方, 当接收方收到这个数据报文后, 也立即发送一个特殊的数据报文, 回应发送方, 此即一个 PING-PONG 交互. 自然地, 当某一端收到心跳消息后, 就知道了对方仍然在线, 这就确保 TCP原创 2022-07-02 16:05:53 · 361 阅读 · 0 评论 -
netty基础_04.Netty 核心组件
经过前面的tcp和http小案例我们梳理一下相关组件 中所有的 操作都是异步的,不能立刻得知消息是否被正确处理。但是可以过一会等它执行完成或者直接注册一个监听,具体的实现就是通过 和 ,他们可以注册一个监听,当操作执行成功或失败时监听会自动触发注册的监听事件常见的方法有 是一个重点:从head看一下debug案例 1案例 2...原创 2022-07-02 15:49:30 · 151 阅读 · 0 评论 -
netty基础_03.Netty 快速入门实例 - http 服务
netty http 实例原创 2022-07-02 15:48:42 · 90 阅读 · 0 评论 -
netty基础_02.Netty 快速入门实例 - TCP 服务
实例要求:使用 创建 项目NettyServerHandlerNettyClientNettyClientHandler任务队列中的 Task 有 3 种典型使用场景用户程序自定义的普通任务【举例说明】用户自定义定时任务非当前 线程调用 的各种方法例如在推送系统的业务线程里面,根据用户的标识,找到对应的 引用,然后调用 类方法向该用户推送消息,就会进入到这种场景。最终的 会提交到任务队列中后被异步消费前两种的代码举例:方案再说明 抽象出两组线程池, 专门负责接原创 2022-07-02 15:47:43 · 429 阅读 · 0 评论 -
netty基础_01.netty入门基础理论知识
title: Netty入门-第二话tags:Nettycategories:Netty入门keywords: Nettydescription: 对Netty的架构进行了解析,主要是Reactor设计模式的多种解决方案。同时讲解了Netty的核心模块组件。cover: ‘https://npm.elemecdn.com/lql_static@latest/logo/netty_logo.jpg’abbrlink: f846f3fdate: 2021-04-15 14:21:58.原创 2022-07-02 15:46:38 · 199 阅读 · 0 评论 -
netty入门前置知识-NIO
title: Netty入门-第一话tags:Nettycategories:Netty入门keywords: Nettydescription: 第一话对BIO和NIO进行了讲解,为后续做准备。cover: ‘https://npm.elemecdn.com/lql_static@latest/logo/netty_logo.jpg’abbrlink: 3f9283e7date: 2021-04-08 14:21:58因为学netty的过程中,发现计算机网络和操作系统蛮重.原创 2022-06-25 14:57:30 · 527 阅读 · 0 评论