【注】本文节译自: https://martinfowler.com/microservices/
简而言之,微服务架构风格是一种将单个应用程序开发为一组小型服务的方法,每个小服务都在自己的进程中运行,并与轻量级机制(通常是 HTTP 资源 API)进行通信。这些服务围绕业务功能构建,并且可以通过全自动部署机制独立部署。这些服务可以用不同的编程语言编写,使用不同的数据存储技术,只要进行最小化的集中管理。
-- 詹姆斯·刘易斯和马丁·福勒(2014)
2013年底,在我的圈子里听到了有关微服务的所有讨论后,我开始担心微服务的定义不明确(这种命运给SOA带来了许多问题)。因此,我和同事詹姆斯·刘易斯(James Lewis)聚在一起,他是这种风格的资深从业者之一。 我们一起写
![613930f0684fc24ceb0791f001ab6c8d.png](https://i-blog.csdnimg.cn/blog_migrate/d6b4f379b50832bd2537c98a818111ab.jpeg)
我们写这篇文章是为了对微服务风格提供一个明确的定义,我们通过列出我们在该领域中看到的微服务架构的共同特征来实现这一点。
- 通过服务实现组件化
- 围绕业务能力进行组织
- 产品不是项目
- 智能端点和哑管道
- 分散治理
- 分散数据管理
- 基础设施自动化
- 故障设计
- 进化设计
我们还研究了一些常见问题,例如“微服务的规模有多大”以及“微服务与面向服务的体系结构之间的区别是什么”。这篇文章激发了人们对微服务的兴趣。
“我们使用它,我们不使用它?
……这到底是什么呢?”
![6d88022e98be36d0bd22e133303af90b.png](https://i-blog.csdnimg.cn/blog_migrate/dd1750888b94740695ab2dd651bf93db.jpeg)
在简短的介绍性演讲(约25分钟)中,我选择了最重要的定义特征,将微服务与整体组件进行了比较,并概述了将第一个微服务系统投入生产之前要做的重要工作。
我们什么时候应该使用微服务?
任何架构风格都需要权衡:我们必须根据它所使用的上下文来评估其优缺点。微服务肯定是这种情况。尽管它是一种有用的体系结构,但实际上,大多数情况下,使用整体组件会更好。
微服务提供优势...
- 强大的模块边界:微服务加强了模块化结构,这对于大型团队而言尤其重要。
- 独立部署:简单服务更易于部署,并且由于它们是自治的,因此出错时不太可能导致系统故障。
- 技术多样性:使用微服务,您可以混合使用多种语言、开发框架和数据存储技术。