前言
作为软件开发者,我们一直处于一片混乱和不断变化的海洋之中,这已是软件开发领域中的一个常态。新技术与新方案的突然涌现会让我们受到强烈的冲击,使我们不得不重新评估应该如何为客户搭建和交付解决方案。
使用微服务开发软件被许多组织迅速采纳就是应对这种冲击的一个例子。微服务是松耦合的分布式软件服务,这些服务执行少量的定义明确的任务。
什么是微服务
在微服务的概念逐步形成之前,绝大部分基于Web的应用都是使用单体架构的风格来进行构建的。在单体架构中,应用程序作为单个可部署的软件制品交付,所有的UI (用户接口)、业务、数据库访问逻辑都被打包在一个应用程序制品中并且部署在一个应用程序服务器上。
虽然应用程序可能是作为单个工作单元部署的,但大多数情况下,会有多个开发团队开发这个应用程序。每个开发团队负责应用程序的不同部分,并且他们经常用自己的功能部件来服务特定的客户。
微服务的概念最初是在2014年前后悄悄蔓延到软件开发社区的意识中,它是对在技术上和组织上扩大大型单体应用程序所面临的诸多挑战的直接回应。记住,微服务是一个小的、松耦合的分布式服务。微服务允许将t 个大型的应用分解为具有严格职责定义的便于管理的组件。微服务通过将大型代码分解为小型的精确定义的部分,帮助解决大型代码库中传统的复杂问题。在思考微服务时,一个需要信奉的重要概念就是:分解和分离应用程序的功能,使它们完全彼此独立。
微服务架构具有以下特征
- 应用程序逻辑分解为具有明确定义了职责范围的细粒度组件,这些组件互相协调提供解决方案。每个组件都有一个小的职责领域ÿ