ByteBufUtil
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构建分布式开发架构,可以进行定制化处理,这样不仅安全性高,同时可维护性也较高,考虑本书所涉及到的协议较多,为了便于读者理解,给出了图所示的分布式开发架构,读者可以先以此为参考进行技术的学习。
公开笔记对他人可见,有机会被管理员评为“优质笔记”
{{ noteEditor.content.length }}/2000
讲师收到你的提问会尽快为你解答。若选择公开提问,可以获得更多学员的帮助。
课程大纲