EventLoopGroup

4871 未经授权,禁止转载了解课程
课程介绍
讨论{{interaction.discussNum ? '(' + interaction.discussNum + ')' : ''}}
适合人群
适合于有Java编程开发基础的人员,并且尝试进行底层架构设计的Java系统架构师。
你将会学到
了解Netty开发框架的使用,源码设计以及各类协议(TCP、HTTP 1 ~ 3、SCTP\MQTT
课程简介

Java语言在其最初发展时,受到同一时代硬件技术发展的限制,并没有提供良好的IO处理方案,而为了解决这一设计缺陷,JDK 1.4后开始支持了Java NIO编程开发,虽然从技术层次上给予了强大的帮助,但是由于Reactor模型之中的各类处理限制,以及各类通信协议的开发难度较高,所以并没有过多的开发人员涉足于此,大部分的Java程序员都会使用已经成熟的中间件产品,并围绕着中间件进行编程开发,图为读者列出了NettyJava编程技术的关系,同时也阐述了其与中间件开发之间的关联。

a.png

虽然全世界互联网技术的兴起,程序人员所编写的项目,已经不再是仅仅满足基础的业务逻辑了,还应该更多的考虑到高并发的处理性能,而除了使用集群这种简单的方式之外,提升单体服务的性能就成为了行业的主流,而Java作为行业之中使用频率最为广泛的开发技术,就亟待一种更加简化的Java NIO开发模式,因此Netty诞生了。Netty诞生之后,各类的RPC开发技术也随之增加,包括国内的阿里、京东以及国外的TwitterFacebook等也都先后基于Netty进行了各自技术产品线的研发,连带着当前的技术招聘来讲,也都已经将Netty作为了Java从业者必备的核心技术。如果你现在为止还仅仅停留在数据库层次上的基础CRUD开发,就真的需要考虑升级自己的技术栈了,否则会面临离开行业的风险。

b.png

Netty技术最为成熟的一点,是在于其可以结合JavaNIO提高通讯性能,并且使用统一标准的流程来进行各类通信协议的处理,这一点如图所示,所以在本书的讲解过程中除了会涉及到TCPUDP以及HTTP等常用协议之外,还包含有RESPUDTSCTPDNSMQTT等协议的开发,而通过本书详细的讲解,读者也会慢慢的感受到Netty开发的简洁性以及其所拥有的魅力。可以这么讲,掌握了Netty框架后,基本上就已经掌握了打开各类网络通信协议的金钥匙。

当然如果你已经熟悉计算机专业的操作系统、计算机网络等课程内容,那么对于Netty的学习可谓是事倍功半,因为在全书的讲解中你会发现有很多科班专业课程的知识在里面,所以这也是我一直在不断跟很多学生强调的,永远不要忽视基础专业课程的重要性,因为这些基础专业知识是为你的发展打下了牢不可破的根基,所以我们为Java学习者规划了基本的学习路线

c.png

本系列课程的全部内容分为如下几个核心章节:

第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构建分布式开发架构,可以进行定制化处理,这样不仅安全性高,同时可维护性也较高,考虑本书所涉及到的协议较多,为了便于读者理解,给出了图所示的分布式开发架构,读者可以先以此为参考进行技术的学习。

d.png

常见问题
问:Java NIO在那里?
答:我们提供了专门的Java基础课程内容,可以在课程列表中搜索到
问:如何获取课程源码
答:在附录之中提供了本课程的源码,可以打包下载,但是不提供课程笔记,笔记内容受到出版社版权制约,可以购买相应的实体图书。
展开更多
发布
头像

{{ item.user.nick_name }} {{ EROLE_NAME[item.user.identity] }}

置顶笔记
讨论图
{{ item.create_time }}回复
  • 删除

    是否确认删除?

    确认
    取消
  • {{ item.is_top == 1 ? '取消置顶' : '置顶'}}

    已有置顶的讨论,是否替换已有的置顶?

    确认
    取消
{{ tag.text}}
头像
{{ subitem.user.nick_name }}{{ EROLE_NAME[subitem.user.identity] }}
{{ subitem.create_time }}回复
删除

是否确认删除?

确认
取消
发布
{{pageType === 'video' ? '讨论区抢占沙发,可获得双倍学分' :'讨论区空空如也,你来讲两句~'}}
发布
{{tips.text}}
{{ noteHeaderTitle }} 笔记{{ hasMyNote ? '我的笔记' : '记笔记' }}
{{ hasMyNote ? '我的笔记' : '记笔记' }}
优质笔记
更新于:{{ $dayjs.formate('YYYY-MM-DD HH:mm:ss', item.last_uptime*1000) }}
头像
{{ detail.username }}

公开笔记对他人可见,有机会被管理员评为“优质笔记”

{{ noteEditor.content.length }}/2000

公开笔记
保存
提问

讲师收到你的提问会尽快为你解答。若选择公开提问,可以获得更多学员的帮助。

记录时间点
记录提问时视频播放的时间点,便于后续查看
公开提问
提交