新書推薦:
《
不止江湖
》
售價:NT$
449.0
《
天才留步!——从文艺复兴到新艺术运动(一本关于艺术天才的鲜活故事集,聚焦艺术史的高光时刻!)
》
售價:NT$
704.0
《
双城史
》
售價:NT$
505.0
《
冯友兰和青年谈心系列:不是问题的问题(哲学大师冯友兰和年轻人谈心,命运解读)
》
售價:NT$
254.0
《
月与蟹(青鲤文库)荣获第144届直木奖,天才推理作家经典作品全新译本。一部青春狂想曲,带你登上心理悬疑之巅。
》
售價:NT$
230.0
《
索恩丛书·盛清统治下的太监与皇帝
》
售價:NT$
403.0
《
透过器物看历史(全6册)
》
售價:NT$
2234.0
《
我在台北故宫博物院读名画
》
售價:NT$
500.0
|
編輯推薦: |
互联网一线专家多年经验总结
基于实际案例编写,实用性强
深入解读Netty底层核心源码及架构设计
快速掌握Netty 源码及编程技巧
涵盖Netty基础知识及高级应用、线上问题分析和性能调优等方方面面
|
內容簡介: |
Netty涉及多线程技术、复杂数据结构与内存管理模型,它运用了各种设计模式及一些TCP的底层技术。本书对这些难点一一进行攻破,让读者快速掌握相关知识。本书包含大量的分布式底层架构的编写,涉及多线程、负载均衡算法、性能调优、线上问题紧急处理等内容。本书通过非常简易的代码来讲解Netty在企业中的实际用法,通过对实例进行调试的方式对Netty源码进行了详细的剖析,力图使读者通过实际操作快速入门,并深入了解Netty底层的各个组件。本书适合有一定Java基础的架构师、设计师、开发工程师、测试工程师,以及对Java NIO框架、Netty感兴趣的相关人士阅读。
|
關於作者: |
刘耀林,从2012 年到2017 年一直从事Java 后台服务开发工作,在此期间曾创办过大象在线分享网,网名夜行侠老师,录制过Netty 源码剖析视频教学,同时在多家互联网公司担任过系统架构师,有丰富的Java 工作实战经验。从2018 年至今转型从事大数据研发工作,对Flink、Hbase、Kafka、Elasticsearch 等大数据组件有深入的研究。
|
目錄:
|
第1章 Netty基础篇 1
1.1 Netty概述 1
1.2 Netty服务端构建 2
1.3 Netty客户端的运用 6
1.3.1 Java多线程交互 6
1.3.2 Netty客户端与服务端短连接 12
1.3.3 Netty客户端与服务端长连接 18
1.4 小结 22
第2章 原理部分 23
2.1 多路复用器 23
2.1.1 NIO与BIO的区别 24
2.1.2 epoll模型与select模型的区别 25
2.2 Netty线程模型 27
2.3 编码和解码 28
2.4 序列化 30
2.4.1 Protobuf序列化 30
2.4.2 Kryo序列化 31
2.5 零拷贝 33
2.6 背压 34
2.6.1 TCP窗口 34
2.6.2 Flink实时计算引擎的背压原理 36
2.7 小结 39
第3章 分布式RPC 40
3.1 Netty整合Spring 41
3.2 采用Netty实现一套RPC框架 43
3.3 分布式RPC的构建 52
3.3.1 服务注册与发现 53
3.3.2 动态代理 68
第4章 Netty核心组件源码剖析 81
4.1 NioEventLoopGroup源码剖析 82
4.2 NioEventLoop源码剖析 86
4.2.1 NioEventLoop开启Selector 87
4.2.2 NioEventLoop的run方法解读 89
4.2.3 NioEventLoop 重新构建Selector和Channel的注册 98
4.3 Channel源码剖析 100
4.3.1 AbstractChannel源码剖析 101
4.3.2 AbstractNioChannel源码剖析 102
4.3.3 AbstractNioByteChannel源码剖析 107
4.3.4 AbstractNioMessageChannel源码剖析 112
4.3.5 NioSocketChannel源码剖析 116
4.3.6 NioServerSocketChannel源码剖析 119
4.4 Netty缓冲区ByteBuf源码剖析 120
4.4.1 AbstractByteBuf源码剖析 122
4.4.2 AbstractReferenceCountedByteBuf源码剖析 127
4.4.3 ReferenceCountUpdater源码剖析 129
4.4.4 CompositeByteBuf源码剖析 134
4.4.5 PooledByteBuf源码剖析 145
4.5 Netty内存泄漏检测机制源码剖析 151
4.5.1 内存泄漏检测原理 152
4.5.2 内存泄漏器ResourceLeakDetector源码剖析 153
4.6 小结 164
第5章 Netty读写请求源码剖析 165
5.1 ServerBootstrap启动过程剖析 165
5.2 Netty对IO就绪事件的处理 172
5.2.1 NioEventLoop就绪处理之OP_ACCEPT 172
5.2.2 NioEventLoop就绪处理之OP_READ(一) 175
5.2.3 NioEventLoop就绪处理之OP_READ(二) 182
第6章 Netty内存管理 195
6.1 Netty内存管理策略介绍 195
6.2 PoolChunk内存分配 197
6.2.1 PoolChunk分配大于或等于8KB的内存 197
6.2.2 PoolChunk分配小于8KB的内存 201
6.3 PoolSubpage内存分配与释放 205
6.4 PoolArena内存管理 214
6.5 RecvByteBufAllocator内存分配计算 223
6.6 小结 227
第7章 Netty时间轮高级应用 228
7.1 Netty时间轮的解读 229
7.1.1 时间轮源码剖析之初始化构建 230
7.1.2 时间轮源码剖析之Worker启动线程 236
7.2 Netty时间轮改造方案制订 239
7.3 时间轮高级应用之架构设计 241
7.4 时间轮高级应用之实战10亿级任务 243
7.5 小结 245
第8章 问题分析与性能调优 246
8.1 Netty服务在Linux服务器上的部署 246
8.2 Netty服务模拟秒杀压测 255
8.3 常见生产问题分析 264
8.4 性能调优 267
8.5 小结 270
|
內容試閱:
|
Netty是一款基于NIO(非阻塞IO)开发的网络框架,与传统BIO相比,它的并发性能得到了很大的提高,而且更加节省资源。Netty不仅封装了NIO操作的很多细节;在设计上还基于灵活、可扩展的事件驱动模型与高度可定制的线程模型,让Netty的应用更加灵活。作为一个被广泛使用的Java网络编程框架,Netty在互联网领域、大数据分布式计算领域、游戏行业、物联网行业等都得到了广泛的应用。很多流行的大数据框架的核心通信模块也都使用的是Netty,如Elasticsearch、HBase、Flink等。
为什么编写本书
如今,大数据已是互联网应用的大趋势,很多Java程序员都想转向大数据方向,而Netty不仅是大数据框架的核心,还是Java高并发中最火的框架之一。因此,学好Netty更有利于深入了解大数据框架底层源码。学习Netty,不仅要学会如何运用它,还要对其底层原理、底层代码的编程技巧有深度的了解。目前,国内Netty方面的图书较少,尤其是既有深度,又比较简洁,并有企业级通用案例的图书更是凤毛麟角,这加大了很多Java程序员向大数据方向转变的难度,本书试图弥补这一空白。
本书主要基于Netty的稳定版本Netty v4.1.38.Final(对以后的新版本也具有普适性)编写。本书的主要目的是帮助软件工程师读懂Netty v4.1.38.Final版本源码,并能开发一款类似Dubbo的分布式RPC(Remote Procedure Call,远程过程调用),以及Netty的特性在Flink分布式流式计算框架中的实际应用。在本书中,作者对平常在编程中遇到的重点、难点进行了分析,并给予了充分的论述。对于一名软件工程师来说,本书可以使他们少走弯路,并更快地掌握Netty v4.1.38.Final版本源码及编程技巧。
关于本书作者
作者从2012年到2017年一直从事Java后台服务开发工作,在此期间曾创办大象在线分享网,网名夜行侠老师,录制Netty源码剖析教学视频,同时在多家互联网公司担任系统架构师,有丰富的Java工作实战经验。2018年转型从事大数据研发工作,对Flink、HBase、Kafka、Elasticsearch等大数据组件进行了深入的研究。
本书主要内容
本书以实战为导向,深入解读Netty底层核心源码及架构设计。通过阅读本书,读者可以灵活运用Netty的特性、加深多线程实战应用、熟悉Netty的底层核心源码。全书共包含2个高级应用项目,分别为分布式RPC与10亿级任务调度和监控引擎。读者可以在实战过程中找到学习Netty的成就感,在学完Netty内存管理及Netty核心组件的源码剖析后,能够比较彻底地掌握Netty。
如何阅读本书
在阅读本书前,读者应学过Java语言、网络通信等课程,并具备并发编程的能力。本书的章节安排是依据读者循序渐进地学习Netty的顺序设立的,建议初学者从前至后阅读。由于Netty源码复杂难懂,建议读者分以下几部分阅读本书。
第一部分:以实战为主,学会Netty客户端与服务端的长连接通信,灵活运用Netty的Future机制,同时对照第3章,尝试编写一套完整的分布式RPC。 第二部分:仔细、反复地阅读Netty核心源码解读知识,主要包括NioEventLoop线程处理逻辑、Netty的Channel功能设计、ByteBuf缓冲区内存、内存泄漏检测机制。熟练掌握这部分内容有利于理解框架的整体实现原理。 第三部分:内存管理源码解读。这部分是Netty源码中最难掌握的,需要有一定的耐心。先了解jemalloc内存分配思想,再从底层PoolChunk的内存分配到上层的PoolArena对内存的整体管理。在深入学习具体的分配算法时,可把部分代码单独拿出来进行单元测试,以加深理解。 第四部分:Netty的高级应用、线上问题分析和性能调优。这部分主要是作者的一些实战经验。通过前面对Netty的运用和源码解读,读者对Netty有了一定的了解,但还缺乏线上部署经验,以及高并发大数据的实际应用经验。这部分内容采用Netty时间轮实时监控10亿级任务,运用Jmeter长连接压测分布式RPC,让读者在实际项目中更加全面和自信地使用Netty。 源码阅读非常需要耐心,通过阅读Netty源码,读者会明显感觉到自身编程能力及源码阅读能力的提升,尤其是多线程编程能力。建议读者反复阅读至少3遍以上,直至对Netty的Channel、Handler、NioEventLoop、ByteBuf的各个方法都了如指掌。
致谢
我首先要特别感谢我的妻子谭小兰,写书需要大量的时间,我起初只是以视频在线教学的方式来总结自己的经验和收获,并分享给部分学员。是她在背后默默地支持我,我才能全身心投入书稿的写作去,从而与更多想深入学习Netty的读者分享本书。
同时感谢电子工业出版社博文视点宋亚东先生对本书的重视和他们为本书所做的一切。
由于水平有限,书中难免存在不足及疏漏,敬请专家和读者批评指正。
刘耀林
2020年11月
|
|