Netty就是这么回事(一)

写在开头:Netty是个什么玩意?这里摘抄官网的一段话:Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。

也就是说,Netty 是一个基于NIO的客户、服务器端编程框架,使用Netty 可以确保你快速和简单的开发出一个网络应用,例如实现了某种协议的客户,服务端应用。Netty相当简化和流线化了网络应用的编程开发过程,例如,TCP和UDP的socket服务开发。

总结一句话:Netty是用于开发客户端、服务端通信系统的一套框架。

我们学习Netty能用来干什么呢?或者说有哪些我们常用的东西使用Netty开发的呢?举两个例子:Hadoop和dubbo,Hadoop底层使用netty做通信架构的,dubbo底层也是用netty写的。netty在中间件系统开发中用的特别多,可能你会认为我用不到啊,我平时都是SofaMVC或者SpringMVC,Mybatis,Spring一类的,然后基本上都是和数据库打交道,天天crud。对,说的没错,但是你别忘了,互联网的技术本质其实就是通信,你操作数据库其实也是在不断和数据库在通信,而且随着系统规模增大,大到现有的框架已经不能满足要求了,那么你就需要开发自己的通信系统。

在没有Netty之前我们是怎么开发通信系统的,记得以前做过一个项目,是替有关部门做一个车辆监控系统,每个车上面有个GPS设备(与卫星通信的专业设备),他们希望能够监控车辆的运行状态。当时在做服务端的时候用的是BIO框架,也就是阻塞IO,采用一端一线程来解决,在开发的时候遇到了很多坑,比如说客户端(GPS模块)与服务端链接超时,网络闪断,板报读写,网络拥塞等,并且一台机器的线程数有限,还好当时只监控500辆车,当时遇到的最恶心的是GPS这个模块他们用了一个厂家做的嵌入式设备,因为我以前是开发单片机的,对着还比较了解,当时他们的协议栈有问题,虽然客户端与服务器连接断了,但是服务器这边还是现实连接着,后来发现是他们通过基站连接着服务器,总之,特别多的问题。基本上好多代码都不是去解决业务本身而且在构建一个通信框架,这当然不是我想要的。

再后来,使用了NIO框架,好处不用多说,单机支撑上万线程,采用linux的enpoll模型,多路io复用,但是在采用原生的NIO框架开发通信系统的时候,依旧大量代码用于构建通信框架而不是业务本身。并且一直崩溃,不稳定,这其实也是NIO框架的问题所在,主要有以下几点:

1. NIO的类库和API繁杂。

2. 需要具备其他的额外技能做铺垫。

3. 可靠性能力不齐,工作了和难度大。例如:客户端断线重连,网络闪断,半包读写,失败缓存,网络拥塞,异常码流等。

4. JDK的BUG,例如:epoll的bug会导致selector空轮询,导致CPU 100%,该问题到JDK1.7版本还是一直存在。

废话不多说,先看一个简单的采用原生NIO框架开发的服务器例子(简单)。

看完之后什么感觉,是不是特别恶心,对吧,写个简单的接受字符串程序写了这么多代码,而且也没有解决半包等问题,这岂不是要疯的节奏,那么如何解决这个问题?Netty这个犹如救世主的框架给我们带来了曙光!预知后事如何,待我下回分解。

参考书籍《netty权威指南》

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,633评论 18 139
  • 1、Netty基础入门 Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应...
    我是嘻哈大哥阅读 4,689评论 0 31
  • 1.Netty 是什么? Netty 是一个基于 JAVA NIO 类库的异步通信框架,它的架构特点是:异步非阻塞...
    kingZXY2009阅读 1,617评论 2 13
  • 不知不觉已经人到中年,少不更事的时候也走过弯路,浪费了不少时间,随着年龄的增长,终于渐渐明确了人生的方向,回...
    童画坊阅读 289评论 0 0
  • 很高兴认识简书,在这里可以写下一些自己的东西可以分享可以诉说也许会有一些同病相怜的人感同身受。 捏灭手中这只烟,...
    准备了礼物和鲜花阅读 117评论 0 0