- 畅销套餐
- 精选套餐
- 人气套餐
- 尊享套餐
- 高薪套餐
- 课程介绍
- 课程大纲
适合人群:
适合于有Java编程开发基础的人员,并且尝试进行底层架构设计的Java系统架构师。
你将会学到:
了解Netty开发框架的使用,源码设计以及各类协议(TCP、HTTP 1 ~ 3、SCTP\MQTT
课程简介:
Java语言在其最初发展时,受到同一时代硬件技术发展的限制,并没有提供良好的IO处理方案,而为了解决这一设计缺陷,JDK 1.4后开始支持了Java NIO编程开发,虽然从技术层次上给予了强大的帮助,但是由于Reactor模型之中的各类处理限制,以及各类通信协议的开发难度较高,所以并没有过多的开发人员涉足于此,大部分的Java程序员都会使用已经成熟的中间件产品,并围绕着中间件进行编程开发,图为读者列出了Netty与Java编程技术的关系,同时也阐述了其与中间件开发之间的关联。
虽然全世界互联网技术的兴起,程序人员所编写的项目,已经不再是仅仅满足基础的业务逻辑了,还应该更多的考虑到高并发的处理性能,而除了使用集群这种简单的方式之外,提升单体服务的性能就成为了行业的主流,而Java作为行业之中使用频率最为广泛的开发技术,就亟待一种更加简化的Java NIO开发模式,因此Netty诞生了。Netty诞生之后,各类的RPC开发技术也随之增加,包括国内的阿里、京东以及国外的Twitter、Facebook等也都先后基于Netty进行了各自技术产品线的研发,连带着当前的技术招聘来讲,也都已经将Netty作为了Java从业者必备的核心技术。如果你现在为止还仅仅停留在数据库层次上的基础CRUD开发,就真的需要考虑升级自己的技术栈了,否则会面临离开行业的风险。
Netty技术最为成熟的一点,是在于其可以结合JavaNIO提高通讯性能,并且使用统一标准的流程来进行各类通信协议的处理,这一点如图所示,所以在本书的讲解过程中除了会涉及到TCP、UDP以及HTTP等常用协议之外,还包含有RESP、UDT、SCTP、DNS、MQTT等协议的开发,而通过本书详细的讲解,读者也会慢慢的感受到Netty开发的简洁性以及其所拥有的魅力。可以这么讲,掌握了Netty框架后,基本上就已经掌握了打开各类网络通信协议的金钥匙。
当然如果你已经熟悉计算机专业的操作系统、计算机网络等课程内容,那么对于Netty的学习可谓是事倍功半,因为在全书的讲解中你会发现有很多科班专业课程的知识在里面,所以这也是我一直在不断跟很多学生强调的,永远不要忽视基础专业课程的重要性,因为这些基础专业知识是为你的发展打下了牢不可破的根基,所以我们为Java学习者规划了基本的学习路线
本系列课程的全部内容分为如下几个核心章节:
第1章:Netty与网络编程
该章作为序章,主要是大家介绍了网络应用开发之中的常见问题,由于TCP是当前应用的核心协议,所以本章也对TCP协议结构进行了分析,并为读者介绍了Netty技术架构。
第2章:Netty缓冲区
Java NIO编程中为了提高缓存的分配性能,提供了ByteBuffer设计,同时也涉及到了Unsafe的直接内存分配处理,因此在本章进行Netty讲解时,首先对ByteBuf结构进行了全面的分析,解释了Netty中两种缓存的分配机制,以及对于ThreadLocal设计问题的改进,在后续的所有开发中ByteBuf是一个核心结构,也是Netty开发的基础所在。
第3章:TCP与UDP编程
Netty开发框架遵从Reactor开发模型,因此对于线程池的控制就较为严格,在本章中重点分析了Netty的工作流程,并给出了完整的Netty处理架构,随后基于该结构分析了TCP协议开发中常见的问题(粘包与拆包、序列化传输等)。考虑到实际开发与设计的需要,为读者讲解了一个手工RPC技术的实现,该技术基于Protobuf与Spring Boot完成,同时基于Spring内置的代理模式进行了实现,之所以安排这样的案例,核心目的是为了阐述RPC框架的涉及原理。
第4章:HTTP服务开发
HTTP协议是当前系统架构中的核心协议,所以在本章中会基于JakartaEE技术标准的操作,讲解HTTP服务端的开发,同时使用了Redis完成分布式Session缓存,进一步解释了Netty开发与传统Web开发的区别。最后详细的分析了HTTP1、HTTP2以及HTTP3不同版本之间的差别与具体实现。
第5章:Netty应用编程
Netty已经足够高效了,但是高性能的追求者永远都在自我突破,于是Netty的内部提供了Affinity亲和线程支持,同时也可以基于不同的操作系统平台来选择处理通道。而对于常用的服务组件,例如Redis、Memcached、DNS等,Netty也都提供了与之匹配的编解码器,所以本章本着Netty应用为核心为读者讲解了各类协议的开发,并且分析了协议的特点,包括UDT、SCTP、WebSocket以及物联网开发中常用的MQTT协议。
使用Netty构建分布式开发架构,可以进行定制化处理,这样不仅安全性高,同时可维护性也较高,考虑本书所涉及到的协议较多,为了便于读者理解,给出了图所示的分布式开发架构,读者可以先以此为参考进行技术的学习。
常见问题:
问:Java NIO在那里?
答:我们提供了专门的Java基础课程内容,可以在课程列表中搜索到
问:如何获取课程源码
答:在附录之中提供了本课程的源码,可以打包下载,但是不提供课程笔记,笔记内容受到出版社版权制约,可以购买相应的实体图书。
课程大纲-Netty开发实战
第1章Netty与网络编程(55分钟4节)
第2章ByteBuf(2小时5分钟5节)
2-2
Netty整合NIO缓冲区操作Netty与JavaNIO紧密且不可分割,所以Netty缓冲区提供了JavaNIO的结构支持,本课程为读者分析了相关方法的定义,并实现了不同类型缓冲区之间的数据读写。
[15:44]开始学习2-3
ByteBufUtilByteBufUtil是一个常用的缓冲区数据处理类,本课程通过该类的定义结构对该类的使用进行说明,并讲解了十六进制传输的意义以及直接缓冲区的开辟与读写。
[22:28]开始学习2-4
PlatformDependentPlatformDependent是一个简化JVM信息处理操作的工具类,也是理解Netty内部处理机制的核心类,本课程为读者分析了该类的组成结构,并实现了直接内存数据读写。
[32:42]开始学习2-5
FastThreadLocalFastThreadLocal是Netty提供的一个高性能的数据存储工具类,本课程基于源代码的方式,为读者分析了该类与ThreadLocal的实现区别与结构关联。
[18:39]开始学习第3章ByteBufAllocator(56分钟4节)
3-1
ByteBufAllocator为了提高缓冲区的处理性能,Netty提供了缓冲区的分配管理器的支持,本课程为读者分析了ByteBufAllocator接口的实例化以及继承结构,并通过JVM参数实现了池化管理与非池化管理的切换以及复合缓冲区数据读取操作的实现。
[13:14]开始学习3-2
UnpooledByteBufAllocator非池化的缓冲区管理是一种简洁管理模式,本课程通过UnpooledByteBufAllocator源代码结构为读者分析了相关内部类的继承结构以及内存分配的具体实现。
[19:39]开始学习3-3
ByteBufAllocatorMetric高并发编程中,需要创建大量的缓存空间,为了有效的监控缓存使用率,Netty框架提供了ByteBufAllocatorMetric接口,本课程为读者分析了该接口的使用结构,并基于UnpooledByteBufAllocator实现了监控实例的获取以及内存使用信息的读取。
[14:31]开始学习第4章PooledByteBufAllocator(1小时15分钟3节)
4-1
PooledByteBufAllocatorPooledByteBufAllocator是Netty中较为常用的缓冲区分配器,本课程为读者分析了该类在使用结构上的核心架构,并通过缓冲区分配方法源代码结构进行了流程分析。
[55:12]开始学习4-2
ReferenceCounted为了便于缓冲区的重复使用,Netty提供了ReferenceCounted接口,本课程为读者分析了该接口的继承结构,并通过源代码分析了引用计数的相关实现类的作用。
[06:01]开始学习4-3
ResourceLeakDetectorNetty中为了便于内存泄漏的检测,提供了ResourceLeakDetector接口,本课程为读者讲解了Netty中内存监控的四个级别,并且基于自定义的类结构的形式,为读者分析了ResourceLeakDetector与ResourceLeakTracker追踪结构的使用。
[13:50]开始学习第5章Netty线程模型(1小时26分钟4节)
5-4
EventLoopGroup为便于EventLoop线程的管理,Netty又提供了EventLoopGroup线程池结构,本课程为读者分析了J.U.C线程池与Netty线程池的实现关联,并基于Runnable接口实现了线程池执行的调度处理。
[12:24]开始学习
“李兴华”老师的其他课程更多+