当前位置:首页 > 工业技术
Netty权威指南  第2版
Netty权威指南  第2版

Netty权威指南 第2版PDF电子书下载

工业技术

  • 电子书积分:17 积分如何计算积分?
  • 作 者:李林锋著作
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2015
  • ISBN:9787121258015
  • 页数:554 页
图书介绍:本书介绍了目前最流行的NIO通信框架Netty,入门篇通过大量的入门级例子可以让初学者快速的上手,了解并使用Netty;中级篇通过关键模块的源码分析,让中高级读者能够了解Netty的技术实现,更好的使用、定制和维护Netty;高级篇通过对Netty的架构做深入剖析,让架构师和设计师能够从架构层了解NIO框架的架构原理,为后续相关领域的架构设计提供帮助和指导。本次为第二版,在第一版的基础上解决了图片不清晰、代码篇幅等方面的不足之处,并且删除了部分内容,加入作者最新实战经验总结。
《Netty权威指南 第2版》目录

基础篇 走进Java NIO 2

第1章 Java的I/O演进之路 2

1.1 I/O基础入门 3

1.1.1 Linux网络I/O模型简介 3

1.1.2 I/O多路复用技术 6

1.2 Java的I/O演进 8

1.3 总结 10

第2章 NIO入门 11

2.1 传统的BIO编程 11

2.1.1 BIO通信模型图 12

2.1.2 同步阻塞式I/O创建的TimeServer源码分析 13

2.1.3 同步阻塞式I/O创建的TimeClient源码分析 16

2.2 伪异步I/O编程 18

2.2.1 伪异步I/O模型图 19

2.2.2 伪异步I/O创建的TimeServer源码分析 19

2.2.3 伪异步I/O弊端分析 21

2.3 NIO编程 24

2.3.1 NIO类库简介 24

2.3.2 NIO服务端序列图 28

2.3.3 NIO创建的TimeServer源码分析 30

2.3.4 NIO客户端序列图 36

2.3.5 NIO创建的TimeClient源码分析 39

2.4 AIO编程 45

2.4.1 AIO创建的TimeServer源码分析 46

2.4.2 AIO创建的TimeClient源码分析 51

2.4.3 AIO版本时间服务器运行结果 56

2.5 4种I/O的对比 58

2.5.1 概念澄清 58

2.5.2 不同I/O模型对比 59

2.6 选择Netty的理由 60

2.6.1 不选择Java原生NIO编程的原因 61

2.6.2 为什么选择Netty 62

2.7 总结 63

入门篇 Netty NIO开发指南 66

第3章 Netty入门应用 66

3.1 Netty开发环境的搭建 66

3.1.1 下载Netty的软件包 67

3.1.2 搭建Netty应用工程 67

3.2 Netty服务端开发 68

3.3 Netty客户端开发 73

3.4 运行和调试 76

3.4.1 服务端和客户端的运行 76

3.4.2 打包和部署 77

3.5 总结 77

第4章 TCP粘包/拆包问题的解决之道 79

4.1 TCP粘包/拆包 79

4.1.1 TCP粘包/拆包问题说明 80

4.1.2 TCP粘包/拆包发生的原因 80

4.1.3 粘包问题的解决策略 81

4.2 未考虑TCP粘包导致功能异常案例 82

4.2.1 TimeServer的改造 82

4.2.2 TimeClient的改造 83

4.2.3 运行结果 84

4.3 利用LineBasedFrameDecoder解决TCP粘包问题 85

4.3.1 支持TCP粘包的TimeServer 86

4.3.2 支持TCP粘包的TimeClient 88

4.3.3 运行支持TCP粘包的时间服务器程序 90

4.3.4 LineBasedFrameDecoder和StringDecoder的原理分析 91

4.4 总结 92

第5章 分隔符和定长解码器的应用 93

5.1 DelimiterBasedFrameDecoder应用开发 94

5.1.1 DelimiterBasedFrameDecoder服务端开发 94

5.1.2 DelimiterBasedFrameDecoder客户端开发 97

5.1.3 运行DelimiterBasedFrameDecoder服务端和客户端 99

5.2 FixedLengthFrameDecoder应用开发 101

5.2.1 FixedLengthFrameDecoder服务端开发 101

