序1

随着近几年的快速发展,移动互联网系统的复杂度快速上升。为了满足业务快速迭代的需求,同时提高系统的可靠性和可维护性,越来越多的大型系统后台开始采用微服务架构。以华为应用市场为例,目前后台微服务数量达上百个,服务器多达数千台。服务器数量的快速增加,必然导致后台系统复杂度的快速增加,从而推动后台技术架构的持续演进。

在单体系统中,一个请求通常只涉及一个部件。但微服务化后,一个请求可能涉及数个微服务的配合。传统的后台服务通常采用同步阻塞调用方式,一个请求独占一个线程,只有在请求处理完成后,线程才能被释放。如果一个请求涉及多个微服务之间的调用,那么每个微服务都需要一个专门的连接和线程来处理这个请求。而系统的线程数和连接数都是有限的。当系统调用关系越来越复杂,一个很小的问题(如网络抖动、突发请求或 GC引起的延时增加),都可能导致线程阻塞,引发雪崩,导致整个系统不可用。另一方面,同步阻塞的方式很容易导致系统的资源利用率降低。因此,业界领先的互联网公司,都已经或者正在切换到全栈异步方式。

相比同步I/O简单直接的编程模型,异步I/O在编程模型上有较大的差异,对开发人员也有更高的要求,同时问题的定位也更为复杂。Netty是当前业界应用最广泛的Java开源异步框架。Netty 框架能显著降低异步开发的门槛,使开发人员聚焦业务逻辑,免于处理复杂的底层通信机制和线程模型,从而能够简单和快速地开发异步应用。时至今日,越来越多的国内公司开始使用Netty来构建应用,使用Netty的开发者也日益增加。

随着Netty应用的不断深入,大家在使用过程中也会遇到各种各样的问题。相比Netty的火热,市场上Netty相关的书籍却很少。作者几年前出版的著作《Netty权威指南》是国内第一本系统化讲解 Netty原理和架构的书籍,在市场上取得了良好的反响。《Netty进阶之路:跟着案例学Netty》是作者在Netty方面的又一力作。该书从一个个典型的问题出发,让读者能够带着问题来展开学习,并通过代码解读、原理分析和问题总结,对每个问题抽丝剥茧地深入解析;同时,能够通过一个问题,将相关领域的知识理解透彻,达到举一反三的效果,进而实现对Netty的系统性学习与理解。

李林锋在电信软件行业有着近十年的异步和服务化方面的开发和架构设计经验,是华为公司该领域的专家。他从2017年开始负责华为应用市场在异步和微服务化方面的工作,主导了华为应用市场后台的异步化和微服务化演进,将电信软件严谨、稳定、高性能的优势,与移动互联网海量用户、高并发场景结合起来,显著提升了华为应用市场的可用性和性能。本书凝结了作者多年来在异步化工作方面的经验,将成为希望精通 Netty开发的读者的重要参考书。

华为应用市场总架构师 刘连喜