bet188足球-118金宝博 网页

这个新建筑术语的定义

术语“Microservice架构”涌现了许多在过去的几年里来描述一个特定的方式bet188足球荷兰国际集团(ing)软件应用程序套件的独立部署的服务。虽然没有精确定义的架构风格,有某些共同特征组织在业务功能,自动部署,情报的端点和分散控制的语言和数据。。

2014年3月25日

詹姆斯·刘易斯的照片

詹姆斯·刘易斯是ThoughtWorks首席顾问和技术顾问委员会的成员。詹姆斯兴趣构建应用程序的小型合作服务源于大规模集成背景的企业系统。他建立了一个系统使用microservices和一直积极参与社区好几年增长。。

照片188打赌足球充值

188押注足球充值是一个作家,演说家,一般软件开发上大声喧哗。他一直困惑的问题如何组件化软件系统,有听过比他的满意更模糊的说法。他希望microservices将履行承诺早期倡导者发现。。

找到 类似的文章通过观察这些标签: 受欢迎的· 应用程序体系结构· web服务· microservices

”bet188足球-118金宝博 网页 ”——另一个软件架构的新学期在拥挤的街道。虽然我们的自然倾向是通过用轻蔑的一瞥,这个术语描述了软件系统的风格,我们发现越来越多的吸引人。我们见过许多项目使用这种风格在过去的几年里,和结果到目前为止是积极的,以至于对我们的很多同事这是成为构建企业应用程序的默认样式。然而,遗憾的是,没有太多信息,轮廓microservice风格是什么,如何去做。。

简而言之,microservice建筑风格[1]是一个方法来开发一个应用程序套件的小服务,每个运行在它自己的进程,与轻量级通信机制,通常一个HTTP资源API。这些服务是建立在业务能力和独立部署的完全自动化部署机械。有一个最低限度的集中管理这些服务,可以用不同的编程语言编写和使用不同的数据存储技术。。

开始解释microservice风格是有用的比较它的整体风格:单一的应用程序构建为一个单元。企业级的应用程序通常都是建在三个主要的部分:一个客户端用户界面(包括HTML页面和javascript在用户的机器上运行在浏览器中)一个数据库(包括许多表插入一个通用的、通常关系数据库管理系统),和一个服务器端应用程序。服务器端应用程序将处理HTTP请求,执行域逻辑,从数据库检索和更新数据,并选择和填充HTML视图被发送到浏览器。这个服务器端应用程序是一个庞然大物——一个单一的逻辑执行[2]。对系统涉及的任何更改服务器端应用程序的构建和部署一个新版本。。

这样一个庞大的服务器是一个自然的方法建立这样一个系统。你所有的逻辑来处理一个请求运行在一个单一的过程中,允许你使用你的语言的基本功能将应用程序划分到类、函数和名称空间。小心一些,您可以运行和测试应用程序开发人员的笔记本电脑,并使用一个部署管道,以确保更改正确测试和部署到生产环境中。你可以横向规模背后的许多实例运行负载均衡器的庞然大物。。

独立应用程序可以成功,但越来越多的人们感到挫折与他们,尤其是随着越来越多的应用程序被部署到云上。改变周期联系在一起——改变应用程序的一小部分,需要重建整个庞然大物和部署。随着时间的推移,往往很难保持良好的模块化结构,使其难以保持变化,应该只影响一个模块在模块。扩展需要整个应用程序,而不是部分,需要更多的资源。。

图1:巨石和bet188足球-118金宝博 网页

这些挫折导致microservice建筑风格:构建应用程序套件的服务。以及服务是独立部署和可伸缩的,每个服务还提供了一个公司模块边界,即使考虑到不同服务不同的编程语言编写的。也可以由不同的团队管理。。

我们不主张microservice风格小说或创新,这要追溯到至少bet188足球Unix的原则。但我们认为并没有足够多的人考虑microservice架构,许多软件发展会更好如果他们使用它。。


Microservice体系结构的特点

