Floyd Smith
应用的部署与开发由于微服务的兴起已获得了显著的进步。通过微服务,一个应用被开发与重构成独立的服务,这些服务按照实现约定好的方式去交互,比如APIs。每一个微服务都是独立的,每一个都拥有自己独立的数据源(这会有重大的影响),每一个都可以独立于其他服务而更新。
迁移到基于微服务的方式,将使应用的开发速度更快,而且更易于管理,更少的人员参与就可以实现更多的特性与功能。改动的创建与部署将变的更快,更简单。一个基于微服务集而设计的应用将更易于运行在有负载均衡的服务器集群中,这将使此应用,随着时间的推进,更易于处理稳定与飙升的访问需求,同时也会减少由于硬件或者软件问题引起的故障。
在当下,有众多从本质上改变我们工作的重大的改进,其中,微服务是不可缺的一部分。敏捷软件开发方法,迁移应用到云端,Devops文化,持续集成与持续推送(CI/CD),容器的使用,这些都正在与微服务一起,革命性的改变了应用的开发与推送。
NGINX与微服务本身及所有以上陈述的技术,都保持着紧密联系。无论是作为反向代理,还是作为高效的web服务器,NGINX都使基于微服务应用的开发变得更简单,也使基于微服务的方案可以流畅平稳的执行。
基于NGINX与微服务之间的联系是如此的紧密,我们在NGINX网站上,运营了一个关于微服务的共七章节的系列。由Chris Richardson编写,Chris Richardson早先就已经落实了微服务的理念与其实现,其博客,覆盖了微服务对于应用设计与部署的几大主要部分,包括如何基于巨石应用完成微服务改造。博客对于主要的微服务问题提供了全面的概述,因此也收到了极大的欢迎。
在此本电子书中,我们转换了每个博客到此书的一个章节,也为每一章节添加了边栏,提供了如何基于NGINX来实现的相关信息。如果你细心的遵循此书中的建议,你将会解决很多甚至在你写代码前潜在的开发问题。此书也是 NGINX微服务参考架构(NGINX Microservices Reference Architecture)的优秀参考手册,在NGINX微服务参考架构书中,实现了本书中阐述的大部分理论。
本书包含的章节:
-
微服务介绍 - 对微服务进行清晰的,简单的介绍,从它可能被吹嘘过头的概念定义到在现实中在创建和维护应用时如何部署微服务
-
使用API网关 - API网关是你整个基于微服务应用的单一入口,为每个服务提供API。NGINX Plus可以被高效的作为一个拥有负载均衡,静态文件缓存等功能的API网关
-
微服务架构的进程间通信 - 一旦你打破巨石应用到多个独立单元 - 微服务 - 这些单元之间要相互通信。而且证明了对于跨进程访问,你有很多选择,包括使用REST。本章节将会具体阐述。
-
微服务架构中的服务发现 - 当服务运行在一个动态的环境中,当你需要他们的时候去找到它们并不是一个不重要的问题。本章节中,Chris将会对此问题描述一个实用的解决方案。
-
微服务事件驱动的数据管理 - 取代于共用一个(或者两个)统一的、贯穿于巨石应用的数据存储,每一个微服务维护着它自己的唯一的数据表示和存储。这将给你很大的灵活性,但也会引起复杂性的增加,本章节将会帮助你分类整理这些问题。
-
选择微服务的部署方案 - 在Devops世界中,你如何做事情与你一开始就打算做什么一样的重要。Chris描述了微服务的主要发布模式,这样你就可以为你的应用做出明智的选择。
-
将巨石应用重构成微服务 - 在一个完美的世界中,我们总会花费时间和金钱将核心软件转换为最新最伟大的技术,工具和方法,没有真正的最后期限。但是当你在重构巨石应用的时候,一次只能重构其中的一小块。Chris将会介绍一个明智的方案。
我们认为你会发现每一章节都有价值,同时我们也希望当你开发属于你自己的微服务时,你能再次阅读此本电子书。
Floyd Smith
NGINX, Inc