万本电子书0元读

万本电子书0元读

顶部广告

Netty 4核心原理与手写RPC框架实战电子书

★ 《Spring 5核心原理与30个类手写实战》作者全新力作 ★ 集作者多年实战及授课经验与学员踩坑经验总结之大成 ★ 基于Netty 4,学习Dubbo、Spring Cloud等分布式技术基础必备 ★ 全网独创“手写源码学习法”,让学习源码更高效 ★ 提供基于Netty手写RPC框架、手写消息推送系统实战案例 ★ 快速掌握Bootstrap、EventLoop、Pipeline、ByteBuf等核心技术 ★ 深度剖析Netty的原理与特性,让学习Netty变得轻松易上手

售       价:¥

纸质售价:¥74.50购买纸书

649人正在读 | 2人评论 6.2

作       者:谭勇德(Tom)

出  版  社:电子工业出版社

出版时间:2020-03-01

字       数:16.8万

所属分类: 科技 > 计算机/网络 > 程序设计

温馨提示:此类商品不支持退换货,不支持下载打印

为你推荐

  • 读书简介
  • 目录
  • 累计评论(1条)
  • 读书简介
  • 目录
  • 累计评论(1条)
《Netty 4核心原理与手写RPC框架实战》首先从硬件层面深分析网络通信原理,结合Java对网络I/O的API实现,将理论与实践串联起来,帮助大家透彻理解网络通信的起源,然后介绍Netty产生的背景并基于Netty手写Tomcat和RPC框架,帮助大家初步了解Netty的作用,着分析Netty的核心原理和核心组件,基于Netty手写一个消息推送系统并行性能调优,*后介绍设计模式在Netty中的应用和经典的面试题分析。   如果你想深了解网络通信原理, 如果你还不知道Netty能做什么, 如果你想深了解Netty的实现原理, 如果你看源码找不到口,无从下手, 如果你想了解设计模式在Netty中的应用, 本书都能帮到你。<br/>【推荐语】<br/>★ 《Spring 5核心原理与30个类手写实战》作者全新力作 ★ 集作者多年实战及授课经验与学员踩坑经验总结之大成 ★ 基于Netty 4,学习Dubbo、Spring Cloud等分布式技术基础必备 ★ 全网独创“手写源码学习法”,让学习源码更高效 ★ 提供基于Netty手写RPC框架、手写消息推送系统实战案例 ★ 快速掌握Bootstrap、EventLoop、Pipeline、ByteBuf等核心技术 ★ 深度剖析Netty的原理与特性,让学习Netty变得轻松易上手 ★ 实用性强,是一本面向Netty应用者不可多得的实战类好书 ★ 既可作为Netty应用实战指导书,又可作为日常学习工具书   让30W 学员受益的“手写源码学习法”创者 影响100W 程序员的“Java架构师成长路径”制定人   全新力作 “手写Spring”畅销书作者   全网首发Netty 4版本的分布式通信技术必备图书 从网络通信硬件到Java I/O核心原理 从实战到面试一应俱全   一本书读懂Netty 4分布式通信技术!<br/>【作者】<br/>谭勇德(Tom)   10余年Java发经验。 咕泡学院联合创始人。 著有畅销书《Spring 5核心原理与30个类手写实战》。 在大型IT公司担任过CTO、系统架构师。 精通Java、JS、CSS、AS、PHP等;负责过多个大型分布式系统的微服务架构的技术改造;多年来对Netty框架有深研究及独特见解;发过多套企业内部UI框架和ORM框架;热衷于分享经验,共同步。 格言:不只做一个技术者,更要做一个思考者。<br/>
目录展开

前折页

书名页

版权页

序言

关于我

第1篇 I/O基础篇

第1章 网络通信原理

1.1 网络基础架构

1.1.1 C/S架构

1.1.2 C/S信息传输流程

1.2 TCP/IP五层模型详解

1.2.1 物理层

1.2.2 数据链路层

1.2.3 网络层

1.2.4 传输层

1.2.5 应用层

1.2.6 小结

1.3 网络通信实现原理

1.4 向浏览器输入URL后发生了什么

1.5 网络通信之“魂”——Socket

第2章 Java I/O演进之路

2.1 I/O的问世

2.1.1 什么是I/O

2.1.2 I/O交互流程

2.2 五种I/O通信模型

2.2.1 阻塞I/O模型

2.2.2 非阻塞I/O模型

2.2.3 多路复用I/O模型

2.2.4 信号驱动I/O模型

2.2.5 异步I/O模型

2.2.6 易混淆的概念澄清

2.2.7 各I/O模型的对比与总结