5.2.2 利用telnet命令行测试EchoServer服务端 103

5.3 总结 104

中级篇 Netty编解码开发指南 106

第6章 编解码技术 106

6.1 Java序列化的缺点 107

6.1.1 无法跨语言 107

6.1.2 序列化后的码流太大 107

6.1.3 序列化性能太低 110

6.2 业界主流的编解码框架 113

6.2.1 Google的Protobuf介绍 113

6.2.2 Facebook的Thrift介绍 115

6.2.3 JBoss Marshalling介绍 116

6.3 总结 117

第7章 MessagePack编解码 118

7.1 MessagePack介绍 118

7.1.1 MessagePack多语言支持 119

7.1.2 MessagePack Java API介绍 119

7.1.3 MessagePack开发包下载 120

7.2 MessagePack编码器和解码器开发 120

7.2.1 MessagePack编码器开发 120

7.2.2 MessagePack解码器开发 121

7.2.3 功能测试 121

7.3 粘包/半包支持 124

7.4 总结 127

第8章 Google Protobuf编解码 128

8.1 Protobuf的入门 129

8.1.1 Protobuf开发环境搭建 129

8.1.2 Protobuf编解码开发 131

8.1.3 运行Protobuf例程 133

8.2 Netty的Protobuf服务端开发 133

8.2.1 Protobuf版本的图书订购服务端开发 134

8.2.2 Protobuf版本的图书订购客户端开发 136

8.2.3 Protobuf版本的图书订购程序功能测试 139

8.3 Protobuf的使用注意事项 140

8.4 总结 142

第9章 JBoss Marshalling编解码 143

9.1 Marshalling开发环境准备 143

9.2 Netty的Marshalling服务端开发 144

9.3 Netty的Marshalling客户端开发 147

9.4 运行Marshalling客户端和服务端例程 149

9.5 总结 150

高级篇 Netty多协议开发和应用 154

第10章 HTTP协议开发应用 154

10.1 HTTP协议介绍 155

10.1.1 HTTP协议的URL 155

10.1.2 HTTP请求消息(HttpRequest) 155

10.1.3 HTTP响应消息(HttpResponse) 158

10.2 Netty HTTP服务端入门开发 159

10.2.1 HTTP服务端例程场景描述 160

10.2.2 HTTP服务端开发 160

10.2.3 Netty HTTP文件服务器例程运行结果 166

10.3 Netty HTTP+XML协议栈开发 170

10.3.1 开发场景介绍 171

10.3.2 HTTP+XML协议栈设计 174

10.3.3 高效的XML绑定框架JiBx 175

10.3.4 HTTP+XML编解码框架开发 183

10.3.5 HTTP+XML协议栈测试 199

10.3.6 小结 201

10.4 总结 202

第11章 WebSocket协议开发 203

11.1 HTTP协议的弊端 204

11.2 WebSocket入门 204

11.2.1 WebSocket背景 205

11.2.2 WebSocket连接建立 206

11.2.3 WebSocket生命周期 207

11.2.4 WebSocket连接关闭 208

11.3 Netty WebSocket协议开发 209

11.3.1 WebSocket服务端功能介绍 209

11.3.2 WebSocket服务端开发 210

11.3.3 运行WebSocket服务端 218

11.4 总结 219

第12章 私有协议栈开发 221

12.1 私有协议介绍 221

12.2 Netty协议栈功能设计 223

12.2.1 网络拓扑图 223

12.2.2 协议栈功能描述 224

12.2.3 通信模型 224

12.2.4 消息定义 225

12.2.5 Netty协议支持的字段类型 226

12.2.6 Netty协议的编解码规范 227

12.2.7 链路的建立 229

12.2.8 链路的关闭 230

12.2.9 可靠性设计 230

12.2.10 安全性设计 232

12.2.11 可扩展性设计 232

12.3 Netty协议栈开发 233

12.3.1 数据结构定义 233

12.3.2 消息编解码 237

12.3.3 握手和安全认证 241

12.3.4 心跳检测机制 245

12.3.5 断连重连 248

12.3.6 客户端代码 249

12.3.7 服务端代码 251

12.4 运行协议栈 252

12.4.1 正常场景 252