我们不能说有一个正式的定义microservices架构风格,但我们可以尝试描述我们所看到的作为架构符合标签的共同特征。与任何轮廓共同特征的定义,并不是所有microservice架构的特点,但我们确实认为大多数microservice架构表现特征。虽然我们作者的活跃成员,而宽松的社区,我们的目的是尝试的描述我们所看到的在自己的工作和团队我们知道的类似努力。特别是我们没有制定一些符合定义。。

通过服务的组件化

只要我们一直参与软件行业,有被堵在一起希望构建系统组件,我们看待事物的方式是在物质世界。在过去的几十年里我们已经看到了相当大的进展与大纲要的公共库大多数语言平台的一部分。。

在谈到组件我们遇到的困难的定义是什么让一个组件。我们的定义是,组件一个软件单元是独立可更换和升级。。

Microservice架构将使用图书馆,但是他们的组件化的软件的主要方式是通过分解成服务。我们定义链接到一个程序的组件和使用内存函数调用,调用服务是进程外组件通信机制,比如web服务请求,或远程过程调用。(这是一个不同的概念,在许多面向对象程序服务对象[3]。)

使用服务组件的一个主要原因(而不是库)是独立部署的服务。如果你有一个应用程序[4]由多个库在一个单一的过程中,改变单个组件导致不得不重新部署整个应用程序。但是如果应用程序分解为多个服务,你可以预期许多单一服务更改只需要重新部署该服务。这不是绝对的,一些变化会改变服务接口导致一些协调,但一个好的microservice架构的目的是最小化这些通过凝聚力服务边界和演化机制在服务合同。。

使用服务组件的另一个结果是一个更明确的组件接口。大多数语言没有一个好的机制来定义一个显式的发布接口。通常只有文档和纪律,防止客户打破组件的封装,导致过度紧缩组件之间的耦合。服务更容易避免通过使用显式的远程调用机制。。

使用这样的服务也有缺点。比进程间调用远程调用更贵,因此远程api需要粗粒度的,往往是更不好用。如果你需要改变组件之间的责任分配,这些运动的行为更难做当你跨越进程边界。。

粗略看来,我们可以观察到服务映射到运行时过程,但这只是第一次近似。服务可能由多个进程,将永远是开发和部署在一起,如应用程序进程和一个数据库,只有使用的服务。。

围绕业务能力

当大型应用程序分解成多个部分,通常管理侧重于技术层,导致UI团队,数据库服务器端逻辑团队和团队。当团队分离沿着这些线路,甚至简单的改变可以导致跨团队项目时间和预算批准。一个聪明的团队将优化在这个和丰满两害取其轻,就迫使逻辑到哪个应用程序访问。逻辑换句话说。这是Conway法则的一个例子[5]在行动。。

任何组织,bet188足球年代一个系统(广义)将产生一个bet188足球的结构组织的通信结构的副本。。

梅尔文康威,1967

图2:康威的法律行动

microservice划分方法不同,分裂成围绕服务业务能力。这样的服务需要的broad-stack实现软件业务领域,包括用户界面、持久性存储,和任何外部合作。因此跨职能团队,包括所需的全套技能发展:用户体验,数据库,和项目管理。。

图3:服务边界强化了团队边界

一个公司以这种方式组织www。comparethemarket。com。跨职能团队负责建造和运营每个产品,每个产品是分裂成许多单个服务通信通过消息总线。。

大型独立应用程序总是可以模块化的业务能力,尽管这不是常见的情况。当然我们会敦促大型团队构建单一的应用程序将业务本身。我们看到这里,主要问题是,他们往往是有组织的太多的上下文。如果这些模块边界的庞然大物跨越许多很难对个人团队的成员把他们放进他们的短期记忆。另外我们看到模块化线需要大量的纪律执行。服务组件所需的一定更明确的分离更容易保持团队界限清楚。。

产品没有项目

大多数应用程序开发工作,我们看到使用项目模型:目的是提供一些软件然后被视为完成。在完成软件移交给维护组织和项目团队建立解散。。

