Microservices指南

简而言之,微服务体系结构风格是一种将单个应用程序作为小型服务套件,每个在自己的进程中运行与轻量级机制(通常是HTTP资源API)通信。这些服务围绕业务功能构建而且独立部署完全自动化的部署机器。有一个最低限度的集中管理这些服务可能用不同的编程语言编写,并使用不同的数据存储技术。

--詹姆斯·刘易斯和马丁·福勒(2014)

www.rodiba.com上关于微服务的材料指南。

2013年底,在我的圈子里听到所有关于微服务的讨论,我开始担心微服务没有一个明确的定义给SOA带来了许多问题).所以我和我的同事聚在一起詹姆斯•刘易斯他是这种风格的资深实践者之一。我们一起写

我们写了这篇文章来提供微服务风格的明确定义我们通过列出我们在该领域中看到的微服务体系结构的共同特征来做到这一点。华体会体育网页版入口

  • 通过服务的组件化
  • 围绕业务功能组织
  • 产品没有项目
  • 聪明的端点和愚蠢的管道
  • 分散治理
  • 分散的数据管理
  • 基础设施自动化
  • 设计为失败
  • 进化型设计

我们还研究了一些常见的问题,如“微服务有多大”和“微服务和面向服务的体系结构之间的区别是什么”。华体会体育网页版入口这篇文章激起了人们对微服务的兴趣。

“我们用还是不用?”

它究竟是什么东西?”

在我简短的介绍性讨论(大约25分钟)我挑选出最重要的定义特征,将微服务与整体进行比较,并概述在将第一个微服务系统投入生产之前要做的重要事情。


什么时候我们应该使用微服务?

任何架构风格都有利弊:我们必须根据所使用的上下文来评估优点和缺点。这当然是微服务的情况。虽然这是一种有用的体系结构——但在许多情华体会体育网页版入口况下,实际上是大多数情况下,使用单一体系结构会更好。

Microservices提供福利……

  • 强大的模块边界:微服务强化了模块化结构,这对大型团队尤为重要。
  • 独立部署:简单的服务更容易部署,而且由于它们是自治的,当它们出错时,不太可能导致系统故障。
  • 技术的多样性通过微服务,您可以混合使用多种语言、开发框架和数据存储技术。

但要付出代价

  • 分布分布式系统更难编程,因为远程调用很慢,而且总是有失败的风险。
  • 最终一致性:对于分布式系统来说,维护强一致性是非常困难的,这意味着每个人都必须管理最终的一致性。
  • 操作的复杂性您需要一个成熟的运营团队来管理大量的服务,这些服务会定期重新部署。