12.4.2 异常场景:服务端宕机重启 253

12.4.3 异常场景:客户端宕机重启 256

12.5 总结 256

第13章 服务端创建 258

13.1 原生NIO类库的复杂性 259

13.2 Netty服务端创建源码分析 259

13.2.1 Netty服务端创建时序图 260

13.2.2 Netty服务端创建源码分析 263

13.3 客户端接入源码分析 272

13.4 总结 275

第14章 客户端创建 276

14.1 Netty客户端创建流程分析 276

14.2.1 Netty客户端创建时序图 276

14.2.2 Netty客户端创建流程分析 277

14.2 Netty客户端创建源码分析 278

14.2.1 客户端连接辅助类Bootstrap 278

14.2.2 客户端连接操作 281

14.2.3 异步连接结果通知 283

14.2.4 客户端连接超时机制 284

14.3 总结 286

源码分析篇 Netty功能介绍和源码分析 288

第15章 ByteBuf和相关辅助类 288

15.1 ByteBuf功能说明 288

15.1.1 ByteBuf的工作原理 289

15.1.2 ByteBuf的功能介绍 294

15.2 ByteBuf源码分析 308

15.2.1 ByteBuf的主要类继承关系 309

15.2.2 AbstractByteBuf源码分析 310

15.2.3 AbstractReferenceCountedByteBuf源码分析 319

15.2.4 UnpooledHeapByteBuf源码分析 321

15.2.5 PooledByteBuf内存池原理分析 326

15.2.6 PooledDirectByteBuf源码分析 329

15.3 ByteBuf相关的辅助类功能介绍 332

15.3.1 ByteBufHolder 332

15.3.2 ByteBufAllocator 333

15.3.3 CompositeByteBuf 334

15.3.4 ByteBufUtil 336

15.4 总结 337

第16章 Channel和Unsafe 338

16.1 Channel功能说明 338

16.1.1 Channel的工作原理 339

16.1.2 Channel的功能介绍 340

16.2 Channel源码分析 343

16.2.1 Channel的主要继承关系类图 343

16.2.2 AbstractChannel源码分析 344

16.2.3 AbstractNioChannel源码分析 347

16.2.4 AbstractNioByteChannel源码分析 350

16.2.5 AbstractNioMessageChannel源码分析 353

16.2.6 AbstractNioMessageServerChannel源码分析 354

16.2.7 NioServerSocketChannel源码分析 355

16.2.8 NioSocketChannel源码分析 358

16.3 Unsafe功能说明 364

16.4 Unsafe源码分析 365

16.4.1 Unsafe继承关系类图 365

16.4.2 AbstractUnsafe源码分析 366

16.4.3 AbstractNioUnsafe源码分析 375

16.4.4 NioByteUnsafe源码分析 379

16.5 总结 387

第17章 ChannelPipeline和ChannelHandler 388

17.1 ChannelPipeline功能说明 389

17.1.1 ChannelPipeline的事件处理 389

17.1.2 自定义拦截器 391

17.1.3 构建pipeline 392

17.1.4 ChannelPipeline的主要特性 393

17.2 ChannelPipeline源码分析 393

17.2.1 ChannelPipeline的类继承关系图 393

17.2.2 ChannelPipeline对ChannelHandler的管理 393

17.2.3 ChannelPipeline的inbound事件 396

17.2.4 ChannelPipeline的outbound事件 397

17.3 ChannelHandler功能说明 398

17.3.1 ChannelHandlerAdapter功能说明 399

17.3.2 ByteToMessageDecoder功能说明 399

17.3.3 MessageToMessageDecoder功能说明 400

17.3.4 LengthFieldBasedFrameDecoder功能说明 400

17.3.5 MessageToByteEncoder功能说明 404

17.3.6 MessageToMessageEncoder功能说明 404

17.3.7 LengthFieldPrepender功能说明 405

17.4 ChannelHandler源码分析 406

17.4.1 ChannelHandler的类继承关系图 406

17.4.2 ByteToMessageDecoder源码分析 407

17.4.3 MessageToMessageDecoder源码分析 410

17.4.4 LengthFieldBasedFrameDecoder源码分析 411

17.4.5 MessageToByteEncoder源码分析 415