Microservice支持者倾向于避免这种模式,而是认为一个团队应该拥有一个产品在其完整的一生。一个常见的灵感这是亚马逊的概念”你建立,你运行它””在一个开发团队负责软件在生产。这让开发人员日常接触他们的软件如何表现在生产和增加接触他们的用户,他们必须承担至少一些支持的负担。。

产品的心态,在与业务功能联系的关系。而不是看软件的功能完成,有一个持续的关系,问题是软件如何帮助用户提高业务能力。。

没有理由不能用同样的方法独立应用程序,但小粒度的服务可以更容易地创建服务开发者和用户之间的人际关系。。

聪明的端点和哑管道

在构建之间的通信结构不同的过程时,我们看到许多产品和方法,压力把重要的智慧投入到通信机制本身。一个很好的例子是企业服务总线(Enterprise Service Bus,ESB),在ESB产品通常包括复杂的消息路由设备,编排,转换和应用业务规则。。

microservice社区支持另一种方法:聪明的端点和哑管道。应用程序由microservices旨在尽可能分离和凝聚力,他们拥有自己的域逻辑和行动更加古典Unix意义上的过滤器,接收到一个请求时,应用适当的逻辑并产生响应。这些都是精心设计使用简单RESTish协议而不是复杂的协议,比如WS-Choreography或BPEL编配由中央工具。。

最常使用的两个协议HTTP请求-响应与资源的API和轻量级的消息传递[8]。第一个是最好的表达

后面的是网络,而不是网络

——伊恩•罗宾逊

Microservice团队使用万维网的原则和协议(和在很大程度上,Unix)是建立在。可以缓存经常使用的资源很少的努力开发人员或操作。。

常用的第二种方法是在一个轻量级消息总线消息传递。基础设施的选择通常是愚蠢的(哑充当消息路由器)——简单的实现如RabbitMQ或ZeroMQ不要比提供一个可靠的异步织物——智慧仍住在生产和消费的端点信息;在服务。。

在铁板一块,执行进程内组件和它们之间的通信是通过方法调用或函数调用。最大的问题在改变一个庞然大物microservices在于改变了沟通模式。天真的转换从内存中的方法调用RPC导致的通信不表现良好。相反,你需要更换与一个粗粒度的细粒度的沟通方法。。

分散治理

集中治理的后果之一是在单一的技术平台上倾向于标准化。经验表明,这种方法是压缩——不是每一个问题都是钉子和锤子不是每个解决方案。我们喜欢使用正确的工具工作,在独立应用程序可以利用不同的语言在某种程度上,这并不常见。。

将整块石料的组件到服务构建它们时我们有一个选择。您想要使用节点。js站立会议一个简单的报告页面吗?就去做吧。c++为一个特别粗糙的近实时组件?很好。你想交换的不同味道的数据库更好的适合读一个组件的行为吗?我们有技术重建了他。。

当然,仅仅因为你可以做一些事情,并不意味着你应该以这种方式——但分区系统意味着你可以选择。。

团队建设microservices喜欢不同的标准方法。而不是使用的一组定义的标准的想法写在纸上他们喜欢某个地方生产有用的工具,其他开发人员可以使用它来解决他们面临的类似问题。这些工具通常是从实现与更广泛的集团和共享,有时,但不仅限于使用一个内部的开源模式。现在,git和github已经成为事实上的版本控制系统的选择,开源实践越来越常见的内部。。

Netflix是一个很好的例子,一个组织,遵循这一理念。分享有用,最重要的是,一些久经沙场的代码库以相似的方式鼓励其他开发人员来解决类似的问题然而敞开了大门如果需要选择一个不同的方式。共享库往往集中在数据存储的常见问题,进程间通信和我们进一步讨论以下,基础设施自动化。。

