
Netty从零到必须学会
文章平均质量分 54
我要学Netty
保暖大裤衩LeoLee
芜湖~~~
展开
-
Netty——自定义处理器
概述根据消息的流向,处理器可以分为入站处理器和出站处理器,也存在既是出站处理器又是入站处理器的情况,但是不建议这么做。出站处理器 顶层为ChannelInboundHandler 入站处理器 顶层为ChannelOutboundHandler 在处理消息数据时的各种编解码器,本质上都是处理器:无论我们向网络中写入的数据是什么类型(int、char、String、二进制等),其都是以字节流的形式进行的。所以,数据由原本的形式转换为字节流的操作称为编码(encode),将数据由字节流转换为原创 2021-02-22 16:15:22 · 602 阅读 · 0 评论 -
Netty——自定义协议解决TCP粘包拆包问题
什么是TCP粘包拆包简单的来讲,就是多次TCP请求传递的msg,由于TCP的请求没有隔离,造成服务端接收到消息不知道哪些字节是属于同一个请求的。拆包:某一次TCP请求的msg被拆开读取粘包:某一次TCP请求的msg包含了其他请求的字节粘包拆包问题实例问题示范就不贴全部代码了客户端Handlerpackage com.leolee.netty.demo.unpackAdherepackage;import io.netty.buffer.ByteBuf;import io.原创 2020-11-22 16:47:02 · 604 阅读 · 2 评论 -
Netty——tackQueue任务队列、线程池异步处理业务
反例示范在处理复杂繁重的业务的时候,可能会造成Netty中请求的挤压,如下就是业务代码没有异步执行的典型例子服务端Handler:package com.leolee.netty.test.taskQueue;import io.netty.channel.ChannelHandlerContext;import io.netty.channel.SimpleChannelInboundHandler;import java.util.UUID;/** * @ClassName原创 2020-11-14 21:26:50 · 791 阅读 · 0 评论 -
Netty学习(6):Netty集成protobuf与消息的多协议传递
概述去Google的protocol buffers简单的绕了一圈终于回来了,大致的了解了protobuf的用法,现在回来和Netty集成在一起看看到底有多香!protobuf学习路线Netty集成protobufNetty的客户端和服务端传递数据的demo已经写了几个了,对Netty在使用上的套路已经有了很清楚的认识:注意各种场景下的Handler使用、重写ChannelInboundHandlerAdapter中各个管道状态的回调方法(channelRegistered、channelU原创 2020-09-02 22:15:55 · 756 阅读 · 0 评论 -
Netty学习(5):WebSocket协议
概述Netty的应用场景中,socket通讯占了大多数,而WebSocket作为于H5推出内容中的重要功能点,Netty也做了很好的支持。在学习WebSocket的时候,首先要明确几个问题,WebSocket是什么,为什么要用推出WebSocket,其应用场景是什么,主要解决什么问题。什么是WebSocketWebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket通信协议于2011年被IETF定为标准RFC 6455,并由RFC7936补充规范。WebSocketAP.原创 2020-08-30 15:50:21 · 541 阅读 · 0 评论 -
Netty学习(4):心跳heartbeat
概述什么是心跳不管是客户端和服务端建立的长连接还是集群(比如zookeeper集群、mongoDB集群等),其节点之间要形成TCP形式的节点间通讯,不管是通过什么方式,节点间的数据同步可能不是实时一致性的,而是最终一致性,通过定时的拉取或者说是同步请求来完成数据通讯或者同步,这其中是会有一定时间是数据不一致的,但是最终是会将数据拉平的。如何去保持节点间健康的感知呢,这就需要节点间定时的通过心跳包告知其他节点或者组件自己是“活着”的。这个心跳包的内容并不重要,主要是起到告知自我健康的作用,可能心跳通讯原创 2020-08-27 18:14:49 · 577 阅读 · 0 评论 -
Netty学习(3):多客户端与服务端的连接和通讯
概述经过了两个Netty的demo学习,目前已经对Netty有了初步的认识,从demo上手也是最快的,不要总是在学习过程的初期过于纠结细节,这将大大降低学习的进度,总要有一个循序渐进的过程,尽管Netty被很多人认为是比较难学的,坚持总有结果的,给自己打气。本章主要是学习了Netty服务端与多客户端怎么建立连接,怎么进行通讯,对于我而言,目前已经理解了Netty框架在开发过程中的主要流程,这个过程中最重要的就是对ChannelInboundHandlerAdapter的理解,其主要贯穿了请求过程中的原创 2020-08-26 21:57:00 · 1271 阅读 · 0 评论 -
Netty学习(2):客户端和服务端的连接通讯(socket)
概述在上一节学习中,我们了解到了Netty作为HTTP服务端是怎么建立的,请求的执行流程是怎么样的,对Netty作为HTTP服务端的能力有了一个初步的认识,这一帖主要来学习一下基于Netty框架的客户端与服务端的长连接通讯。示例socket服务端与之前作为HTTP服务端的建立基本一致,都遵循如下流程:建立接收和处理的线程组 使用ServerBootstrap绑定处理器并启动 建立连接并调用initChannel方法初始化各种处理器package com.leolee.netty.se原创 2020-08-24 21:17:17 · 1090 阅读 · 0 评论 -
Netty学习(1):Http服务器建立以及执行流程分析和重要组件介绍
概述Netty本身的是什么,它是什么特性等问题本文暂不做解释,日后学习过程中,切身体会了之后,再来讲一讲。Netty能干什么,主要如下:能作为一个RPC的通讯框架,基于socket方式实现服务间的远程调用 能作为开发长连接业务场景的基础(websocket),实现客户端和服务端的长连接通讯 可作为http的服务器,类似于tomcat等server容器,只不过它不是基础servlet的,它并没有实现相关servlet的能力,有自己的一套处理方式示例对于Netty初学者来说(像我这种人QA原创 2020-08-22 17:01:29 · 368 阅读 · 0 评论