描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111677581
本书从操作系统底层的IO原理入手,同时提供高性能开发的实战案例,是一本Java高并发编程的基础原理和实战图书。
本书共分为15章。第1~4章为高并发基础,浅显易懂地剖析高并发IO的底层原理,细致地讲解Reactor高性能模式,图文并茂地介绍Java异步回调模式。这些原理方面的基础知识非常重要,会为读者打下坚实的基础,也是日常开发Java后台应用时解决实际问题的金钥匙。第5~8章为Netty原理和实战,是本书的重中之重,主要介绍高性能通信框架Netty、Netty的重要组件、单体IM的实战设计和模块实现。第9~12章从TCP、HTTP入手,介绍客户端与服务端、服务端与服务端之间的高性能HTTP通信和WebSocket通信。第13~15章对ZooKeeper、Curator API、Redis、Jedis API的使用进行详尽的说明,以提升读者设计和开发高并发、可扩展系统的能力。
前言
自序
第1章 高并发时代的技能 1
1.1 Netty为何这么火 1
1.1.1 Netty火热的程度 1
1.1.2 Netty是面试的必杀器 2
1.2 高并发利器Redis 2
1.2.1 什么是Redis 2
1.2.2 Redis成为缓存事实标准的原因 3
1.3 分布式利器ZooKeeper 3
1.3.1 什么是ZooKeeper 3
1.3.2 ZooKeeper的优势 4
1.4 高性能HTTP通信技术 4
1.4.1 十万级以上高并发场景中的高并发HTTP通信技术 5
1.4.2 微服务之间的高并发RPC技术 6
1.5 高并发IM的综合实战 7
1.5.1 高并发IM的学习价值 8
1.5.2 庞大的应用场景 8
第2章 高并发IO的底层原理 10
2.1 IO读写的基本原理 10
2.1.1 内核缓冲区与进程缓冲区 11
2.1.2 典型的系统调用流程 11
2.2 四种主要的IO模型 13
2.2.1 同步阻塞IO 14
2.2.2 同步非阻塞IO 15
2.2.3 IO多路复用 16
2.2.4 异步IO 17
2.3 通过合理配置来支持百万级并发连接 18
第3章 Java NIO核心详解 21
3.1 Java NIO简介 21
3.1.1 NIO和OIO的对比 21
3.1.2 通道 22
3.1.3 选择器 22
3.1.4 缓冲区 23
3.2 详解NIO Buffer类及其属性 23
3.2.1 Buffer类 23
3.2.2 Buffer类的重要属性 23
3.3 详解NIO Buffer类的重要方法 26
3.3.1 allocate() 26
3.3.2 put() 27
3.3.3 flip() 27
3.3.4 get() 29
3.3.5 rewind() 30
3.3.6 mark()和reset() 32
3.3.7 clear() 33
3.3.8 使用Buffer类的基本步骤 34
3.4 详解NIO Channel类 34
3.4.1 FileChannel 35
3.4.2 使用FileChannel完成文件复制的实战案例 37
3.4.3 SocketChannel 39
3.4.4 使用SocketChannel发送文件的实战案例 41
3.4.5 DatagramChannel 43
3.4.6 使用DatagramChannel发送数据的实战案例 45
3.5 详解NIO Selector 47
3.5.1 选择器与注册 47
3.5.2 SelectableChannel 48
3.5.3 SelectionKey 48
3.5.4 选择器使用流程 48
3.5.5 使用NIO实现Discard服务器的实战案例 50
3.5.6 使用SocketChannel在服务端接收文件的实战案例 53
第4章 鼎鼎大名的Reactor模式 59
4.1 Reactor模式的重要性 59
4.1.1 为什么首先学习Reactor模式 59
4.1.2 Reactor模式简介 60
4.1.3 多线程OIO的致命缺陷 60
4.2 单线程Reactor模式 62
4.2.1 什么是单线程Reactor 62
4.2.2 单线程Reactor的参考代码 63
4.2.3 单线程Reactor模式的EchoServer的实战案例 66
4.2.4 单线程Reactor模式的缺点 69
4.3 多线程Reactor模式 69
4.3.1 多线程版本的Reactor模式演进 69
4.3.2 多线程版本Reactor的实战案例 69
4.3.3 多线程版本Handler的实战案例 72
4.4 Reactor模式的优缺点 74
第5章 Netty核心原理与基础实战 76
5.1 个Netty实战案例DiscardServer 76
5.1.1 创建个Netty项目 76
5.1.2 个Netty服务端程序 77
5.1.3 业务处理器NettyDiscardHandler 79
5.1.4 运行NettyDiscardServer 80
5.2 解密Netty中的Reactor模式 80
5.2.1 回顾Reactor模式中IO事件的处理流程 81
5.2.2 Netty中的Channel 81
5.2.3 Netty中的Reactor 82
5.2.4 Netty中的Handler 83
5.2.5 Netty中的Pipeline 84
5.3 详解Bootstrap 86
5.3.1 父子通道 86
5.3.2 EventLoopGroup 87
5.3.3 Bootstrap启动流程 88
5.3.4 ChannelOption 91
5.4 详解Channel 93
5.4.1 Channel的主要成员和方法 93
5.4.2 EmbeddedChannel 94
5.5 详解Handler 95
5.5.1 ChannelInboundHandler入站处理器 96
5.5.2 ChannelOutboundHandler出站处理器 97
5.5.3 ChannelInitializer通道初始化处理器 99
5.5.4 ChannelInboundHandler的生命周期的实战案例 99
5.6 详解Pipeline 103
5.6.1 Pipeline入站处理流程 103
移动时代、5G时代、物联网时代的大幕已经开启,新时代提升了对Java应用的高性能、高并发的要求,也抬升了Java工程师的技术台阶和面试门槛。
很多公司的面试题从某个侧面反映了生产场景的技术要求。之前只有BAT等大公司才有高并发技术相关的面试题,现在与Java项目相关的整个行业基本都涉及此类面试题。Java NIO、Reactor模式、高性能通信框架Netty、分布式锁、分布式ID、分布式缓存、高并发架构、JUC、JMM、高并发设计模式、线程池、微服务框架(如Spring Cloud、Nginx反向代理)等高并发方面的面试题,从以前的加分题变成现在的基础题。本书着重介绍Java NIO、Reactor模式、高性能通信框架Netty、ZooKeeper分布式锁、分布式ID、Redis分布式缓存、分布式IM方面的内容,以帮助大家快速掌握Java高并发的底层通信知识和分布式架构知识。
本书内容
本书实际上是《Netty、Redis、ZooKeeper高并发实战》1一书的升级版,同时也是三卷本《Java高并发核心编程》的第1卷,旨在帮助大家掌握Netty、Redis、ZooKeeper、TCP、HTTP、分布式IM的原理,为大家打下Java高并发技术的知识基础。
第1~4章从操作系统的底层原理开始,浅显易懂地揭秘高并发IO的底层原理,并介绍如何让单体Java应用支持百万级的高并发;从传统的阻塞式OIO开始,细致地解析Reactor高性能模式,介绍高性能网络开发的基础知识。这些非常底层的原理知识和基础知识非常重要,是开发过程中解决Java实际问题必不可少的。
第5~8章重点讲解Netty。目前Netty是高性能通信框架皇冠上当之无愧的明珠,是支撑其他众多著名的高并发、分布式、大数据框架底层的框架。这几章从Reactor模式入手,以“四两拨千斤”的方式为大家介绍Netty原理。同时,还将介绍如何通过Netty来解决网络编程中的重点难题,如Protobuf序列化问题、半包问题等。
第9~12章从TCP、HTTP入手,介绍客户端与服务端、服务端与服务端之间的高性能HTTP通信和WebSocket通信。这几章深入浅出地介绍TCP、HTTP、WebSocket三大常用的协议,以及如何基于Netty实现HTTP、WebSocket高性能通信。
第13章对ZooKeeper进行详细的介绍。除了全面地介绍Curator API之外,还从实战的角度出发介绍如何使用ZooKeeper设计分布式ID生成器,并对重要的SnowFlake算法进行详细的介绍。另外,还结合小故事以图文并茂的方式浅显易懂地介绍分布式锁的基本原理。
第14章从实战开发层面对Redis进行介绍,详细介绍Redis的5种数据类型、客户端操作指令、Jedis Java API。另外,还通过spring-data-redis来完成数据分布式缓存的实战案例,详尽地介绍Spring的缓存注解以及涉及的SpEL表达式语言。
第15章通过CrazyIM项目为大家介绍一个亿级流量的高并发IM系统模型,这个高并发架构的系统模型不仅仅限于IM系统,通过简单的调整和适配就可以应用于当前主流的Java后台系统。
读者对象
* 对Java NIO、高性能IO、高并发编程感兴趣的大专院校学生。
* 需要学习Java高并发技术和高并发架构的初、中级Java工程师。
* 生产项目中需要用到Netty、Redis、ZooKeeper三大框架的架构师或者项目人员。
本书源代码下载
本书的源代码可以从 https://gitee.com/crazymaker/netty_redis_zookeeper_source_code.git下载。另外,还可以登录机械工业出版社华章公司网站(www.hzbook.com)下载,方法是:先搜索到本书,然后在页面上的“资料下载”模块下载。如果下载有问题,请发送电子邮件至[email protected],邮件主题为“求Java高并发核心编程 卷1下载资源”。
勘误和支持
由于笔者水平和能力有限,书中不妥之处在所难免,希望读者提出宝贵意见和建议。本系列书的读者QQ群为104131248,目前群中已经包含了不少高质量的面试题以及开发技术难题,欢迎读者入群进行交流。
致 谢
首先感谢卞诚君老师,没有他的指导和帮助,就不会有《Netty、Redis、ZooKeeper高并发实战》一书的面世,更不会有后续的本书。
然后感谢《Netty、Redis、ZooKeeper高并发实战》的读者,是他们对该书的高度评价,激励我对图书的内容不断进行升级和完善,并终成为三卷本《Java高并发核心编程》的第1卷。
后感谢“疯狂创客圈”社群中的开发小伙伴们,他们中有很多非常有前途的技术狂人,他们对Java高并发技术的高涨热情和孜孜以求让笔者惊叹不已。欢迎大家进入“疯狂创客圈”社群(QQ群为104131248)积极“砸”问题,虽然有的技术难题笔者不一定能给出的解决方案,但坦诚、纯粹的技术交流,能让大家相互启发,产生技术灵感,拓展技术视野,并终提升技术水平。
尼 恩
2020年11月29日
评论
还没有评论。