1.1 从微服务谈起

2012年,微服务(microservices)这一术语首次在公开场合出现。如果将这一年看作微服务的元年,则到本书截稿为止,它已经走过了近10年旅程。每个人对微服务架构的理解都不尽相同,我们趋向于认同软件工程大师Martin Fowler提出的更具象化、更有指导性的定义:

微服务架构是一种将单个应用程序开发为一组小型服务的方法,每个服务在自己的进程中运行,并通过轻量级的通信机制(如HTTP API)进行交互。这些服务围绕业务功能构建,可以通过完全自动化的部署机制独立部署。服务可以使用不同的编程语言编写,并使用不同的数据存储,我们可以以一个非常轻量级的中心化管理方式来协调服务。

微服务架构为软件开发提供了新的思路,它更加适合信息时代下需求频繁变更、产品快速迭代的应用场景。独立构建服务的方式为构建、测试、部署等多个开发阶段带来了更高的灵活性,同时也能通过更细粒度的动态伸缩机制降低应用的资源成本。当然,软件开发领域的“银弹”还未出现,微服务架构也不是救世主,它有优点就必然有缺点。本节我们就来探讨它的关键特性都有哪些。