2.3 从BIO到NIO的演进

2.3.1 面向流与面向缓冲

2.3.2 阻塞与非阻塞

2.3.3 选择器在I/O中的应用

2.3.4 NIO和BIO如何影响应用程序的设计

2.4 Java AIO详解

2.4.1 AIO基本原理

2.4.2 AIO初体验

第2篇 Netty初体验

第3章 Netty与NIO之前世今生

3.1 Java NIO三件套

3.1.1 缓冲区

3.1.2 选择器

3.1.3 通道

3.2 NIO源码初探

3.3 反应堆

3.4 Netty与NIO

3.4.1 Netty支持的功能与特性

3.4.2 Netty采用NIO而非AIO的理由

第4章 基于Netty手写Tomcat

4.1 环境准备

4.1.1 定义GPServlet抽象类

4.1.2 创建用户业务代码

4.1.3 完成web.properties配置

4.2 基于传统I/O手写Tomcat

4.2.1 创建GPRequest对象

4.2.2 创建GPResponse对象

4.2.3 创建GPTomcat启动类

4.3 基于Netty重构Tomcat实现

4.3.1 重构GPTomcat逻辑

4.3.2 重构GPRequest逻辑

4.3.3 重构GPResponse逻辑

4.3.4 运行效果演示

第5章 基于Netty重构RPC框架

5.1 RPC概述

5.2 环境预设

5.3 代码实战

5.3.1 创建API模块

5.3.2 创建自定义协议

5.3.3 实现Provider业务逻辑

5.3.4 完成Registry服务注册

5.3.5 实现Consumer远程调用

5.3.6 Monitor监控

5.4 运行效果演示

第3篇 Netty核心篇

第6章 Netty高性能之道

6.1 背景介绍

6.1.1 Netty惊人的性能数据

6.1.2 传统RPC调用性能差的“三宗罪”

6.1.3 Netty高性能的三个主题

6.2 Netty高性能之核心法宝

6.2.1 异步非阻塞通信

6.2.2 零拷贝

6.2.3 内存池

6.2.4 高效的Reactor线程模型

6.2.5 无锁化的串行设计理念

6.2.6 高效的并发编程

6.2.7 对高性能的序列化框架的支持

6.2.8 灵活的TCP参数配置能力

第7章 揭开Bootstrap的神秘面纱

7.1 客户端Bootstrap

7.1.1 Channel简介

7.1.2 NioSocketChannel的创建

7.1.3 客户端Channel的初始化

7.1.4 Unsafe属性的初始化

7.1.5 ChannelPipeline的初始化

7.1.6 EventLoop的初始化

7.1.7 将Channel注册到Selector

7.1.8 Handler的添加过程

7.1.9 客户端发起连接请求

7.2 服务端ServerBootstrap

7.2.1 NioServerSocketChannel的创建

7.2.2 服务端Channel的初始化

7.2.3 服务端ChannelPipeline的初始化

7.2.4 将服务端Channel注册到Selector

7.2.5 bossGroup与workerGroup

7.2.6 服务端Selector事件轮询

7.2.7 Netty解决JDK空轮询Bug

7.2.8 Netty对Selector中KeySet的优化

7.2.9 Handler的添加过程

第8章 大名鼎鼎的EventLoop

8.1 EventLoopGroup与Reactor

8.1.1 再谈Reactor线程模型

8.1.2 EventLoopGroup与Reactor关联

8.1.3 EventLoopGroup的实例化

8.2 任务执行者EventLoop

8.2.1 NioEventLoop的实例化过程

8.2.2 EventLoop与Channel的关联

8.2.3 EventLoop的启动

第9章 Netty大动脉Pipeline

9.1 Pipeline设计原理

9.1.1 Channel与ChannelPipeline

9.1.2 再谈ChannelPipeline的初始化

9.1.3 ChannelInitializer的添加

9.1.4 自定义ChannelHandler的添加过程

9.1.5 给ChannelHandler命名

9.1.6 ChannelHandler的默认命名规则

9.2 Pipeline的事件传播机制

9.2.1 Outbound事件传播方式

9.2.2 Inbound事件传播方式

9.2.3 小结

9.3 Handler的各种“姿势”

9.3.1 ChannelHandlerContext

9.3.2 Channel的生命周期

9.3.3 ChannelHandler常用的API

9.3.4 ChannelInboundHandler

第10章 异步处理双子星Future与Promise

10.1 异步结果Future

10.2 异步执行Promise

第11章 Netty内存分配ByteBuf

11.1 初识ByteBuf

11.1.1 ByteBuf的基本结构

11.1.2 ByteBuf的重要API

