netty
文章平均质量分 72
野生技术协会
杂乱个人资料记录
展开
-
基于netty的简易RPC框架
基于netty的简易RPC框架一、基础设计1、服务注册和发现 rpc远程框架我们要实现的客户端使用功能是,远程调用接口的提供者producer使用@server注解,将此service注解的服务类信息,服务地址(本机ip+netty设置的服务端口),注册到注册中心上,注册中心采用zookeeper。调用接口端consumer在调用类的服务字段上使用@inject,即可调用远端producer,这个是使用服务发现类zookeeperDiscovery实现的,即在zookpeer找到对应服务名的..原创 2021-03-31 22:12:19 · 229 阅读 · 1 评论 -
netty心跳机制和重连
netty心跳机制和重连一、理论和概述1、何为心跳顾名思义, 所谓心跳, 即在 TCP 长连接中, 客户端和服务器之间定期发送的一种特殊的数据包, 通知对方自己还在线, 以确保 TCP 连接的有效性。为什么引入心跳机制和其原理?因为网络的不可靠性, 有可能在 TCP 保持长连接的过程中, 由于某些突发情况, 例如网线被拔出, 突然掉电等, 会造成服务器和客户端的连接中断. 在这些突发情况下, 如果恰好服务器和客户端之间没有交互的话, 那么它们是不能在短时间内发现对方已经掉线的. 为了解.原创 2021-03-21 23:05:47 · 720 阅读 · 3 评论 -
netty的ByteBuf的演示Demo
Netty的ByteBuf的演示Demo1、概述* Netty内部数据结构是一个byte,其中有一个readIndex字段,和一个writeIndex字段,标记读的位置和写的位置* [ discardable | readable | writeable ]* [ readIndex writeIndex capacity]2、常用API* Byte...原创 2021-03-20 16:47:20 · 286 阅读 · 0 评论 -
netty-future和promise的演示以及速率控制的案例
netty-future和promise的演示以及速率控制的案例一、future和promise的演示1、FutureFuture 模式 是处理异步执行时的一个处理模式,它有二种编程模式。第一种:将来式- 让执行线程,可以拿到异步调用的一个标记对象,如果执行线程调用future.get(),那么就能够等待异步执行的结果。第二种:回调式- 通过给Future添加回调的方式,通过回调拿到异步执行的结果案例1:/** * 案例1:使用JDk的Future模式 -- 将来式 *.原创 2021-03-20 16:45:09 · 2654 阅读 · 0 评论 -
netty阻塞请求的实现
Netty阻塞请求的实现一、概述和测试及工具使用1、概述什么是阻塞请求,这个名称是我自己称呼的,比如说在netty中我们客户端自定义的处理器中发送消息,但是要获得服务端的结果,却是异步返回的,怎么才能将这个异步变成同步呢?我们使用的是CountDownLatch闭锁实现。2、CountDownLatch异步转同步演示// 记录响应数据 static String res = null; // 效果,获得响应数据后,才会打印res,即线程会在await位置阻塞 pub原创 2021-03-18 20:47:02 · 1455 阅读 · 2 评论 -
netty文件上传断点续传的演示
Netty文件上传断点续传的演示一、理论和协议规范和工具类等1、实现原理: netty文件上传采用自定义的协议方式实现,断点续传主要是依据RandomAccessFile类的随机读写能力,主要流程是客户端发起请求,将需要上传文件名称、路径、读取文件的数据、以及读取文件的起始位置等等信息,并且缓存在服务端中(以文件路径为key,自定义协议对象为value),服务端拿到客户端发送的上述数据,就会写文件,并且写完文件,也会记录写过数据位置等信息,再次发送信息给客户端下一次需要读取的数据。 ...原创 2021-03-17 23:22:23 · 1560 阅读 · 2 评论 -
netty整合到spring-boot中
一、概述:netty整合到spring-boot中,主要实现方式,是通过用变量记录启动后的channel,然后server的类的bean注入到spring中,通过spring管理其生命周期以及监控其状态等等。1、创建SpringNettyServer类@Component // 主要点: 将此类的实例添加到spring中public class SpringNettyServer { private Logger logger = LoggerFactory.getLogger(Spr原创 2021-03-16 22:21:31 · 340 阅读 · 0 评论 -
netty使用长度解码器实现半包黏包的处理
一、概述: 1、名词解释 半包:TCP协议,存在一个缓冲区,如果发送的一个包大于这个缓冲区的大小,就会出现半包现象,即一个包分成二次发送了。 黏包:也是因为缓存区的存在,如果短时间发送很多小尺寸的包,那么tcp协议实现的底层会把这些小包一起发送。 拆包:就是对半包和黏包的一个处理。 2、概述 首先半包黏包的出现,并不是网络框架的原因,而是由于TCP协议实现产生的一个问题,如何解决半包、黏包,在我们使用的netty框架中主要有下面几个方式。 1) 设定包的结尾分割符...原创 2021-03-16 21:46:10 · 470 阅读 · 1 评论