microservice社区,开销尤其缺乏吸引力。这并不是说社会不重视服务合同。恰恰相反,因为会有更多。只是他们看着这些合同管理的不同方式。像模式宽容的读者消费者驱动的契约通常应用于microservices。这些援助服务合同独立进化。执行消费者驱动的契约作为构建的一部分,增加信心和你的服务是否提供快速反馈功能。事实上我们知道一个团队在澳大利亚开车构建的新服务与消费者驱动的契约。他们使用简单的工具,可以定义一个服务合同。这变成了自动构建的一部分之前,新服务甚至写的代码。然后构建服务只,它满足合同——一种优雅的方法避免“YAGNI”[9]困境在构建新的软件。身边长大的这些技术和工具,限制中心合同管理的需要通过减少颞服务之间的耦合。。

也许分散治理的最高点是构建/运行它风气流行通过亚马逊。团队负责的所有方面他们构建的软件包括操作软件的24/7。权力下放的这种程度的责任绝不是常态,但我们看到越来越多的公司把责任开发团队。Netflix是另一个组织已经采用了这种精神[11]。被你每天晚上凌晨3点醒来寻呼机当然是一个强大的诱因在编写代码时对质量的关注。这些想法是尽可能远离传统的集中式控制模型是可能的。。

分散的数据管理

分散的数据管理提出了许多不同的方法。在最抽象的层面上,这意味着世界将不同系统之间的概念模型。时这是一个常见的问题整合在一个大型企业中,客户的销售视图将不同于支持观点。一些事情被称为客户的销售视图可能不会出现在所有支持的观点。那些可能有不同的属性和(更糟糕的)公共属性略有不同的语义。。

这个应用程序之间的问题是常见的,但也可以发生应用程序,特别当应用程序分为单独的组件。一个有用的方式来思考这是域驱动bet188足球的概念限界上下文。DDD的复数域分为多个有限的上下文和地图之间的关系。这个过程是非常有用的对单片和microservice架构,但有一个自然的相关服务和上下文之间的界限,帮助澄清,当我们描述业务功能中,加强分离。。

对概念模型以及分散决策,microservices也分散数据存储决策。而独立应用程序喜欢一个逻辑数据库持久性数据,企业往往更喜欢一个数据库在一系列应用程序——许多这些决策驱动通过供应商的商业模型的许可。bet188足球-118金宝博 网页 喜欢让每个服务管理其自己的数据库,相同的数据库技术的不同实例,或者完全不同的数据库系统——一个方法调用通晓多种语言的持久性。您可以使用通晓多种语言的持久性在铁板一块,但似乎与microservices更频繁。。

分散在microservices负责数据更新管理有一定的意义。处理更新的常见方法是使用事务时保证一致性更新多个资源。这种方法通常用在巨石。。

使用事务这样有助于一致性,但实施重大临时耦合,这是有问题的多个服务。分布式事务是出了名的难以实现,因此microservice架构强调transactionless之间的协调服务,明确认识到,可能只是最终一致性和一致性问题是由补偿处理的操作。。

选择以这种方式来管理不一致是一个新的挑战对于许多开发团队,但这是一个通常匹配业务实践。通常企业处理一定程度的不一致,以快速响应需求,同时拥有某种逆转过程来处理错误。代价是值得的,只要修复错误的成本小于失去业务的成本在更大的一致性。。

基础设施自动化

基础设施自动化技术已经进化出巨大的在过去的几年里,云计算的发展特别是AWS减少了操作的复杂性,部署和操作microservices。。

许多产品或系统的构建与microservices正在建造的团队拥有丰富的经验持续交付前体,持续集成。团队构建软件充分利用基础设施的自动化技术。这是说明了在构建管道所示。。

图5:基本构建管道

因为这不是一篇关于持续交付,我们将唤起注意几个关键特性。我们希望尽可能多的信心,我们的软件是工作,所以我们大量的运行自动化测试。工作软件的推广管道意味着我们了自动化部署每一个新的环境。。

单一的应用程序将建造,测试和推行这些环境相当happlily。事实证明,一旦你投资于自动化生产的道路铁板一块,然后部署更多的应用程序不再显得那么可怕了。记住,CD的目的之一是使部署无聊,所以是否一个或三个应用程序,只要它仍然无聊没关系[12]。。

