Microservices指南

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

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

Martinfowler.com关于MicroServices的材料指南。

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

我们写这篇文章是为了提供微服务风格的明确定义,我们通过列出我们在该领域看到的微服务体系结构的共同特征来做到这一点。188比分直播网 坚持原创

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

我们还讨论了一些常见的问题,如“微服务有多大”和“微服务和面向服务的体系结构之间的区别是什么”。188比分直播网 坚持原创这篇文章激发了人们对微服务的兴趣。

“我们使用它,还是不使用?”

……这到底是什么?”

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


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

任何架构风格都有优缺点:我们必须根据所使用的上下文来评估其优缺点。微服务无疑就是这样。虽然它是一个有用的架构——许多情况下,实188比分直播网 坚持原创际上是大多数情况下,使用一个庞然大物会做得更好。

Microservices提供福利……

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

......但是成本

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

(从Microservice权衡

Microservice溢价

microservices建筑风格一直是去年的热门话题。在最近的O'Reilly软件架构会议188比分直播网 坚持原创,它似乎每次会议谈到微服务。足以让每个人过度炒作的除毛探测器上升和闪烁。其中一个后果是,我们已经看到团队太渴望接受微服务,而不是意识到微服务在自己的帐户上引入复杂性。这增加了一个项目的成本和风险 - 一个经常将项目变成严重麻烦的费用。

由马丁

2015年5月13日

阅读更多…

bliki

microservices

首先

当我听到关于使用A团队的故事微服务架构188比分直播网 坚持原创我发现了一个共同的模式。

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

这种模式导致我的许多同事认为您不应该用微服务开始一个新项目,即使您确信您的应用程序足够大,值得这样做。

不要从巨石开始

在过去的几个月里,我反复听到这样的说法:获得成功的微服务体系结构的唯一途径是首先从一个单一的体系结构开始。188比分直播网 坚持原创转述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进行接受进行面试:“全身来到MicroServices”。这变成了关于微猎物的一般对话,以及何时使用它们。SAM考虑了他们是独立的部署性,隔离数据的三个主要原因,并反映组织结构。我对第一个更加持怀疑态度,但考虑数据和人们是软件开发的复杂部分。188比分直播完整手机版

由马丁

2020年9月4日

更多…

视频

面试microservices


构建微猎狼

微服务架构是相当新的,但我188比分直播网 坚持原创很幸运,我们在Thoughtworks和他们一起工作金宝搏亚洲体育博彩最早的表象.关于如何最好地与他们合作,最好的介绍是Sam Newman的书构建微猎狼他根据我们的经历和其他公布的账户写了。

微服务体系结构中的测试策略188比分直播网 坚持原创

在过去的几年中,基于服务的架构已经向更小、更集中的“微”服务转变。188比分直播网 坚持原创这种方法有很多好处,比如能够独立部署、扩展和维护每个组件,以及跨多个团队进行并行开发。但是,一旦引入了这些额外的网络分区,就需要重新考虑应用于流程应用程序中的单片集成的测试策略。在这里,我们计划讨论管理多个独立可部署组件的额外测试复杂性的许多方法,以及如何在多个团队分别充当不同服务的监护人的情况下,使测试和应用程序保持正确。

由托比·克莱姆森

2014年11月18日

阅读更多…

infodeck.

受欢迎的测试infodecksmicroservices

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

由于单片系统变得太大而无法处理,许多企业被吸引到将其分解为微服务体系结构风格。这是一个值得的旅程,但不是一个容易的旅程。我们已经了解到,要做到这一点,我们需要从一个简单的服务开始,然后提取基于垂直功能的服务,这些功能对业务很重要,而且经常发生变化。这些服务一开始应该很大,最好不依赖于剩余的整体。我们应该确保迁移的每一步都代表了对整体架构的原子改进。188比分直播网 坚持原创

由Zhamak Dehghani

2018年4月24日

阅读更多…

文章

microservices

微前端

好的前端开发是困难的。扩展前端开发,使许多团队能够同时工作在一个大型和复杂的产品上是更加困难的。在本文中,我们将描述一种最近的趋势,即将前端整体拆分成许多更小、更易于管理的部分,以及这种体系结构如何提高开发前端代码的团队的有效性和效率。188比分直播网 坚持原创除了讨论各种好处和成本之外,我们还将讨论一些可用的实现选项,并深入研究演示该技术的完整示例应用程序。

如何从一个庞然大物中提取一个数据丰富的服务

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

由Praful Todkar

2018年8月30日

阅读更多…

文章

microservices

基础设施代码

作为代码的基础设施是通过源代码定义计算和网络基础设施的方法,然后可以像对待任何软件系统一样对待源代码。这样的代码可以保存在源代码控制中,以允许审核和ReproducibleBuilds,服从测试实践,和完整的规程ContinuousDelivery.这是一种在过去十年中被使用的方法,以处理成长CloudComputing平台并将成为处理下一个计算基础设施的主导方式。

由马丁

2016年3月1

阅读更多…

bliki

持续交付microservices

开发运维文化

敏捷软件开发188比分直播完整手机版打破了需求分析、测试和开发之间的隔阂。部署、操作和维护是其他与软件开发过程的其他部分存在类似分离的活动。188比分直播完整手机版DevOps运动旨在消除这些竖井,鼓励开发和运营之间的协作。

由Rouan Wilsenach

2015年7月9日

阅读更多…

bliki

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

断路器

软件系统对运行在不同进程(可能是网络上不同机器上)中的软件进行远程调用是很常见的。内存调用和远程调用之间的一个主要区别是,远程调用可能失败,或者在达到某个超时限制之前没有响应而挂起。更糟糕的是,如果在一个没有响应的供应商上有许多调用者,那么您可能耗尽关键资源,从而导致跨多个系统的级联故障。在他的著作中释放它,Michael Nygard推广了断路器图案,以防止这种灾难性级联。

断路器背后的基本思想非常简单。您将一个受保护的函数调用包装在一个断路器对象中,断路器对象监视故障。一旦故障达到某一阈值,断路器跳闸,所有对断路器的进一步调用返回错误,而不进行保护调用。通常,如果断路器跳闸,你还需要一些监视器警报。