前言 PREFACE
微服务和云原生是当前较热门的技术概念。云原生微服务架构是微服务架构和云原生技术的结合。微服务作为一种架构风格,所解决的问题是复杂软件系统的架构与设计。云原生技术作为一种实现方式,所解决的问题是复杂软件系统的运行和维护。这两者相辅相成,是开发复杂软件系统的最佳选择之一。
本书以一个外卖点餐应用的后台服务作为实战示例,详细介绍了微服务架构的云原生应用的完整开发过程。开发微服务时使用的框架是Java平台上的Quarkus。在GraalVM的支持下,Quarkus应用可以打包成启动速度快、资源消耗少、体积小的原生可执行文件。这一点对于云原生应用来说至关重要。
第1~4章介绍云原生微服务相关的背景知识和Quarkus的核心概念。第1章介绍云原生微服务和Quarkus的基本概念。第2章介绍Quarkus应用的创建和代码的组织结构,并对Quarkus应用的开发流程,以及实战示例进行了介绍。第3章介绍了Quarkus中依赖注入的实现方式,包括Bean的使用、拦截器和事件相关的内容。第4章介绍Quarkus应用的配置管理,包括使用不同的配置源保存配置信息,以及如何在应用中读取配置项的值。
第5~7章介绍微服务的开发模式。每一章以实战应用的一个微服务作为示例,详细说明每种开发模式的实现细节。第5章介绍的微服务以关系型数据库作为存储,并发布REST API。微服务之间使用同步的API调用。第6章介绍的微服务发布gRPC API,微服务之间使用Apache Kafka进行异步消息传递。第7章介绍的微服务使用反应式编程开发,微服务之间使用反应式流进行交互。这3章的内容涵盖了大部分微服务的实现模式。
第8~10章主要介绍与微服务的部署和运维相关的内容,属于非功能性需求相关的部分。第8章介绍了如何将云原生应用打包成容器镜像,并部署到Kubernetes。第9章介绍了如何产生可观察性相关的数据,包括性能指标数据、分布式追踪信息、日志和异常信息等。第10章介绍了应用安全相关内容,包括用户管理、认证和授权,同时还介绍了如何保证服务调用的健壮性。这3章介绍的内容虽然与具体的业务无关,但却是实际应用中必不可少的功能。
第11章介绍了Quarkus的一些附加功能,包括创建计划任务、创建命令行程序、使用字符串模板、发送邮件和基于GraphQL的API组合等。
限于篇幅,书中只对实战应用中的部分代码进行了介绍。完整的代码请参考代码仓库(http://github.com/alexcheng1982/happy-takeaway)。
由于本人水平有限,疏漏之处在所难免,恳请广大读者批评指正。
作者