导航菜单
路很长,又很短
博主信息
昵   称:Cocodroid ->关于我
Q     Q:2531075716
博文数:356
阅读量:1744893
访问量:218073
至今:
×
博文->>搜索结果(耗时0.183秒) 博文列表>>
Tags : 高性能,Netty,FastThreadLocal,源码 发表时间: 2018-09-09 13:16:36
说到Netty的FastThreadLocal类,自然而然的想到JDK的ThreadLocal,为什么Netty觉得ThreadLocal不好?不够快吗?那么这里直接说下ThreadLocal存在的问题。1、JDKThreadLocal的问题Thread中的ThreadLocalMap存储ThreadLocal,ThreadLocalMap内部使用ThreadLocalMap.Entry数组存储每一个ThreadLocal,存储计算和HashMap类似,要计算key的索引位置=key.threadLocalHashCode&(len-1),中间可能需要计算冲突,使用的是线程探测方法(当
类别:源码 | 阅读(2486)| 回复(0)| (0) 阅读全文>>
Tags : Netty 发表时间: 2017-08-26 14:00:24
Netty当前的版本:Userguidefor4.x-RECOMMENDEDVERSIONUserguidefor3.xUserguidefor5.x-ABANDONEDVERSION-NOTSUPPORTED4.x版本是当前官方推荐,4.x版本目前一直在维护中,值得称赞!3.x版本是比较旧的版本,跟4.x版本相比变化比较大,特别是API。5.x是被舍弃的版本,官方不再支持!Netty5.0以前是发布alpha版。听到你Netty5.0不继续开发了,这个是相当大的吃惊,目前也有一部分书籍是基于Netty5来讲的,所以给那些初学者也是很郁闷的赶脚。为啥呢?看看GitHub上怎么作者怎么回复的吧?
类别:消息队列 | 阅读(9647)| 回复(1)| (8) 阅读全文>>
Tags : netty,nio 发表时间: 2017-03-05 21:22:21
1、一个故事讲清楚NIO2、深入浅出Netty(1)
类别:Other | 阅读(1226)| 回复(0)| (0) 阅读全文>>
Tags : netty,性能优化 发表时间: 2017-01-08 12:44:32
1对于JVM启动时选取的启动参数是:-server-Xms2048m-Xmx2048m-XX:+UseParallelGC-XX:+AggressiveOpts-XX:+UseFastAccessorMethods2尽量避免小数据通信、不定长不稳定数据通信。可以通过数据拼接,报文格式设定等方式以稳定和优化吞吐量3json数据协议4静态化ChannelFactory,如果大量产生该对象,将会导致directoutofmemory5压力测试在linux下,采用ulimit-n65535才能实现较高性能ulimit-n修改并发文件访问数转:http://w800927.iteye.com/blog/
类别:消息队列 | 阅读(1718)| 回复(0)| (0) 阅读全文>>
Tags : Netty,车联网 发表时间: 2015-12-30 23:08:12
业务场景:车联网服务端使用Netty构建,接收车载终端的请求消息,然后下发给后端其它系统,最后返回应答给车载终端。故障描述:系统运行一段时间后发现服务端接收不到车载终端消息,需要尽快定位出问题原因。问题定位:首先查看服务端进程运行状态、JVM堆内存占用、CPU使用率、网络I/O等,各种资源占用率都不高,排除了系统压力过大导致请求消息无法及时处理的因素。系统资源占用示例图:排除资源耗尽等原因之外,可能导致无法接收请求消息的原因如下:1、JVM发生了长时间FullGC,导致进程暂停;2、Netty的NIO线程跑飞或者被意外阻塞,导致无法接收请求消息;3、Netty解码发生了异常,导致请求ByteB
类别:消息队列 | 阅读(3089)| 回复(0)| (0) 阅读全文>>
Tags : Netty4,心跳机制 发表时间: 2015-12-19 22:36:14
Netty4与Netty3.x的心跳机制略有不同,在Netty4中已经去掉了IdleStateAwareChannelHandler这个类,但IdleStateHandler依旧保留,只是心跳超时的触发事件的写法略有不同,Netty底层实现了一套类似信号和槽的事件通信机制。这里且看实现。首先是在SocketChannel.pipeline中注册IdleStateHandler进行心跳时间的定制:123456789101112131415161718192021222324252627282930313233//Configuretheserver.EventLoopGroupbossGroup
类别:消息队列 | 阅读(3271)| 回复(0)| (7) 阅读全文>>
Tags : Netty,RabbitMQ,消息服务 发表时间: 2015-12-08 21:08:20
Netty作为一个高性能的异步网络开发框架,可以作为各种服务的开发框架。前段时间的一个项目涉及到硬件设备实时数据的采集,采用Netty作为采集服务的实现框架,同时使用RabbitMQ作为采集服务和各个其他模块的通信消息队列,整个服务框架图如下:将业务代码和实际协议解析部分的代码抽离,得到以上一个简单的设计图,代码开源在GitHub上,简单介绍下NettyMQServer采集服务涉及到的几个关键技术点:1、设备TCP消息解析:NettyMQServer和采集设备Device之间采用TCP通信,TCP消息的解析可以使用LengthFieldBasedFrameDecoder(消息头和消息体),可以
类别:消息队列 | 阅读(2358)| 回复(0)| (2) 阅读全文>>
Tags : Netty3,Netty4,线程模型 发表时间: 2019-05-08 01:26:58
了解完了Netty4的串行化设计理念之后,我们继续看Netty3线程模型存在的问题,总结起来,它的主要问题如下:1)Inbound和Outbound实质都是I/O相关的操作,它们的线程模型竟然不统一,这给用户带来了更多的学习和使用成本;2)Outbound操作由业务线程执行,通常业务会使用线程池并行处理业务消息,这就意味着在某一个时刻会有多个业务线程同时操作ChannelHandler,我们需要对ChannelHandler进行并发保护,通常需要加锁。如果同步块的范围不当,可能会导致严重的性能瓶颈,这对开发者的技能要求非常高,降低了开发效率;3)Outbound操作过程中,例如消息编码异常,会
类别:Netty | 阅读(1315)| 回复(0)| (0) 阅读全文>>
Tags : netty3,netty4 发表时间: 2019-05-08 01:24:59
今天遇到一个人问我netty3与netty4有什么区别。因为我之前使用netty做过网络程序开发,心里还是有点谱的。很自然地就说到了一些主要区别一些术语的变化,如Upstream变为了Inbound,Downstream变为了Outboundnetty3对每个读或写的操作,还会额外创建一个新的ChannelBuffer对象,这带来了很大的GC压力,为了缓解频繁申请回收Buffer时的GC压力,引入了池化的ByteBufs,当然在使用完Buffer后要注意需使用BufUtil.release释放。那人再问,还有其它区别吗?然后我就说不上来了,惭愧。回家查阅资料,终于将这个问题又深入理解了一次,这
类别:Netty | 阅读(5328)| 回复(0)| (0) 阅读全文>>
Tags : Netty 发表时间: 2019-05-08 01:23:46
上文《Netty框架入门》说到:如果业务处理handler耗时长,将严重影响可支持的并发数。针对这一问题,经过学习,发现了可以使用ExecutionHandler来优化。先来回顾一下没有使用ExecutionHandler优化的流程:1)Boss线程(接收到客户端连接)->生成Channel->交给Worker线程池处理。2)某个被分配到任务的Worker线程->读完已接收的数据到ChannelBuffer->触发ChannelPipeline中的ChannelHandler链来处理业务逻辑。注意:执行ChannelHandler链的整个过程是同步的,如果业务逻辑的耗时
类别:Netty | 阅读(1562)| 回复(0)| (0) 阅读全文>>
Tags : Netty, switch, thread, Switch, Context 发表时间: 2017-08-26 13:10:29
用Netty开发中间件:高并发性能优化最近在写一个后台中间件的原型,主要是做消息的分发和透传。因为要用Java实现,所以网络通信框架的第一选择当然就是Netty了,使用的是Netty4版本。Netty果然效率很高,不用做太多努力就能达到一个比较高的tps。但使用过程中也碰到了一些问题,个人觉得都是比较经典而在网上又不太容易查找到相关资料的问题,所以在此总结一下。1.ContextSwitch过高压测时用nmon监控内核,发现C
类别:Java | 阅读(1009)| 回复(0)| (0) 阅读全文>>
Tags : Netty 发表时间: 2016-11-09 23:28:09
 1.Netty是什么?  Netty是一个基于JAVANIO类库的异步通信框架,它的架构特点是:异步非阻塞、基于事件驱动、高性能、高可靠性和高可定制性。  2.使用Netty能够做什么?开发异步、非阻塞的TCP网络应用程序;开发异步、非阻塞的UDP网络应用程序;开发异步文件传输应用程序;开发异步HTTP服务端和客户端应用程序;提供对多种编解码框架的集成,包括谷歌的Protobuf、Jbossmarshalling、Java序列化、压缩编解码、XML解码、字符串编解码等,这些编解码框架可以被用户直接使用;提供形式多样的编解码基础类库,可以非常方便的实现私有协议栈编解码框架的二次定制和开发;基于
