Fork me on GitHub

随笔分类 -  响应式系统

摘要:简介 我们在介绍channel的时候提到过,几乎channel中所有的实现都是通过channelPipeline进行的,作为一个pipline,它到底是如何工作的呢? 一起来看看吧。 ChannelPipeline ChannelPipeline是一个interface,它继承了三个接口,分别是Ch 阅读全文
posted @ 2022-02-28 18:36 flydean 阅读(752) 评论(1) 推荐(1) 编辑
摘要:简介 我们知道channel是netty中用于沟通ByteBuf和Event的桥梁,在netty服务的创建过程中,不管是客户端的Bootstrap还是服务器端的ServerBootstrap,都需要调用channel方法来指定对应的channel类型。 那么netty中channel到底有哪些类型呢 阅读全文
posted @ 2022-02-22 10:57 flydean 阅读(585) 评论(1) 推荐(0) 编辑
摘要:简介 虽然netty很强大,但是使用netty来构建程序却是很简单,只需要掌握特定的netty套路就可以写出强大的netty程序。每个netty程序都需要一个Bootstrap,什么是Bootstrap呢?Bootstrap翻译成中文来说就是鞋拔子,在计算机世界中,Bootstrap指的是引导程序, 阅读全文
posted @ 2022-02-21 21:30 flydean 阅读(1000) 评论(1) 推荐(0) 编辑
摘要:简介 在我的心中,JDK有两个经典版本,第一个就是现在大部分公司都在使用的JDK8,这个版本引入了Stream、lambda表达式和泛型,让JAVA程序的编写变得更加流畅,减少了大量的冗余代码。 另外一个版本要早点,还是JAVA 1.X的时代,我们称之为JDK1.5,这个版本引入了java.util 阅读全文
posted @ 2022-02-18 19:12 flydean 阅读(258) 评论(1) 推荐(0) 编辑
摘要:简介 channel是netty中数据传输和数据处理的渠道,也是netty程序中不可或缺的一环。在netty中channel是一个接口,针对不同的数据类型或者协议channel会有具体的不同实现。 虽然channel很重要,但是在代码中确实很神秘,基本上我们很少能够看到直接使用channel的情况, 阅读全文
posted @ 2022-02-17 21:31 flydean 阅读(2904) 评论(1) 推荐(0) 编辑
摘要:简介 netty作为一个优秀的的NIO框架,被广泛应用于各种服务器和框架中。同样是NIO,netty所依赖的JDK在1.4版本中早就提供nio的包,既然JDK已经有了nio的包,为什么netty还要再写一个呢? 不是因为JDK不优秀,而是因为netty的要求有点高。 ByteBuf和ByteBuff 阅读全文
posted @ 2022-02-16 18:40 flydean 阅读(645) 评论(1) 推荐(0) 编辑
摘要:简介 经典的TCP三次握手大家应该很熟悉了,三次握手按道理说应该是最优的方案了,当然这是对于通用的情况来说的。那么在某些特殊的情况下是不是可以提升TCP建立连接的速度呢? 答案是肯定的,这就是今天我们要讲的TCP fast open和netty。 TCP fast open 什么是TCP fast 阅读全文
posted @ 2022-02-15 18:13 flydean 阅读(837) 评论(1) 推荐(1) 编辑
摘要:简介 为什么世界上有这么多JAVA的程序员呢?其中一个很重要的原因就是JAVA相对于C而言,不需要考虑对象的释放,一切都是由垃圾回收器来完成的。在崇尚简单的现代编程世界中,会C的高手越来越少,会JAVA的程序员越来越多。 JVM的垃圾回收器中一个很重要的概念就是Reference count,也就是 阅读全文
posted @ 2022-02-14 17:25 flydean 阅读(428) 评论(0) 推荐(0) 编辑
摘要:简介 在我们之前提到的所有netty知识中,netty好像都被分为客户端和服务器端两部分。服务器端监听连接,并对连接中的消息进行处理。而客户端则向服务器端建立请求连接,从而可以发送消息。 但是这一切都要在UDT协议中被终结,因为UDT提供了Rendezvous,一种平等的连接类型,节点之间是对等关系 阅读全文
posted @ 2022-02-11 10:12 flydean 阅读(224) 评论(1) 推荐(1) 编辑
摘要:简介 UDT给了你两种选择,byte stream或者message,到底选哪一种呢?经验告诉我们,只有小学生才做选择题,而我们应该全都要! 类型的定义 UDT的两种类型是怎么定义的呢? 翻看com.barchart.udt包,可以发现这两种类型定义在TypeUDT枚举类中。 STREAM(1), 阅读全文
posted @ 2022-02-10 15:27 flydean 阅读(353) 评论(1) 推荐(0) 编辑
摘要:简介 UDT是一个非常优秀的协议,可以提供在UDP协议基础上进行高速数据传输。但是可惜的是在netty 4.1.7中,UDT传输协议已经被标记为Deprecated了! 意味着在后面的netty版本中,你可能再也看不到UDT协议了. 优秀的协议怎么能够被埋没,让我们揭开UDT的面纱,展示其优秀的特性 阅读全文
posted @ 2022-01-21 13:55 flydean 阅读(532) 评论(1) 推荐(0) 编辑
摘要:简介 我们知道netty的基础是channel和在channel之上的selector,当然作为一个nio框架,channel和selector不仅仅是netty的基础,也是所有nio实现的基础。 同样的,我们知道netty很多种不同的协议,这些协议都是在channel上进行通讯的,那么对于不同的协 阅读全文
posted @ 2022-01-19 13:49 flydean 阅读(352) 评论(1) 推荐(0) 编辑
摘要:简介 在之前的文章中,我们介绍了在同一个netty程序中支持多个不同的服务,它的逻辑很简单,就是在一个主程序中启动多个子程序,每个子程序通过一个BootStrap来绑定不同的端口,从而达到访问不同端口就访问了不同服务的目的。 但是多个端口虽然区分度够高,但是使用起来还是有诸多不便,那么有没有可能只用 阅读全文
posted @ 2022-01-12 16:35 flydean 阅读(982) 评论(0) 推荐(0) 编辑
摘要:简介 SOCKS是一个优秀的网络协议,主要被用来做代理,它的两个主要版本是SOCKS4和SOCKS5,其中SOCKS5提供了对认证的支持。通常来说我们使用SSH工具可以构建简单的SOCKS协议通道,那么对于netty来说,是怎么提供对SOCKS的支持呢?一起来看看吧。 SocksMessage 首先 阅读全文
posted @ 2022-01-06 09:26 flydean 阅读(356) 评论(0) 推荐(0) 编辑
摘要:简介 爱因斯坦说过:所有的伟大,都产生于简单的细节中。netty为我们提供了如此强大的eventloop、channel通过对这些简单东西的有效利用,可以得到非常强大的应用程序,比如今天要讲的代理。 代理和反向代理 相信只要是程序员应该都听过nginx服务器了,这个超级优秀nginx一个很重要的功能 阅读全文
posted @ 2021-12-24 08:13 flydean 阅读(1110) 评论(1) 推荐(0) 编辑
摘要:简介 其实软件界最赚钱的不是写代码的,写代码的只能叫马龙,高级点的叫做程序员,都是苦力活。那么有没有高大上的职业呢?这个必须有,他们的名字就叫做咨询师。 咨询师就是去帮企业做方案、做架构、做优化的,有时候一个简单的代码改动、一个架构的调整都可以让软件或者流程更加高效的运行,从而为企业节省上亿的开支。 阅读全文
posted @ 2021-12-16 13:53 flydean 阅读(1252) 评论(5) 推荐(3) 编辑
摘要:简介 在之前的文章中,我们提到了在netty的客户端通过使用Http2FrameCodec和Http2MultiplexHandler可以支持多路复用,也就是说在一个连接的channel基础上创建多个子channel,通过子channel来处理不同的stream,从而达到多路复用的目的。 既然客户端 阅读全文
posted @ 2021-12-14 10:18 flydean 阅读(755) 评论(3) 推荐(0) 编辑
摘要:简介 netty为我们提供了很多http2的封装,让我们可以轻松的搭建出一个支持http2的服务器。其中唯一需要我们自定义的就是http2 handler。 在之前的文章中,我们介绍了自定义http2handler继承自Http2ConnectionHandler并且实现Http2FrameList 阅读全文
posted @ 2021-11-25 06:59 flydean 阅读(385) 评论(1) 推荐(0) 编辑
摘要:简介 HTTP2相对于http1.1来说一个重要的提升就是流控制flowcontrol。为什么会有流控制呢?这是因为不管是哪种协议,客户端和服务器端在接收数据的时候都有一个缓冲区来临时存储暂时处理不了的数据,但是缓冲区的大小是有限制的,所以有可能会出现缓冲区溢出的情况,比如客户端向服务器端上传一个大 阅读全文
posted @ 2021-10-29 14:25 flydean 阅读(654) 评论(1) 推荐(0) 编辑
摘要:简介 无论是什么协议,如果要真正被使用的话,需要将该协议转换成为对应的语言才好真正的进行应用,本文将从http2消息的结构出发,探讨一下netty对http2消息的封装,带大家领略一下真正的框架应该做到什么程度。 http2消息的结构 http2和http1.1不同的是它使用了新的二进制分帧,通过客 阅读全文
posted @ 2021-10-25 09:33 flydean 阅读(1229) 评论(1) 推荐(0) 编辑