我们看到团队的另一个领域使用广泛的基础设施自动化管理microservices生产。与上面的断言,只要部署很无聊没有那么多的巨石和microservices之间的区别,每个可以截然不同的经营格局。。

图6:模块部署往往不同

bet188足球失败

使用服务组件的结果是,应用程序需要bet188足球ed以便他们能容忍失败的服务。任何服务调用失败由于不可用的供应商,客户端必须应对这种尽可能优雅地。这是一个缺点而整体bet188足球,因为它引入了额外的复杂性来处理它。结果是microservice团队不断反思服务失败如何影响用户体验。Netflix的猴军队诱发失败的服务,甚至数据中心在工作日测试应用程序的韧性和监控。。

这种自动化测试在生产足以让大多数操作组的颤抖通常一周下班前。这并不是说,整体建筑风格不能复杂的监视设置——只是不太常见的在我们的经验。。

自服务可以在任何时间失败,重要的是能够探测到故障迅速,如果可能的话,自动恢复服务。Microservice应用程序把重点放在应用程序的实时监控,检查两个架构元素(每秒多少请求是数据库)和业务相关的指标(如收到多少订单每分钟)。语义监视可以提供早期预警系统,出错的触发开发团队跟进调查。。

这是特别重要的microservices架构因为microservice对编排和偏好事件的合作导致紧急行为。虽然许多学者赞扬偶然出现的价值,事实是,紧急行为有时是一件坏事。监控是至关重要的发现坏的紧急行为迅速,因此它可以固定。。

巨石可以建立透明如microservice——事实上,他们应该。所不同的是,你绝对需要知道当断开服务运行在不同的流程。图书馆在同一个过程这种透明度不太可能是有用的。。

Microservice团队希望看到复杂的监控和日志记录设置为每个单独的服务,如仪表板显示向上/向下状态和各种操作和业务相关的度量标准。细节断路器状态、当前吞吐量和延迟是我们经常在野外遇到其他的例子。。

进化bet188足球

Microservice从业者,通常是来自一个进化bet188足球背景和看到服务分解作为进一步的工具,使应用程序开发人员能够控制他们的应用程序没有减缓变化的变化。变更控制并不意味着改变还原,用正确的态度和工具你可以频繁,快,和控制更改软件。。

每当你试图打破一个软件系统组件,你面对的决定如何分割块——是什么原则我们决定切片应用程序?关键属性的组件是独立的更换和升级功能的概念[13]——这意味着我们找点我们可以想象改写一个组件而不影响它的合作者。事实上许多microservice组织更进一步明确期望很多服务被取消,而不是长期进化而来。。

《卫报》网站是一个很好的例子,一个应用程序,该应用程序是bet188足球ed和建造作为一个庞然大物,但在microservice方向一直在发展。庞然大物仍然是网站的核心,但他们更愿意添加新的特性,通过构建microservices使用整块石料的API。这种方法特别方便的特点,在本质上是暂时的,如专门的页面处理体育赛事。这样一个网站的一部分,很快可以使用快速发展语言,和删除事件结束后。我们见过类似的方法在金融机构添加新的服务市场机会和丢弃后几个月甚至几周。。

强调可替换性的一种特殊情况是更一般的模块化原则bet188足球,这是推动模块化的模式变化[14]。你想让事情改变在同一时间在同一个模块。很少部分的系统,改变应该在不同的服务,目前正在大量生产。如果你发现自己一再改变两种服务结合在一起,这是一个迹象,表明他们应该合并。。

将组件放入服务添加一个更细粒度的发布计划的机会。与一个庞然大物任何更改需要一个完整的构建和部署整个应用程序。microservices,然而,你只需要重新部署服务(s)您修改。这可以简化和加快发布过程。不利的一面是,你需要担心改变一个服务打破了消费者。传统的集成方法是使用版本控制来处理这个问题,但microservice世界的偏好只使用版本作为最后的手段。我们可以避免很多版本控制bet188足球尽可能宽容的荷兰国际集团(ing)服务供应商的变化。。


bet188足球-118金宝博 网页 未来吗?吗?

