# 0、前言

Floyd Smith

近年来，微服务在应用开发和部署方面取得了显著的进步。将应用开发或重构成微服务以分离服务，通过 API 以明确的方式相互调用。比如，每个微服务都是自包含（self-contained），各自维护自己的数据存储，可以独立更新其他服务。

微服务使得应用程序开发变得更快更容易管理，它只需要较少的人力就能实现更多的功能，可以更快更容易地部署。将应用程序设计成一套微服务，它更加容易在多台有负载均衡的服务器上运行，而且能轻松应对需求高峰、由于时间推移而平稳增长的需求和由于硬件或者软件问题导致的宕机事故。

微服务的最大进步在于改变了我们的工作方式。敏捷软件开发技术、应用迁移云端、DevOps 文化、持续集成与持续部署（CI/CD）和容器应用都使用了微服务来革新应用开发与交付。

无论是作为反向代理还是高性能的 web 服务器，NGINX 软件都与微服务和上述列出的所有技术有着紧密联系。NGINX 使得基于微服务的应用更加易于开发，确保了微服务解决方案能顺利实施。

随着 NGINX 与微服务之间的关系日渐紧密，我们已经在 NGINX 网站上运行了一个由 Chris Richardson 所编写的七部分系列微服务。他很早就参与了设计与实现，他的博文主要涵盖了微服务应用设计与开发方面的内容，包括了如何从单体应用迁移至微服务，而且提供了关于微服务问题的全面概述，非常受欢迎。

在本书中，我们已经将全篇博文转换成章节，并在每一章节添加了尾栏以展示 NGINX 实现微服务的相关内容。如果你认真听取建议，你将解决许多潜在的开发时甚至是在编写代码之前可能会遇到的问题。此书在关于 [NGINX 微服务参考架构](https://www.nginx.com/blog/introducing-the-nginx-microservices-reference-architecture/) 方面也是一本非常不错的书籍，它实现了以下大部分理论。

本书章节：

1.  **微服务简介**

    从被夸大的微服务概念到如何在创建和维护应用时部署微服务进行简单介绍。
2.  **使用 API 网关**

    API 网关是整个微服务应用的单入口，它为每一个微服务提供了 API。NGINX Plus 可以很好地应用在 API 网关层，它提供了负载均衡和静态文件缓存等功能。
3.  **微服务架构中的进程间通信**

    当把一个单体应用分解成几部分，它们就需要相互通信。事实上有许多进程间通信的方案可以选择，包括表述性状态转义（REST）。本章将详细介绍。
4.  **微服务架构中的服务发现**

    当服务运行在一个动态环境中，想要找到它们并不是一件容易的事情。
5.  **微服务事件驱动数据管理**

    每个微服务仅维护自己特有的数据展示与存储，而不是共享一个统一、跨越一个或多个单体应用的数据存储。这种方式很灵活，但也可能导致变得复杂。本章可以帮助你理清这些问题。
6.  **选择微服务部署策略**

    DevOps 中的每一步都很重要。Chris 讲解了微服务部署的主要模式，以便你可以为应用部署作出合理的选择，
7.  **重构单体应用为微服务**

    理想环境下，我们不会缺少时间与金钱，因此可以将核心软件转化为最新最好的技术、工具和方法。然而你可能会发现自己正在将一个单体应用重构为微服务，而且进展非常缓慢。Chris 在本章中为你讲解明智的做法。

我们认为你会发现本书的每一章节都是值得阅读的，希望当你在开发自己的微服务应用时，能应用到本书的内容。

Floyd Smith，NGINX 公司