类别:编程开发 | 阅读(1088)| 回复(0)| (0) 阅读全文>>
Tags : Netty,Netty源码,Reactor 发表时间: 2015-09-08 13:47:49
一:Netty、NIO、多线程?时隔很久终于又更新了!之前一直迟迟未动也是因为积累不够,后面比较难下手。过年期间@李林锋hw发布了一个Netty5.0架构剖析和源码解读,看完也是收获不少。前面的文章我们分析了Netty的结构,这次咱们来分析最错综复杂的一部分-Netty中的多线程以及NIO的应用。理清NIO与Netty的关系之前,我们必须先要来看看Reactor模式。Netty是一个典型的多线程的Reactor模式的使用,理解了这部分,在宏观上理解Netty的NIO及多线程部分就不会有什么困难了。本篇文章依然针对Netty3.7,不过因为也看过一点Netty5的源码,所以会有一点介绍。二:Re
类别:Netty | 阅读(1284)| 回复(0)| (0) 阅读全文>>
Tags : Netty,Netty源码,Channel,Pipeline 发表时间: 2015-09-04 22:58:05
Channel是理解和使用Netty的核心。Channel的涉及内容较多,这里我使用由浅入深的介绍方法。在这篇文章中,我们主要介绍Channel部分中Pipeline实现机制。为了避免枯燥,借用一下《盗梦空间》的“梦境”概念,希望大家喜欢。一层梦境:Channel实现概览在Netty里,Channel是通讯的载体,而ChannelHandler负责Channel中的逻辑处理。那么ChannelPipeline是什么呢?我觉得可以理解为ChannelHandler的容器:一个Channel包含一个ChannelPipeline,所有ChannelHandler都会注册到ChannelPipeli
类别:Netty | 阅读(1030)| 回复(0)| (0) 阅读全文>>
Tags : Netty,Netty源码 发表时间: 2015-09-03 11:34:22
上一篇文章我们概要介绍了Netty的原理及结构,下面几篇文章我们开始对Netty的各个模块进行比较详细的分析。Netty的结构最底层是buffer模块,这部分也相对独立,我们就先从buffer讲起。What:buffer二三事buffer中文名又叫缓冲区,按照维基百科的解释,是”在数据传输时,在内存里开辟的一块临时保存数据的区域”。它其实是一种化同步为异步的机制,可以解决数据传输的速率不对等以及不稳定的问题。根据这个定义,我们可以知道涉及I/O(特别是I/O写)的地方,基本会有buffer的存在。就Java来说,我们非常熟悉的OldI/O–InputStream&OutputStrea
类别:Netty | 阅读(1116)| 回复(0)| (0) 阅读全文>>
Tags : Netty,Netty源码 发表时间: 2015-09-02 19:09:30
Netty3跨越到Netty4,变化实在是大!!!看看吧,有助于你从3跳到4会比较平滑。这篇文章和你一起过下Netty的主发行版本的一些显著的改变和新特性,让你在把你的应用程序转换到新版本的时候有个概念。项目结构改变Netty的包名从org.jboss.netty改为io.netty,因为我们不在是JBoss.org的一部分了。二进制JAR包被分为了多个子模块以便用户能够从类路径中去掉非必需的特性。当前的结构如下:模块描述nettyprojectparentcommonutilityandloggingbufferbufferAPItransportchannelAPIanditscoreim
类别:Netty | 阅读(1472)| 回复(0)| (0) 阅读全文>>
Tags : Netty,Netty源码 发表时间: 2015-08-31 20:10:17
Netty和Mina是Java世界非常知名的通讯框架。它们都出自同一个作者,Mina诞生略早,属于Apache基金会,而Netty开始在Jboss名下,后来出来自立门户netty.io。关于Mina已有@FrankHui的Mina系列文章,我正好最近也要做一些网络方面的开发,就研究一下Netty的源码,顺便分享出来了。Netty目前有两个分支:4.x和3.x。4.0分支重写了很多东西,并对项目进行了分包,规模比较庞大,入手会困难一些,而3.x版本则已经被广泛使用。本系列文章针对netty3.7.0final。起:Netty是什么大概用Netty的,无论新手还是老手,都知道它是一个“网络通讯框架
类别:Netty | 阅读(1223)| 回复(0)| (0) 阅读全文>>