netty
windskymr
这个作者很懒,什么都没留下…
展开
-
Netty学习笔记 开始
The ProblemNowadays we use general purpose applications or libraries to communicate with each other. For example, we often use an HTTP client library to retrieve information from a web server and转载 2015-06-01 16:08:08 · 706 阅读 · 0 评论 -
Netty的websocket Demo
1.服务端public final class WebSocketServer { static final boolean SSL = System.getProperty("ssl") != null; static final int PORT = Integer.parseInt(System.getProperty("port", SSL? "8443" : "80转载 2017-04-27 16:06:23 · 4016 阅读 · 0 评论 -
Netty4.0的DefaultHttpRequest与FullHttpRequest
本人用netty4.0做Http服务器模块时,出现了一个Bug,从平台发送过来的充值请求接收不到,充值请求是Post方式,自己写了个post工具模拟充值请求,发现:能收到HttpRequest,但收不到HttpContent。消息分发器代码: protected void channelRead0(ChannelHandlerContext ctx, Object data) thr转载 2017-04-10 18:59:24 · 16963 阅读 · 2 评论 -
Netty Demo文件下载(二)
Netty项目中应用:文件下载 private void writeFile(ChannelHandlerContext ctx, String path, boolean delAfterDoing) throws Exception{ File file = new File(path); RandomAccessFile raf = new Ran转载 2017-02-13 19:17:31 · 866 阅读 · 0 评论 -
Netty源码解读(四)Netty与Reactor模式
一:Netty、NIO、多线程?时隔很久终于又更新了!之前一直迟迟未动也是因为积累不够,后面比较难下手。过年期间李林锋发布了一个Netty5.0架构剖析和源码解读 ,看完也是收获不少。前面的文章我们分析了Netty的结构,这次咱们来分析最错综复杂的一部分-Netty中的多线程以及NIO的应用。理清NIO与Netty的关系之前,我们必须先要来看看Reactor模式。Netty是一个典转载 2017-02-21 15:10:28 · 595 阅读 · 0 评论 -
同步异步与阻塞非阻塞的区别
“阻塞”与"非阻塞"与"同步"与“异步"不能简单的从字面理解,提供一个从分布式系统角度的回答。1.同步与异步同步和异步关注的是消息通信机制 (synchronous communication/ asynchronous communication)所谓同步,就是在发出一个*调用*时,在没有得到结果之前,该*调用*就不返回。但是一旦调用返回,就得到返回值了。换句话说,就是由*调用者转载 2017-02-21 14:37:38 · 293 阅读 · 0 评论 -
Netty源码解读(一)概述
Netty和Mina是Java世界非常知名的通讯框架。它们都出自同一个作者,Mina诞生略早,属于Apache基金会,而Netty开始在Jboss名下,后来出来自立门户netty.io。关于Mina已有@FrankHui的Mina系列文章,我正好最近也要做一些网络方面的开发,就研究一下Netty的源码,顺便分享出来了。 Netty目前有两个分支:4.x和3.x。4.0分支重写了很多东西,并对项转载 2017-02-20 18:13:59 · 725 阅读 · 0 评论 -
Netty源码解读(二)Netty中的buffer
上一篇文章我们概要介绍了Netty的原理及结构,下面几篇文章我们开始对Netty的各个模块进行比较详细的分析。Netty的结构最底层是buffer模块,这部分也相对独立,我们就先从buffer讲起。What: buffer二三事buffer中文名又叫缓冲区,按照维基百科的解释,是”在数据传输时,在内存里开辟的一块临时保存数据的区域”。它其实是一种化同步为异步的机制,可以解决数据传输转载 2017-02-20 18:29:35 · 376 阅读 · 0 评论 -
Netty系列之Netty编解码框架分析
1. 背景1.1. 编解码技术通常我们也习惯将编码(Encode)称为序列化(serialization),它将对象序列化为字节数组,用于网络传输、数据持久化或者其它用途。反之,解码(Decode)/反序列化(deserialization)把从网络、磁盘等读取的字节数组还原成原始对象(通常是原始对象的拷贝),以方便后续的业务逻辑操作。进行远程跨进程服务调用时(例如RP转载 2017-02-20 16:19:43 · 441 阅读 · 0 评论 -
netty之DirectByteBuf 和 HeapByteBuf浅谈
ByteBuf是netty中数据传输的容器,用来替代NIO中的ByteBuffer。其主要还是一个byte数组,以及包含了一些数据的操作方法。通过两个指针readerIndex和writerIndex来读写分离,更好的处理数据。其结构大致如下图所示。ByteBuf示意图而从内存分配的角度来讲,ByteBuf又分为两种,DirectByteBuf和HeapByteBuf。转载 2017-02-20 15:22:27 · 1607 阅读 · 0 评论 -
Netty系列之Netty高性能之道
1. 背景1.1. 惊人的性能数据最近一个圈内朋友通过私信告诉我,通过使用Netty4 + Thrift压缩二进制编解码技术,他们实现了10W TPS(1K的复杂POJO对象)的跨节点远程服务调用。相比于传统基于Java序列化+BIO(同步阻塞IO)的通信框架,性能提升了8倍多。事实上,我对这个数据并不感到惊讶,根据我5年多的NIO编程经验,通过选择合适的NIO框架,加上高性能的压缩二转载 2017-02-20 14:58:36 · 318 阅读 · 0 评论 -
Netty示例:文件下载
Netty服务端启动代码:public class NettyWebSocketServer extends Thread { protected ServerBootstrap BOOTSTRAP; protected EventLoopGroup BOSS_GROUP; protected EventLoopGroup WORKER_GROUP; prote转载 2017-02-10 12:37:50 · 2382 阅读 · 0 评论 -
Netty版本升级血泪史之线程篇
转自:http://www.infoq.com/cn/articles/netty-version-upgrade-history-thread-part/1. 背景1.1. Netty 3.X系列版本现状根据对Netty社区部分用户的调查,结合Netty在其它开源项目中的使用情况,我们可以看出目前Netty商用的主流版本集中在3.X和4.X上,其中以Net转载 2015-11-18 17:27:03 · 887 阅读 · 0 评论 -
Netty系列之Netty线程模型
转载于http://www.infoq.com/cn/articles/netty-threading-model/1. 背景1.1. Java线程模型的演进1.1.1. 单线程时间回到十几年前,那时主流的CPU都还是单核(除了商用高性能的小机),CPU的核心频率是机器最重要的指标之一。在Java领域当时比较流行的是单线程编程,对于CPU密集型的应用程序而言翻译 2015-11-16 18:04:26 · 621 阅读 · 0 评论 -
Netty学习笔记(一)EchoServer服务器
为学习Netty,先做个EchoServer练练手吧。目标效果:CMD tenlet上去,任意输入字符串后回车,服务端返回相同字符串ChannelHandlerAdapter.javapackage com.skymr.netty.echo;import io.netty.buffer.ByteBuf;import io.netty.channel.ChannelHandlerA转载 2015-10-01 18:35:12 · 4507 阅读 · 0 评论 -
Netty:实现同步发送并接收消息的一种方式
Netty创建通信服务时使用Nio异步通信, 配置代码(bootstrap.channel(NioSocketChannel.class);),要怎样实现这样一个同步发送消息并接收消息功能,虽然这样做觉得很没必要。public class ChannelUtil { public static Object writeMsgSync(Object msg, Channel cha转载 2017-08-18 14:57:50 · 9306 阅读 · 2 评论