17.4.6 MessageToMessageEncoder源码分析 416

17.4.7 LengthFieldPrepender源码分析 417

17.5 总结 418

第18章 EventLoop和EventLoopGroup 419

18.1 Netty的线程模型 419

18.1.1 Reactor单线程模型 420

18.1.2 Reactor多线程模型 421

18.1.3 主从Reactor多线程模型 422

18.1.4 Netty的线程模型 423

18.1.5 最佳实践 424

18.2 NioEventLoop源码分析 425

18.2.1 NioEventLoop设计原理 425

18.2.2 NioEventLoop继承关系类图 426

18.2.3 NioEventLoop 427

18.3 总结 436

第19章 Future和Promise 438

19.1 Future功能 438

19.2 ChannelFuture源码分析 443

19.3 Promise功能介绍 445

19.4 Promise源码分析 447

19.4.1 Promise继承关系图 447

19.4.2 DefaultPromise 447

19.5 总结 449

架构和行业应用篇 Netty高级特性 452

第20章 Netty架构剖析 452

20.1 Netty逻辑架构 452

20.1.1 Reactor通信调度层 453

20.1.2 职责链ChannelPipeline 453

20.1.3 业务逻辑编排层(Service ChannelHandler) 454

20.2 关键架构质量属性 454

20.2.1 高性能 454

20.2.2 可靠性 457

20.2.3 可定制性 460

20.2.4 可扩展性 460

20.3 总结 460

第21章 Java多线程编程在Netty中的应用 461

21.1 Java内存模型与多线程编程 461

21.1.1 硬件的发展和多任务处理 461

21.1.2 Java内存模型 462

21.2 Netty的并发编程实践 464

21.2.1 对共享的可变数据进行正确的同步 464

21.2.2 正确使用锁 465

21.2.3 volatile的正确使用 467

21.2.4 CAS指令和原子类 470

21.2.5 线程安全类的应用 472

21.2.6 读写锁的应用 476

21.2.7 线程安全性文档说明 477

21.2.8 不要依赖线程优先级 478

21.3 总结 479

第22章 高性能之道 480

22.1 RPC调用性能模型分析 480

22.1.1 传统RPC调用性能差的三宗罪 480

22.1.2 I/O通信性能三原则 481

22.2 Netty高性能之道 482

22.2.1 异步非阻塞通信 482

22.2.2 高效的Reactor线程模型 482

22.2.3 无锁化的串行设计 485

22.2.4 高效的并发编程 486

22.2.5 高性能的序列化框架 486

22.2.6 零拷贝 487

22.2.7 内存池 491

22.2.8 灵活的TCP参数配置能力 494

22.3 主流NIO框架性能对比 495

22.4 总结 497

第23章 可靠性 498

23.1 可靠性需求 498

23.1.1 宕机的代价 498

23.1.2 Netty可靠性需求 499

23.2 Netty高可靠性设计 500

23.2.1 网络通信类故障 500

23.2.2 链路的有效性检测 507

23.2.3 Reactor线程的保护 510

23.2.4 内存保护 513

23.2.5 流量整形 516

23.2.6 优雅停机接口 519

23.3 优化建议 520

23.3.1 发送队列容量上限控制 520

23.3.2 回推发送失败的消息 521

23.4 总结 521

第24章 安全性 522

24.1 严峻的安全形势 522

24.1.1 OpenSSL Heart bleed漏洞 522

24.1.2 安全漏洞的代价 523

24.1.3 Netty面临的安全风险 523

24.2 Netty SSL安全特性 525

24.2.1 SSL单向认证 525

24.2.2 SSL双向认证 532

24.2.3 第三方CA认证 536

24.3 Netty SSL源码分析 538

24.3.1 客户端 538

24.3.2 服务端 541

24.3.3 消息读取 544

24.3.4 消息发送 545

24.4 Netty扩展的安全特性 546

24.4.1 IP地址黑名单机制 547

24.4.2 接入认证 548

24.4 总结 550

第25章 Netty未来展望 551

25.1 应用范围 551

25.2 技术演进 552

25.3 社区活跃度 552

25.4 Road Map 552

25.5 总结 553

附录A Netty参数配置表 554

相关图书
作者其它书籍
返回顶部