美团T9分享官方进阶文档:Nginx+Netty跟着案例学这两份开源手册
作者:互联网
前言Nginx是著名的Web服务器,性能优异,运行效率远超传统的Apache、Tomcat, 广泛应用于国内外诸多顶级互联网公司。
Nginx的一个突出特点是其灵活优秀的模块化架构,可以在不修改核心的前提下增加任意功能,自2004年发布至今,已经拥有百余个官方及非官方的功能模块(如proxy、 mysql、 redis、 rtmp、 lua等),使得Nginx成长为了一个近乎“全能”的服务器软件。
Nginx功能强大,架构复杂,学习、维护和开发的门槛较高。为了帮助读者跨越这一-障碍, 本书深入最新的Nginx源码(Stable 1.12.0),详细剖析了模块体系、动态插件、功能框架、进程模型、事件驱动、线程池、TCP/UDP/HTTP 处理等Nginx核心运行机制,在此基础上讲解如何使用C、C++、 Lua、nginScript等语言来增强扩展Nginx,让任何人都能够便捷、轻松地开发和定制Nginx,进而应用到自己的实际工作中,创造出更多的价值。
内容展示:最早接触Nginx大概是在2011年,面对着一个全新的Web服务器,和大多数人一样最初我也是一片茫然,能找到的参考资料十分有限,安装、配置、运行几乎都是“摸着石头过河”,犯过许多低级错误。随着对Nginx逐渐熟悉,它的高并发处理能力给我留下了深刻的印象,作为一个开源软件的爱好者,很自然地想要探究一下它的内部工作原理。我由此开始了对Nginx源码的钻研之路,中间经过了很多的艰辛曲折,走过不少的弯路。
Nginx的横空出世为Web服务器开辟了一个崭新的天地,它搭建了一个高性能的服务器
开发框架,而且是一个完整的、全功能的服务器。模块化的架构设计很好地分离了底层支撑模
块和上层逻辑模块,底层模块处理了配置、并发等服务器的外围功能,核心支撑模块定义了主
体的TCP/HTTP处理框架。开发者可以把大部分精力集中在上层的业务功能实现上,再也不
必去为其他杂事而分心,提高了软件的开发效率。
部分内容展示: 主要文档
Nginx功能概述
HTTP基础功能﹔
- 处理静态文件,索引文件以及自动索引﹔
- 反向代理加速(无缓存),简单的负载均衡和容错﹔FastCGl,简单的负载均衡和容错﹔
- 模块化的结构。过滤器包括gzipping, byte ranges,chunked responses,以及SSI-filter 。在SSI过滤器中,到同一个 proxy 或者FastCG的多个子请求并发处理﹔
- SSL和TLSSNI支持﹔
核心模块
Nginx主模块
这里是控制Nginx的基本功能的指合.
基础模块
http核心模块
指合
其他模块
Netty进阶之路,跟着案例学Netty因为下面还要展示另一份文档就不给大家一一展示了,需要获取这份Nginx官方文档的小伙伴可以直接转发+关注后私信(学习)即可免费获取!
Netty将JavaNIO接口封装,提供了全异步编程方式,是各大Java项目的网络应用开发必备神器。本书作者是国内Netty技术的先行者和布道者,本书是他继《Netty权威指南》之后的又一力作。在文档中,作者将在过去几年实践中遇到的问题,以及Netty学习者咨询的相关问题,进行了归纳和总结,以问题案例做牵引,通过对案例进行剖析,讲解问题背后的原理,并结合Netty源码分析,让读者能够真正掌握Netty,在实际工作中少犯错。
这份文档中的案例涵盖了Netty的启动和停止、内存、并发多线程、性能、可靠性、安全等方面,囊括了Netty绝大多数常用的功能及容易让人犯错的地方。在案例的分析过程中,还穿插讲解了Netty 的问题定位思路、方法、技巧,以及解决问题使用的相关工具,对读者在实际工作中用好Netty具有很大的帮助和启发作用。
本文档适合架构师、设计师、开发工程师、测试工程师,以及对Java NIO框架、Netty感兴趣的其他相关人士阅读。
《Netty 进阶之路:跟着案例学Netty》就是能够助人出坑的干货。需要获取的小伙伴可以直接转发+关注后私信(学习)即可获取以上两份官方文档
- (1)Netty 初学者,想了解学习Netty需要储备哪些技能,掌握哪些知识点,有什么学习技巧可以更快地掌握Netty。
- (2)《Netty权威指南》的读者,学习完理论知识后,想在实际项目中使用,但是真正跟具体项目结合在一起解决实际问题时,又感觉比较棘手,不知道自己使用的方式是否是最优的,希望能够多学一些案例实践方面的知识,以便更好地在业务中使用Netty.
- (3)在实际项目中遇到了问题的工程师,由于对Netty底层细节掌握得不扎实,无法有效地定位并解决问题。
Netty的一个特点就是入门相对容易,但是真正掌握并精通是非常困难的,原因有如下几个:
- (1)涉及的知识面比较广。Netty作为一个高性能的NIO通信框架,涉及的知识点包括网络通信、多线程编程、序列化和反序列化、异步和同步、SSL/TLS安全、内存池、HTTP等各种协议栈,这些知识点在Java语言中本身就是难点和重点,如果对这些基础知识掌握不扎实,是很难真正掌握好Netty的。
- (2)调试比较困难。因为大量使用异步编程接口,以及消息处理过程中的各种线程切换,相比传统同步代码,Netty代码调试难度比较大。
- (3)类继承层次比较深,有些代码很晦涩(例如内存池)。对于初学者而言,通过阅读代码来掌握Netty的难度还是很大的。
- (4)代码规模庞大。目前,Netty的代码规模已经非常庞大,特别是协议栈部分,提供了对HTTP/2、MQTT、WebSocket等各种协议的支持,相关代码非常多。如果学习方式不当,抓不住重点,则全量阅读Netty源码,既耗时又很难吃透,很容易半途而废。
- (5)资料零散,缺乏与实践相关的案例。网上 Netty的各种资料非常多,但是都以理论讲解为主,Netty在各行业中的应用、问题定位技巧及案例实践方面的资料很少,缺乏系统性的实践总结,是Netty学习的一大痛点。
- ( 1)Netty的启动和停止
- ( 2)Netty的内存
- (3)Netty的并发多线程
- (4)Netty的性能
- (5)Netty的可靠性
- (6)Netty的安全
- ( 7)Netty的实践
- (8)Netty的学习
第1章Hetty服务端意外退出案例
第2章Hetty客户端连接池资源泄漏案例
第3章Hetty内存池泄露疑云案例
第4章ByteBuf故障排查案例
第5章Hetty发送队列积压导致内存泄漏案例
第6章API网关高并发压测则性能波动案例
第7章Hetty ChannelHandler并发安全案例
第8章车联网服务端接收不到车载终端消息案例
第9章Hetty 3.X版本升级案例
第10章Hetty并发失效导致性能下降案例
第11章工oT百万长连接性能调优案例
第12章静态检查修改不当引起性能下降案例
第13章Hetty性能统计误区案例
第14章gRPC的Hetty HTTP/2实践案例
第15章Hetty事件触发策略使用不当案例
第16章Hetty流里整形应用案例
第17章Hetty SSL应用案例
第18章Hetty HTTFS服务端高并发宕机案例
第19章MQTT服务接入超时案例
第20章Hetty实践总结
《Netty 进阶之路:跟着案例学Netty》就是能够助人出坑的干货。需要获取的小伙伴可以直接转发+关注后私信(学习)即可获取以上两份官方文档
标签:Netty,进阶,案例,Hetty,Nginx,文档,T9,并发 来源: https://blog.51cto.com/u_15261020/2882305