我们在写这篇文章的主要目的是解释microservices的主要思想和原则。花时间做这个我们显然认为microservices建筑风格是一个重要的想法——一个值得认真考虑的企业应用程序。我们最近建立了多个系统使用的风格和知道的人使用和支持这种方法。。

我们知道那些以某种方式开拓建筑风格包括亚马逊,Netflix,《卫报》,英国政府数字服务,房地产。com。非盟向前,comparethemarket。com。2013年会议电路是全公司的例子搬到这类microservices——包括特拉维斯CI。除了有很多组织长期以来一直做我们microservices类,但是没有使用这个名字。(通常这是贴上SOA——尽管,正如我们已经说过了,SOA有许多矛盾的形式。。[15])

然而,尽管有这些积极的体验,我们不认为我们确定microservices是软件体系结构的未来发展方向。当我们经历到目前为止是积极的独立应用程序相比,我们意识到这一事实对我们没有足够的时间已经过了完整的判断。。

你的架构决策的真正后果往往是几年之后让他们只明显。我们已经看到项目,一个好的团队,模块化的强烈愿望,已经建立了多年腐朽的整体体系结构。许多人相信这种衰变与microservices不太可能,因为服务边界是明确的,而且很难修补。然而,直到我们看到足够的系统有足够的年龄,我们不能真正评估microservice架构成熟。。

当然有原因之一可能期望microservices成熟不佳。在任何努力组件化,成功取决于软件符合组件。很难找出具体组件边界应该在哪里。进化bet188足球识别正确的边界的困难,因此它容易重构他们的重要性。但是当你的组件服务与远程通信,188足球比分直播比与进程内库更加困难。移动代码很难跨越服务界限,任何接口更改需要参与者之间的协调,向后兼容性层需要补充道,和测试更加复杂。。

另一个问题是,如果组件不干净,那么所有你要做的就是将复杂性从内部组件,组件之间的连接。不只是这只是移动的复杂性,它移动到一个不太明确的地方,更难控制。很容易认为是更好的,当你看着一个小,简单的组件,而失踪的混乱之间的连接服务。。

最后,还有团队技能的因素。新技术往往是采用更熟练的团队。但是一种更有效的技术更熟练的团队不一定要为低熟练的工作团队。我们看到很多不熟练的团队构建混乱的整体架构的情况下,但这需要时间来看看会发生什么,当这种混乱与microservices发生。一个贫穷的团队总是创建一个可怜的系统——很难判断microservices减少混乱,在这种情况下甚至更糟。。

一个合理的论点我们听到的是,你不应该开始microservices架构。而不是首先一个庞然大物保持模块化,并把它分割为microservices庞然大物一旦成为一个问题。(虽然这个建议并不理想,因为一个良好的进程内界面通常不是一个好的服务接口。)

所以我们写这谨慎乐观。到目前为止,我们已经看够了microservice风格觉得可以一件值得的事情。我们不能肯定地说,我们将结束,但软件开发的一个挑战是,你只能做出决定基于不完全信息,你现在必须手。。


分享:
如果你发现了这篇文章有用,请分享它。我很欣赏的反馈和鼓励

关于类似的主题的文章…

…看看以下标记:

受欢迎的 应用程序体系结构 web服务 microservices

脚注

1:术语“microservice”讨论了在威尼斯附近的一个工厂软件架构师,2011年来描述参与者所认为的一种常见的建筑风格,他们中的许多人最近已经被探索。2012年5月,同一组决定”microservices”最合适的名字。詹姆斯提出这些想法作为一个案例研究在2012年3月在克拉科夫在33度bet188足球-118金宝博 网页 ——Java,Unix弗雷德和乔治。大约在同一时间。Adrian Cockcroft Netflix,称这种方法为“细粒度的SOA”是风格在网络规模的先驱,是本文中提到的许多其他人——乔·沃尔恩丹北,埃文小鲑鱼和格雷厄姆Tackley。。

2:庞然大物这个词一直在使用的Unix社区有一段时间了。它出现在Unix编程的艺术来描述系统,太大了。。

