0.2 读者对象
本书适合以下各类读者:
■ 追求高性能的Web应用研发工程师;
■ 微服务、API网关、Web应用防火墙的研发工程师;
■ 手机游戏、网络游戏后端服务器的研发工程师;
■ 通用的HTTP/TCP/UDP应用服务研发工程师;
■ 工作在Linux系统上的运维、测试工程师;
■ 计算机编程爱好者和在校学生。
随着宽带网络的快速普及和移动互联网的高速发展,网站需要为越来越多的用户提供服务,处理越来越多的并发请求,要求服务器必须具有很高的性能才能应对不断增长的需求和突发的访问高峰。在超高并发请求的场景下,很多常用的服务开发框架都会显得“力不从心”,服务能力严重下降,很难优化。这时我们就可以选择OpenResty,它内置高效的事件驱动模型和进程池机制,直接在“起点”上构建高性能的Web应用,而且可以很容易地调整配置参数进一步释放系统潜力。
现在的网站架构大都是分布式系统,经常部署有成百上千个内部模块,这些模块通常基于“微服务”“服务网格”等架构,彼此之间的联系十分复杂,在演化过程中系统会逐渐变得难以理解和维护。OpenResty具有优秀的反向代理和负载均衡能力,在复杂的分布式系统中可以充当API Gateway的角色,分治整合不同种类的服务简化系统,并使用内嵌的Lua脚本添加缓冲、限流、防护、认证等额外功能。
游戏类应用是目前互联网特别是移动互联网上的一大类应用,用户量很庞大。这些应用多数会提供在线服务,要求后端稳定可靠,最好还能够快速修复错误或上线新功能。OpenResty非常适合担当这样的后端服务器,它不仅性能高运行稳定,而且由于使用的是动态脚本语言Lua,上手容易且功能丰富,能够很好地缩短产品的开发周期,实现快速迭代。此外,因为Lua语言也经常被用于游戏客户端开发,使用OpenResty还可以打通前后端,统一开发语言,轻松地成为掌控全局的“全栈”工程师。
除了开发标准的Web应用,OpenResty也是一个通用的服务器开发框架,内部结构良好,基础设施完备,支持HTTP/HTTPS/WebSocket/TCP/UDP等多种网络协议和Redis、MySQL等常见的数据库,能够使用Lua以简单易理解的同步非阻塞模式编程,快捷实现各种业务逻辑,部分或完全取代自研框架或其他开源框架,实现任意的后台服务。
OpenResty不仅是一个单纯的服务器软件,它还是一个完整的应用环境,其中就包含了一个非常有用的Lua脚本解释器。运维、测试工程师可以使用小巧灵活的Lua代替Shell、Perl、Python等语言,调用OpenResty的内部功能接口写出高效实用的各种脚本,如系统管理、状态监控、单元测试或压力测试,方便自己的工作。
最关键的一点,OpenResty是完全开源的,拥有成熟活跃的开发社区和许多顶级的开发者,研究、参与它可以领会真正的“开源”精神,学习到各种前沿的理念、技术和知识,提高自身的能力。