IO-Netty
文章平均质量分 92
OkidoGreen
这个作者很懒,什么都没留下…
展开
-
使用Netty实现HTTP服务器
Netty是一个异步事件驱动的网络应用程序框架用于快速开发可维护的高性能协议服务器和客户端。Netty经过精心设计,具有丰富的协议,如FTP,SMTP,HTTP以及各种二进制和基于文本的传统协议。Java程序员在开发web应用的时候,截止2018年大多数公司采用的还是servlet规范的那一套来开发的,比如springmvc。虽然在2018年Java程序员们可以选择使用spring5中的webflux,但是这个转变没那么快。然而,基于servlet那一套的springmvc性能很差,如果你厌烦了,你大可转载 2020-11-28 22:41:40 · 4853 阅读 · 1 评论 -
一起学Netty(五)之 初识ByteBuf和ByteBuf的常用API
网络传输的载体是byte,这是任何框架谁也逃脱不了的一种规定,Java的NIO提供了ByteBuffer,用来完成这项任务,当然ByteBuffer也很好的完成了这个任务,Netty也提供了一个名字很相似的载体叫做ByteBuf,相比于ByteBuf而言,它有着更加更多友善的API,也更加易于维护,并且它可以扩容一般来说,ByteBuf都是维护一个byte数组的,它转载 2016-10-31 10:39:30 · 4819 阅读 · 0 评论 -
一起学Netty(四)之 ChannelHandler,ChannelHandlerContext,ChannelPipeline
本小节一起学习一下ChannelHandler,ChannelHandlerContext,ChannelPipeline这三个Netty常用的组件,不探究它们的底层源码,我们就简单的分析一下用法首先先分析一下ChannelHandler,ChannelHandler是我们日常开发中使用最多的组件了,大概我们平时写的最多的组件就是Handler了,继承图如下转载 2016-10-31 10:35:22 · 7129 阅读 · 0 评论 -
一起学Netty(三)之 SimpleChannelInboundHandler
其实Netty的知识点还是很零碎的,比如这个SimpleChannelInboundHandler这个类,在《Netty in Action》该书中的原版的Hello world的demo的客户端就是使用的SimpleChannelInboundHandler来作为处理器的,我本来也是使用这个类作为我处理类的,但是做一个新手,这个类还是让我走了一点弯路,我们可以看到SimpleChannelInb转载 2016-10-31 10:34:31 · 24162 阅读 · 5 评论 -
一起学Netty(二)之 Hello Netty的原型图解
上一个小节,写的一个入门的Hello Netty的案例,它的模型其实很简单,我们画个简单的图理解一下[java] view plain copypackage com.lyncc.netty.concept; /** * * @author Bazingalyncc * 描述: * 时间 2016年4转载 2016-10-31 10:22:42 · 2446 阅读 · 0 评论 -
一起学Netty(一)之 Hello Netty
案例说明:客户端发送一个信息到服务器端,服务器端将信息原样返回maven的依赖,我们如下:[html] view plain copydependencies> dependency> groupId>junitgroupId> artifactId>junitartifa转载 2016-10-31 10:21:25 · 2664 阅读 · 0 评论 -
轻量级分布式 RPC 框架(续)
1、背景最近在搜索Netty和Zookeeper方面的文章时,看到了这篇文章《轻量级分布式 RPC 框架》,作者用Zookeeper、Netty和Spring写了一个轻量级的分布式RPC框架。花了一些时间看了下他的代码,写的干净简单,写的RPC框架可以算是一个简易版的dubbo。这个RPC框架虽小,但是麻雀虽小,五脏俱全,有兴趣的可以学习一下。本人在这个简易版的RPC上添加了如下特转载 2016-09-29 11:11:45 · 1605 阅读 · 0 评论 -
轻量级分布式 RPC 框架
转自 http://git.oschina.net/huangyong/rpcRPC,即 Remote Procedure Call(远程过程调用),说得通俗一点就是:调用远程计算机上的服务,就像调用本地服务一样。RPC 可基于 HTTP 或 TCP 协议,Web Service 就是基于 HTTP 协议的 RPC,它具有良好的跨平台性,但其性能却不如基于 TCP 协议的 RP转载 2016-09-27 15:16:07 · 1327 阅读 · 0 评论 -
netty之http部分handler的使用与超时控制handler
这部分讲讲使用的最多的一种handler的使用情况,http部分的handler,另外再来讲讲超时控制handler的实现package fjs;import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.ChannelFuture;import io.netty.channel.ChannelInitialize转载 2016-09-26 16:49:02 · 7159 阅读 · 1 评论 -
Netty Server读超时(ReadTimeoutHandler),client自动INACTIVE
package netty.sample;import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.ChannelFuture;import io.netty.channel.ChannelInitializer;import io.netty.channel.ChannelOption;import io.ne转载 2016-09-26 16:43:36 · 10989 阅读 · 0 评论 -
浅析 Netty 实现心跳机制与断线重连
基础何为心跳顾名思义, 所谓 心跳, 即在 TCP 长连接中, 客户端和服务器之间定期发送的一种特殊的数据包, 通知对方自己还在线, 以确保 TCP 连接的有效性.为什么需要心跳因为网络的不可靠性, 有可能在 TCP 保持长连接的过程中, 由于某些突发情况, 例如网线被拔出, 突然掉电等, 会造成服务器和客户端的连接中断. 在这些突发情况下, 如果恰好服务器和客户端转载 2016-09-26 16:41:43 · 15970 阅读 · 4 评论 -
基于Netty4的HttpServer和HttpClient的简单实现
Netty的主页:http://netty.io/index.html使用的Netty的版本:netty-4.0.23.Final.tar.bz2 ‐ 15-Aug-2014 (Stable, Recommended)Http 消息格式:Http request:Method path-to-resource HTTPVersion-numberHeader-转载 2016-09-26 16:38:40 · 4324 阅读 · 0 评论 -
一起学Netty(七)之 TCP粘包拆包基本解决方案
上个小节我们浅析了在Netty的使用的时候TCP的粘包和拆包的现象,Netty对此问题提供了相对比较丰富的解决方案Netty提供了几个常用的解码器,帮助我们解决这些问题,其实上述的粘包和拆包的问题,归根结底的解决方案就是发送端给远程端一个标记,告诉远程端,每个信息的结束标志是什么,这样,远程端获取到数据后,根据跟发送端约束的标志,将接收的信息分切或者合并成我们需要的信息,这样我转载 2016-10-31 10:44:49 · 1787 阅读 · 0 评论 -
一起学Netty(六)之 TCP粘包拆包场景
TCP编程底层都有粘包和拆包机制,因为我们在C/S这种传输模型下,以TCP协议传输的时候,在网络中的byte其实就像是河水,TCP就像一个搬运工,将这流水从一端转送到另一端,这时又分两种情况:1)如果客户端的每次制造的水比较多,也就是我们常说的客户端给的包比较大,TCP这个搬运工就会分多次去搬运。2)如果客户端每次制造的水比较少的话,TCP可能会等客户端多次生产之后,把所有的水一起转载 2016-10-31 10:43:32 · 1653 阅读 · 0 评论 -
一起学Netty(八)之 浅析ByteToMessageDecoder
上一节一起学习了几个解码器,用于解决TCP协议网络传输过程中粘包和拆包的问题,用过Netty的人总会说一句话“用Netty一定要了解一下它的底层原理,这样才敢用”,其实很有感悟,Netty in action 这本书中也有一个章节分析了codec,也定义了几个自定义的译码器,但是它自定义的几个译码器全部是继承与ByteToMessageDecoder的,我们上文中的几个解码器例如Delimiter转载 2016-10-31 10:57:23 · 2455 阅读 · 0 评论 -
Netty中的三种Reactor(反应堆)
https://www.cnblogs.com/duanxz/p/3696849.htmlNetty的I/O线程NioEventLoop由于聚合了多路复用器Selector,可以同时并发处理成百上千个客户端SocketChannel。由于读写操作都是非阻塞的,这就可以充分提升I/O线程的运行效率,避免由频繁的I/O阻塞导致的线程挂起。另外,由于Netty采用了异步通信模式,一个I/O线程...转载 2019-05-30 16:42:26 · 4538 阅读 · 0 评论 -
Netty Failure to transfer io.netty:netty-tcnative:jar:${os.detected.classifier}:2.0.0.Final 问题解决
Netty框架中,pom文件中引用netty-alljar发生错误,解决办法。错误现象:Failure to transfer io.netty:netty-tcnative:jar:${os.detected.classifier}:2.0.0.Final from http://maven.aliyun.com/nexus/content/repositories/centra转载 2017-10-16 16:27:46 · 4562 阅读 · 1 评论 -
Netty内部组件 in out bound handler等
读完这一章,我们基本上可以了解到Netty所有重要的组件,对Netty有一个全面的认识,这对下一步深入学习Netty是十分重要的,而学完这一章,我们其实已经可以用Netty解决一些常规的问题了。一、先纵览一下Netty,看看Netty都有哪些组件?为了更好的理解和进一步深入Netty,我们先总体认识一下Netty用到的组件及它们在整个Netty架构中是怎么协调工作的。Netty应用转载 2016-09-20 11:21:28 · 2819 阅读 · 0 评论 -
Netty学习(转载)
http://blog.csdn.net/linuu/article/details/51306480http://blog.csdn.net/zxhoo/article/details/17964353转载 2017-03-12 17:50:54 · 1447 阅读 · 0 评论 -
一起学Netty(十四)之 Netty生产级的心跳和重连机制
sigh,写这篇博客的时候老脸还是红了一下,心里还是有些唏嘘的,应该算是剽窃吧,每个人的代码功力的确是有差距的,好在文章的标题是“一起学”,而不是开涛大神的“跟我学”系列的文章,我们还是多花点时间学习吧,感叹无用~最近工作比较忙,但闲暇之余还是看了阿里的冯家春(fengjiachun)的github上的开源代码Jupiter,写的RPC框架让我感叹人外有人,废话不多说,下面的代转载 2016-10-31 11:15:47 · 2712 阅读 · 2 评论 -
一起学Netty(十三)之 Netty简单的重连机制
其实重连机制并不是多么多高深的技术,其实就是一个在客户端做一个简单的判断,如果连接断了,那么就重新调用连接服务端的代码当然,我们重连的动作肯定是发生在断连之后发生的,我们可以在上篇的心跳机制的基础上,简单地修改一下客户端的启动代码就可以了:我们在连接断了之后,我们一般会在finally的方法中去释放资源,这边我们应该不去释放资源,我们在finally里面进行转载 2016-10-31 11:11:14 · 2795 阅读 · 0 评论 -
一起学Netty(十二)之 Netty心跳简单Demo
前面简单地了解了一下IdleStateHandler,我们现在写一个简单的心跳demo:1)服务器端每隔5秒检测服务器端的读超时,如果5秒没有接受到客户端的写请求,也就说服务器端5秒没有收到读事件,则视为一次超时2)如果超时二次则说明连接处于不活跃的状态,关闭ServerChannel3)客户端每隔4秒发送一些写请求,这个请求相当于一次心跳包,告之服务器端:客户端仍旧活着转载 2016-10-31 11:06:06 · 9562 阅读 · 3 评论 -
一起学Netty(十一)之 Netty心跳之IdleStateHandler
Netty提供了对心跳机制的天然支持,心跳可以检测远程端是否存活,或者活跃今天我们就一起初识一下Netty4的心跳机制Netty4.0提供了一个类,名为IdleStateHandler,这个类可以对三种类型的心跳检测这个类的构造参数是这样的:前三个的参数解释如下:1)readerIdleTime:为读超时时间(转载 2016-10-31 11:02:25 · 4870 阅读 · 0 评论 -
一起学Netty(十)之 Netty使用Google的ProtoBuf
protobuf是由Google开发的一套对数据结构进行序列化的方法,可用做通信协议,数据存储格式,等等。其特点是不限语言、不限平台、扩展性强Netty也提供了对Protobuf的天然支持,我们今天就写一个简单的示例,简单地了解一下Netty对Google的protoBuf的支持我们的示例场景很简单的:客户端发送一个信息,这个信息用Protobuf来做序列化转载 2016-10-31 11:02:05 · 2867 阅读 · 1 评论 -
一起学Netty(九)之LengthFieldBasedFrameDecoder
之前介绍了Netty天然的几种解析器,也稍微介绍了一下ByteToMessageDecoder类,我们对Netty的解码器还是有了一定的了解~今天要介绍的是Netty中一个很重要的解码器,因为相比于其他的普通的解码器,这个解码器用的场景更多,并不是说其他解码器不重要,只是因为我们业务场景所致在当今比较流行的水平拆分的架构之下,RPC协议很是流行,这样可以使各转载 2016-10-31 11:00:47 · 3712 阅读 · 0 评论 -
Netty 之 netty的比较规范的C/S端的写法
看了RPC框架Jupiter的源码和RocketMQ的Netty部分的代码,最后还是总结一下,把与Netty相关的代码都截取出来,写出一个比较规范的DEMO这个DEMO还是比较简单的,但麻雀虽小五脏俱全啊,有心跳,有重连,有ack的,可以与大家分享一下~https://github.com/BazingaLyn/netty-study/tree/master转载 2016-09-26 11:01:46 · 2097 阅读 · 0 评论 -
Netty 之 Netty简单的重连机制
其实重连机制并不是多么多高深的技术,其实就是一个在客户端做一个简单的判断,如果连接断了,那么就重新调用连接服务端的代码当然,我们重连的动作肯定是发生在断连之后发生的,我们可以在上篇的心跳机制的基础上,简单地修改一下客户端的启动代码就可以了:我们在连接断了之后,我们一般会在finally的方法中去释放资源,这边我们应该不去释放资源,我们在finally里面进行转载 2016-09-22 16:08:07 · 9153 阅读 · 4 评论 -
Netty 之 ChannelHandler,ChannelHandlerContext,ChannelPipeline
本小节一起学习一下ChannelHandler,ChannelHandlerContext,ChannelPipeline这三个Netty常用的组件,不探究它们的底层源码,我们就简单的分析一下用法首先先分析一下ChannelHandler,ChannelHandler是我们日常开发中使用最多的组件了,大概我们平时写的最多的组件就是Handler了,继承图如下转载 2016-09-22 15:45:32 · 1934 阅读 · 1 评论 -
Netty 之 AttributeMap属性
本来没打算研究这个东西的,一开始觉得没啥用,甚至觉得这个东西有点鸡肋,不过慢慢接触之后,发现了这个AttributeMap的重要性初学这个东西,我们还是先理解AttributeMap的用法吧1)AttributeMap这是是绑定在Channel或者ChannelHandlerContext上的一个附件,相当于依附在这两个对象上的寄生虫一样,相当于附件一样,如图所示:转载 2016-09-23 11:44:07 · 6795 阅读 · 0 评论 -
Netty4学习笔记-- AttributeMap
IoSessionMINA的IoSession接口定义了一组方法,让我们可以利用IoSession来存储一些数据:[java] view plain copy public interface IoSession { getAttribute(Object key) getAttribute(Object转载 2016-09-22 18:02:32 · 2836 阅读 · 0 评论 -
Netty 之 Netty生产级的心跳和重连机制
sigh,写这篇博客的时候老脸还是红了一下,心里还是有些唏嘘的,应该算是剽窃吧,每个人的代码功力的确是有差距的,好在文章的标题是“一起学”,而不是开涛大神的“跟我学”系列的文章,我们还是多花点时间学习吧,感叹无用~最近工作比较忙,但闲暇之余还是看了阿里的冯家春(fengjiachun)的github上的开源代码Jupiter,写的RPC框架让我感叹人外有人,废话不多说,下面的代转载 2016-09-22 17:25:14 · 31345 阅读 · 8 评论 -
基于netty-socketio的web推送服务
实时消息的推送,PC端的推送技术可以使用socket建立一个长连接来实现。传统的web服务都是客户端发出请求,服务端给出响应。但是现在直观的要求是允许特定时间内在没有客户端发起请求的情况下服务端主动推送消息到客户端。有哪些可以实现web消息推送的技术:不断地轮询(俗称“拉”,polling)是获取实时消息的一个手段:Ajax 隔一段时间(通常使用 JavaScript 的 se翻译 2016-09-11 18:00:11 · 2335 阅读 · 1 评论 -
netty学习笔记(一)—结合reactor模式探索netty对网络io的处理机制
Reactor与Proactor简介reactor、proactor常见的翻译是反应器(堆)、前摄器,这名字听着总让人一头雾水的,抓不着本质。后来看看对应形容词的英文释义,再结合技术角度的描述,总算有了基础的认识:reactive: reacting to events or situations rather than starting or doing new thin转载 2016-09-12 13:02:49 · 1328 阅读 · 0 评论 -
使用JAVA操作netty框架
之前使用过MINA框架,感觉效率非常好,使用长连接可以支持10万次以上的并发。 今天尝试使用了Netty框架,感觉使用上也非常方便,具体效率问题,在接下来的博客会详细解读: NioServerSocketChannelFactory创建服务端的ServerSocketChannel,采用多线程执行非阻塞IO,和Mina的设计 模式一样,都采用了Reactor模式。其中bossE转载 2016-09-12 10:46:48 · 4293 阅读 · 0 评论 -
Netty系列之Netty高性能之道
1. 背景1.1. 惊人的性能数据最近一个圈内朋友通过私信告诉我,通过使用Netty4 + Thrift压缩二进制编解码技术,他们实现了10W TPS(1K的复杂POJO对象)的跨节点远程服务调用。相比于传统基于Java序列化+BIO(同步阻塞IO)的通信框架,性能提升了8倍多。事实上,我对这个数据并不感到惊讶,根据我5年多的NIO编程经验,通过选择合适的NIO框架,加上高转载 2016-09-12 10:43:00 · 1146 阅读 · 0 评论 -
Netty-WebSocket长连接推送服务
转自:http://blog.csdn.net/sinosoft_fesco_12138/article/details/50380256November 25, 2015推送服务 推送服务几种消息推送技术比较AJAX轮询 轮询:缺点,糟糕的用户体验;对服务器压力很大,并造成带宽的极大浪费。Comet:长连接机制,同样由浏览器端主动发起,但Ser转载 2016-09-11 18:38:38 · 10705 阅读 · 0 评论 -
netty websocket 简单消息推送demo
这篇是基于"netty与websocket通信demo"。错误想法:大量客户请求,共用一个worker,来实现推送。正确作法:应该是对Channel对应的ChannelGroup进行操作,来实现推送。一个Channel可以划分到多个ChannelGroup中。PushServerChannelHandler和DynMessage这两个类最重要,其实类基本没变转载 2016-09-11 18:25:13 · 5834 阅读 · 0 评论 -
netty与websocket通信demo
这篇是基于"netty与websocket通信demo"。错误想法:大量客户请求,共用一个worker,来实现推送。正确作法:应该是对Channel对应的ChannelGroup进行操作,来实现推送。一个Channel可以划分到多个ChannelGroup中。PushServerChannelHandler和DynMessage这两个类最重要,其实类基本没变。p转载 2016-09-11 18:17:54 · 3513 阅读 · 0 评论 -
netty处理客户端传过来的get、post、websocket数据例子
用netty作为http服务器,在服务器端读取客户端传过来的get和post参数和websocket数据例子,netty版本3.6.6package com.penngo.http;import java.net.InetSocketAddress;import java.util.concurrent.Executors;import org.jboss.netty.boo转载 2016-09-11 18:08:58 · 6896 阅读 · 1 评论 -
Netty 之 ChannelOption的TCP_NODELAY属性设置
在有些网络通信的场景下,要求低延迟,这样就需要我们设置一些TCP的链接属性:在客户端我们需要这样设置:[java] view plain copy bootstap.option(ChannelOption.TCP_NODELAY, true); 在服务器端是在worker的Channel端设置属性,转载 2016-09-23 11:51:04 · 16514 阅读 · 0 评论