3:许多面向对象bet188足球人,包括自己,使用术语服务对象域驱动bet188足球对对象执行一个重要的过程,不是绑定到一个实体。这是一个不同的概念,我们如何使用“服务”在这篇文章中。可悲的是服务这个词有两个含义,我们不得不忍受polyseme。。

4:我们考虑一个应用程序是一个社会建构代码库绑定在一起,群功能,和身体的资金。。

5:原来的纸梅尔文康威网站上可以找到在这里

6:我们不能抵制提及Jim Webber的声明,ESB代表”过分的意大利面条盒””。。

7:Netflix让显式的联系——直到最近指SOA架构风格的细粒度。。

8:在极端的规模,组织经常搬到二进制协议protobufs为例。系统使用这些仍然表现出智能终端的特点,哑管道和权衡透明度的规模。大多数web属性,当然绝大多数企业不需要做出权衡,透明度可以是一个重大胜利。。

9:”YAGNI”或“你不需要它”是一个XP的原则和劝告不添加特性,直到你知道你需要他们。。

10:有点不靠我们声称巨石是单身语言——为了今天网络上构建系统,你可能需要知道JavaScript和XHTML、CSS,你选择的服务器端语言、SQL和ORM方言。几乎没有单一的语言,但是你知道我们的意思。。

11:Adrian Cockcroft特别提到了“开发自助服务”和“开发人员运行他们写道:“(原文如此)这个出色的演讲在2013年11月,Flowcon交货。。

12:我们在这里有点不靠。显然部署更多的服务,在更复杂的拓扑是更加困难比部署一个庞然大物。幸运的是,模式降低这种复杂性——投资工具仍然是必须的。。

13:事实上,丹北指的是这种风格可替换的组件体系结构而不是microservices。因为这似乎跟我们喜欢后者的一个子集特征。。

14:Kent Beck强调这是一个他bet188足球原则实现模式。。

15:和SOA不是这段历史的根源。我记得有人说”我们这样做已经好几年”当SOA术语出现在本世纪的开始。一个论点是,这种风格认为其根源是COBOL程序通过沟通的方式在企业计算的早期数据文件。在另一个方向,一个可以说microservices是一样的Erlang编程模型,但应用于一个企业应用程序上下文。。


参考文献

虽然这不是一个详尽的清单,有许多来源从业者从或汲取灵感信奉asimilar哲学本文中描述。。

博客和在线文章

演讲

论文

  • lLamport。”实现可靠的DistributedMultiprocess系统”1978 http://research。微软。com/en-us/um/people/lamport/pubs/implementation。pdf
  • lLamport, R。肖斯塔克,M。皮斯。”拜占庭GeneralsProblem”1982(可用)http://www。cs。康奈尔大学。edu/courses/cs614/2004sp/papers/lsp82。pdf
  • R。T。菲尔丁。”建筑风格和bet188足球ofNetwork-based软件架构”,2000 http:/ / www。ics。uci。edu/ ~菲尔丁/酒吧/论文/。htm
  • E。一个。布鲁尔。”对健壮的分布式系统”,2000 http:/ / www。cs。加州大学伯克利分校。edu/ ~啤酒/ cs262b - 2004 / PODC-keynote。pdf
  • E。布鲁尔。”帽十二年后:“规则”已经改变了”,2012年,http://www。infoq。com/articles/cap-twelve-years-later-how-the-rules-have-changed

进一步的阅读

上面的列表了引用时,我们使用的最初在2014年初写了这篇文章。为最新的来源列表更多信息,看一下Microservice资源指南。。

重大修改

2014年3月25日:最后一部分是microservices未来?吗?

2014年3月24日:添加部分进化bet188足球

2014年3月19日:添加部分基础设施自动化和bet188足球失败

2014年3月18日:添加部分分散的数据

2014年3月17日:添加部分分散治理

2014年3月14日:添加部分智能端点和哑管道

2014年3月13日:添加部分产品没有项目

2014年3月12日:添加部分组织在业务功能

2014年3月10日:发表了第一部分