(从Microservice权衡

Microservice溢价

microservices建筑风格一直是去年的热门话题。在最近的O'Reilly软件架构会议华体会体育网页版入口在美国,似乎每次会议都在谈论微服务。足够让所有人的超级扯淡探测器亮起来了。这样做的后果之一是,我们看到团队太急于接受微服务,而没有意识到微服务为他们自己带来了复杂性。这增加了项目的成本和风险——这经常使项目陷入严重的麻烦。

由马丁

2015年5月13日

阅读更多…

bliki

microservices

庞然大物第一

当我听到团队使用microservices架华体会体育网页版入口构,我注意到一个共同的模式。

  1. 几乎所有成功的微服务故事都是从一个庞然大物开始的,它变得太大了,然后被拆分了
  2. 我听说的几乎所有从零开始构建为微服务系统的系统都以严重的麻烦告终。

这种模式让我的许多同事认为你不应该用微服务开始一个新项目,即使你确定你的应用足够大,值得去做。

不要从一个庞然大物开始

在过去的几个月里,我反复听到这样的说法:获得成功的微服务架构的唯一方法是首先从一个整体开始。华体会体育网页版入口套用Simon Brown的话:如果你不能构建一个结构良好的整体,你凭什么认为你可以构建一组结构良好的微服务?马丁·福勒(Martin Fowler)在这个网站上对这一论点进行了最新的——通常也是非常有说服力的——阐释。因为我有机会对早期的草稿进行评论,所以我有一些时间来思考这个问题。我的确这么做了,尤其是因为我经常发现自己和他的观点一致,而其他一些我通常持有相同观点的人似乎也同意他的观点。

我坚信从一个整体开始通常是错误的做法。

Stefan Tilkov的

2015年6月9日

阅读更多…

文章

microservices

Microservice先决条件

当我和人们谈论使用microservices建筑风格我听到了很多乐观的声音。开发人员喜欢使用更小的单元,并期望获得比单个单元更好的模块化。但是与任何架构决策一样,都有权衡。特别是在微服务方面,对运营人员的影响非常严重,他们现在必须处理一个由小型服务组成的生态系统,而不是一个定义明确的单一整体。因此,如果您不具备某些基本能力,就不应该考虑使用微服务风格。

由马丁

2014年8月28日

阅读更多…

bliki

microservices

微服务与分布式对象第一定律

在EAA的P中我说过“不要分发你的对象”。这个建议是否与我对微服务的兴趣相矛盾?

由马丁

2014年8月13日

阅读更多…

文章

API设计microservices

Sam Newman关于微服务的采访

goto会议邀请我就山姆·纽曼(Sam Newman)的书《从巨石到微服务》(monolths to Microservices)进行采访。这变成了一场关于微服务以及何时使用它们的一般性对话。Sam认为它们的三个主要原因是独立可部署性、数据隔离和反映组织结构。我更怀疑第一个,但考虑到数据和人员是软件开发的复杂部分。华体会登录网址

由马丁

2020年9月4日

更多…

视频

面试microservices


建筑Microservices

微服务体系结构是相当新的,华体会体育网页版入口但是我很幸运,自从他们的最早的表象.对于如何最好地与他们合作,最好的介绍是山姆·纽曼的书建筑Microservices这本书是他根据我们的经历和其他已经出版的记录写的。

微服务体系结构中的测试策略华体会体育网页版入口

在过去几年里,基于服务的体系结构已经向更小、更专注的“微”服务转变。华体会体育网页版入口这种方法有很多好处,比如能够独立部署、扩展和维护每个组件,以及跨多个团队并行化开发。然而,一旦引入了这些附加的网络分区,应用于流程内单片应用程序的测试策略就需要重新考虑了。在这里,我们计划讨论一些管理多个独立可部署组件的额外测试复杂性的方法,以及如何在多个团队各自充当不同服务的监护人的情况下保持测试和应用程序的正确性。

由托比·克莱姆森

2014年11月18日

阅读更多…

infodeck

受欢迎的测试infodecksmicroservices

如何将一个庞然大物分解成微服务

由于单片系统变得太大而无法处理,许多企业倾向于将其分解为微服务体系结构样式。这是一段值得的旅程,但并不容易。我们已经了解到,要做好这一点,我们需要从一个简单的服务开始,然后绘制出基于垂直功能的服务,这些垂直功能对业务很重要,而且容易频繁变化。这些服务一开始应该是大型的,最好不要依赖于剩余的整体。我们应该确保迁移的每一步都代表了对整个体系结构的原子性改进。华体会体育网页版入口

由Zhamak Dehghani

2018年4月24日

阅读更多…

文章

microservices传统康复

微前端

好的前端开发是很难的。扩展前端开发以便许多团队可以同时在一个大型而复杂的产品上工作是更加困难的。在本文中,我们将描述最近的一种趋势,即将前端整体分解为许多更小、更易于管理的片段,以及这种体系结构如何提高处理前端代码的团队的有效性和效率。华体会体育网页版入口除了讨论各种好处和成本之外,我们还将介绍一些可用的实现选项,并深入研究演示该技术的完整示例应用程序。

如何从巨石中提取数据丰富的服务

当将大数据块分解为更小的服务时,最困难的部分实际上是分解大数据块数据库中的数据。要提取一个数据丰富的服务,遵循一系列的步骤是很有用的,这些步骤在任何时候都保留一个数据的写-拷贝。这些步骤首先在现有整体中进行逻辑分离:将服务行为分离到单独的模块中,然后将数据分离到单独的表中。这些元素可以单独移动到新的自治服务中。

由Praful Todkar

2018年8月30日

阅读更多…

文章

microservices传统康复

基础设施代码

作为代码的基础设施是一种通过源代码定义计算和网络基础设施的方法,然后可以像对待任何软件系统一样对待源代码。这样的代码可以保存在源代码控制中,以允许审计和ReproducibleBuilds,受测试实践和完整的纪律ContinuousDelivery.这是过去十年来处理经济增长的一种方法CloudComputing平台将成为未来处理计算基础设施的主要方式。

由马丁

2016年3月1

阅读更多…

bliki

持续交付microservices

开发运维文化

敏捷软件开发华体会登录网址打破了需求分析、测试和开发之间的一些竖井。部署、操作和维护是其他与软件开发过程的其他部分类似分离的活动。华体会登录网址DevOps运动旨在消除这些竖井,鼓励开发和运营之间的协作。

由Rouan Wilsenach

2015年7月9日

阅读更多…

bliki

持续交付采用敏捷团队组织协作

断路器

对于软件系统来说,远程调用运行在不同进程中的软件是很常见的,可能是在跨网络的不同机器上。内存中调用和远程调用之间的一个重大区别是,远程调用可能会失败,或者没有响应就挂起,直到达到某个超时限制。更糟糕的是,如果在一个没有响应的供应商上有许多调用者,那么可能会耗尽关键资源,导致多个系统发生级联故障。在他的著作中释放它在美国,迈克尔·尼加德推广了熔断模式,以防止这种灾难性的连锁反应。

断路器的基本原理非常简单。将受保护的函数调用封装在断路器对象中,该对象监视故障。一旦故障达到一定的阈值,断路器跳闸,所有对断路器的进一步调用都返回一个错误,而不进行受保护的调用。通常情况下,如果断路器跳闸,你还需要某种形式的监视器警报。

Baidu
map