11.1.3 ByteBuf的基本分类

11.2 ByteBufAllocator内存管理器

11.3 非池化内存分配

11.3.1 堆内内存的分配

11.3.2 堆外内存的分配

11.4 池化内存分配

11.4.1 PooledByteBufAllocator简述

11.4.2 DirectArena内存分配流程

11.4.3 内存池的内存规格

11.4.4 命中缓存的分配

11.4.5 Page级别的内存分配

11.4.6 SubPage级别的内存分配

11.4.7 内存池ByteBuf的内存回收

11.4.8 SocketChannel读取ByteBuf的过程

第12章 Netty编解码的艺术

12.1 什么是拆包、粘包

12.1.1 TCP拆包、粘包

12.1.2 粘包问题的解决策略

12.2 什么是编解码

12.2.1 编解码技术

12.2.2 Netty为什么要提供编解码框架

12.3 Netty中常用的解码器

12.3.1 ByteToMessageDecoder抽象解码器

12.3.2 LineBasedFrameDecoder行解码器

12.3.3 DelimiterBasedFrameDecoder分隔符解码器

12.3.4 FixedLengthFrameDecoder固定长度解码器

12.3.5 LengthFieldBasedFrameDecoder通用解码器

12.4 Netty编码器原理和数据输出

12.4.1 WriteAndFlush事件传播

12.4.2 MessageToByteEncoder抽象编码器

12.4.3 写入Buffer队列

12.4.4 刷新Buffer队列

12.4.5 数据输出回调

12.5 自定义编解码

12.5.1 MessageToMessageDecoder抽象解码器

12.5.2 MessageToMessageEncoder抽象编码器

12.5.3 ObjectEncoder序列化编码器

12.5.4 LengthFieldPrepender通用编码器

第4篇 Netty实战篇

第13章 基于Netty手写消息推送系统

13.1 环境搭建

13.2 多协议通信设计

13.2.1 自定义协议规则

13.2.2 自定义编解码器

13.2.3 对HTTP的支持

13.2.4 对自定义协议的支持

13.2.5 对WebSocket协议的支持

13.3 服务端逻辑处理

13.3.1 多协议串行处理

13.3.2 服务端用户中心

13.4 客户端控制台处理

13.4.1 控制台接入代码

13.4.2 控制台消息处理

13.5 客户端Web页面交互实现

13.5.1 Web页面设计

13.5.2 WebSocket接入

13.5.3 登录和退出

13.5.4 发送文字信息

13.5.5 发送图片表情

13.5.6 发送鲜花雨特效

第14章 Netty高性能调优工具类解析

14.1 多线程共享FastThreadLocal

14.1.1 FastThreadLocal的使用和创建

14.1.2 FastThreadLocal的设值

14.2 Recycler对象回收站

14.2.1 Recycler的使用和创建

14.2.2 从Recycler中获取对象

14.2.3 相同线程内的对象回收

14.2.4 不同线程间的对象回收

14.2.5 获取不同线程间释放的对象

第15章 单机百万连接性能调优

15.1 模拟Netty单机连接瓶颈

15.2 单机百万连接调优解决思路

15.2.1 突破局部文件句柄限制

15.2.2 突破全局文件句柄限制

15.3 Netty应用级别的性能调优

15.3.1 Netty应用级别的性能瓶颈复现

15.3.2 Netty应用级别的性能调优方案

第16章 设计模式在Netty中的应用

16.1 单例模式源码举例

16.2 策略模式源码举例

16.3 装饰者模式源码举例

16.4 观察者模式源码举例

16.5 迭代器模式源码举例

16.6 责任链模式源码举例

16.7 工厂模式源码举例

第17章 Netty经典面试题集锦

17.1 基础知识部分

17.1.1 TCP和UDP的根本区别

17.1.2 TCP如何保证可靠传输

17.1.3 Netty能解决什么问题

17.1.4 选用Netty作为通信组件框架的举例

17.1.5 Netty有哪些主要组件,它们之间有什么关联

17.2 高级特性部分

17.2.1 相较同类框架,Netty有哪些优势

17.2.2 Netty的高性能体现在哪些方面

17.2.3 默认情况下Netty起多少线程,何时启动

17.2.4 Netty有几种发送消息的方式

17.2.5 Netty支持哪些心跳类型设置

17.2.6 Netty和Tomcat的区别

17.2.7 在实际应用中,如何确定要使用哪些编解码器

后折页

累计评论(1条) 1个书友正在讨论这本书 发表评论

发表评论

发表评论,分享你的想法吧!

买过这本书的人还买过

读了这本书的人还在读

回顶部