netty系列之:在netty中使用proxy protocol_flydean-编程思维
目录简介netty对proxy protocol协议的支持HAProxyMessage的编码解码器netty中proxy protocol的代码示例总结 简介 我们知道proxy protocol是haproxy提出的一个代理协议,通过这个协议,所有实现这个协议的proxy或者LBS,都可以附带真实客户端的IP地址和端口号,这使得proxy protocol在实际应用中非常有用。 这么优秀的协议
morethink program
目录简介netty对proxy protocol协议的支持HAProxyMessage的编码解码器netty中proxy protocol的代码示例总结 简介 我们知道proxy protocol是haproxy提出的一个代理协议,通过这个协议,所有实现这个协议的proxy或者LBS,都可以附带真实客户端的IP地址和端口号,这使得proxy protocol在实际应用中非常有用。 这么优秀的协议
目录简介搭建netty服务器DNS服务器的消息处理DNS客户端消息请求总结 简介 在前面的文章中,我们提到了使用netty构建tcp和udp的客户端向已经公布的DNS服务器进行域名请求服务。基本的流程是借助于netty本身的NIO通道,将要查询的信息封装成为DNSMessage,通过netty搭建的channel发送到服务器端,然后从服务器端接受返回数据,将其编码为DNSResponse,进行消
目录简介redis的高级用法Redis中的piplineRedis中的Pub/SubRESP protocolSimple StringsBulk StringsRESP IntegersRESP ArraysRESP ErrorsInline commands总结 简介 redis是一个非常优秀的软件,它可以用作内存数据库或者缓存。因为他的优秀性能,redis被应用在很多场合中。 redis是
目录简介支持DoT的DNS服务器搭建支持DoT的netty客户端TLS的客户端请求总结 简介 在前面的文章中我们讲过了如何在netty中构造客户端分别使用tcp和udp协议向DNS服务器请求消息。在请求的过程中并没有进行消息的加密,所以这种请求是不安全的。 那么有同学会问了,就是请求解析一个域名的IP地址而已,还需要安全通讯吗? 事实上,不加密的DNS查询消息是很危险的,如果你在访问一个重要的网
目录简介自定义SubscriberBackpressure处理创建Flux使用generate使用create使用push使用Handle 简介 上篇文章我们简单的介绍了Reactor的发展史和基本的Flux和Mono的使用,本文将会进一步挖掘Reactor的高级用法,一起来看看吧。 自定义Subscriber 之前的文章我们提到了4个Flux的subscribe的方法: Disposable
目录简介Thread多线程Schedule定时器Schedulers工具类publishOn 和 subscribeOnpublishOnsubscribeOn 简介 今天我们要介绍的是Reactor中的多线程模型和定时器模型,Reactor之前我们已经介绍过了,它实际上是观察者模式的延伸。 所以从本质上来说,Reactor是和多线程无关的。你可以把它用在多线程或者不用在多线程。 今天将会给大家
目录简介Reactor的异常一般处理方法各种异常处理方式详解Static Fallback ValueFallback MethodDynamic Fallback ValueCatch and RethrowLog or React on the SideFinally BlockRetrying 简介 不管是在响应式编程还是普通的程序设计中,异常处理都是一个非常重要的方面。今天将会给大家介绍
目录简介r2dbc-mysql的maven依赖创建connectionFactory使用MySqlConnectionFactory创建connection执行statement执行事务使用线程池 简介 mysql应该是我们在日常工作中使用到的一个非常普遍的数据库,虽然mysql现在是oracle公司的,但是它是开源的,市场占有率还是非常高的。 今天我们将会介绍r2dbc在mysql中的使用。
目录简介依赖关系数据库连接配置数据库初始化DAO操作Service操作和Transactioncontroller测试 简介 上篇文章我们讲到了怎么在Spring webFlux中使用r2dbc,今天我们看一下怎么使用spring-data-r2dbc这个Spring data对r2dbc的封装来进行r2dbc操作。 依赖关系 要使用Spring-datea-r2dbc需要配置下面的依赖关系:
目录简介DNS传输协议简介DNS的IP地址Do53/TCP在netty中的使用搭建DNS netty client发送DNS查询消息DNS查询的消息处理总结 简介 DNS的全称domain name system,既然是一个系统就有客户端和服务器之分。一般情况来说我们并不需要感知这个DNS客户端的存在,因为我们在浏览器访问某个域名的时候,浏览器作为客户端已经实现了这个工作。 但是有时候我们没有使
目录简介epoll的详细使用EpollEventLoopGroupEpollEventLoopEpollServerSocketChannelEpollSocketChannel总结 简介 在前面的章节中,我们讲解了kqueue的使用和原理,接下来我们再看一下epoll的使用。两者都是更加高级的IO方式,都需要借助native的方法实现,不同的是Kqueue用在mac系统中,而epoll用在li
目录简介KQueueEventLoopGroupKQueueEventLoopKQueueServerSocketChannel和KQueueSocketChannel总结 简介 在前面的章节中,我们介绍了在netty中可以使用kequeue或者epoll来实现更为高效的native传输方式。那么kequeue和epoll和NIO传输协议有什么不同呢? 本章将会以kequeue为例进行深入探讨。
目录简介native传输协议的依赖netty本地传输协议的使用总结 简介 对于IO来说,除了传统的block IO,使用最多的就是NIO了,通常我们在netty程序中最常用到的就是NIO,比如NioEventLoopGroup,NioServerSocketChannel等。 我们也知道在IO中有比NIO更快的IO方式,比如kqueue和epoll,但是这两种方式需要native方法的支持,也就
目录简介引入affinityAffinityThreadFactory在netty中使用AffinityThreadFactory总结 简介 之前我们介绍了一个非常优秀的细粒度控制JAVA线程的库:java thread affinity。使用这个库你可以将线程绑定到特定的CPU或者CPU核上,通过减少线程在CPU之间的切换,从而提升线程执行的效率。 虽然netty已经够优秀了,但是谁不想更加优
目录简介enum和Enumnetty中可扩展的Enum:ConstantPool使用ConstantPool总结 简介 很多人都用过java中的枚举,枚举是JAVA 1.5中引用的一个新的类型,用来表示可以列举的范围,但是可能很少有人知道java中的enum到底是怎么工作的,enum和Enum有什么关系?Enum可不可以扩展? 一起来看看吧。 enum和Enum JAVA1.5中引入了枚举类,我
目录简介从ThreadLocalMap中获取数据FastThreadLocal总结 简介 JDK中的ThreadLocal可以通过get方法来获得跟当前线程绑定的值。而这些值是存储在ThreadLocal.ThreadLocalMap中的。而在ThreadLocalMap中底层的数据存储是一个Entry数组中的。 那么从ThreadLocalMap中获取数据的速度如何呢?速度有没有可以优化的空间
目录简介ThreadLocalThreadLocalMapRecycler总结 简介 JDK中的Thread大家肯定用过,只要是用过异步编程的同学肯定都熟悉。为了保存Thread中特有的变量,JDK引入了ThreadLocal类来专门对Thread的本地变量进行管理。 ThreadLocal 很多新人可能不明白ThreadLocal到底是什么,它和Thread到底有什么关系。 其实很简单,Thr
目录简介UDP在netty中的表示DatagramPacketEncoderDatagramPacketDecoder总结 简介 netty中提供的protobuf编码解码器可以让我们直接在netty中传递protobuf对象。同时netty也提供了支持UDP协议的channel叫做NioDatagramChannel。如果直接使用NioDatagramChannel,那么我们可以直接从chan