微服务的漫长历史

与许多人认为的不同,微服务的概念已有相当长的历史,SOA(面向服务的体系架构)也不是90年代才被提出的。在最近举办的伦敦微服务大会上,Greg Young就微服务核心概念的前世今生进行了演讲。其中他表示,在过去的50年间,我们一直在使用服务这一概念背后的核心思想。

Young引用了Martin Fowler对微服务主要特性的描述,最重要的是其独立替换系统中单个服务的能力、对业务能力的组织以及智能端点(smart endpoint)与哑管道(dumb pipes)的使用,Young提到的这些特性SOA也同样具备。

Young提及,在1970年代最初提出的面向对象模型中,可以将一个对象理解为一个小型的计算机,用户通过向它发送信息使其工作。同时期的参与者(Actor)模式也是基于相似的概念,将参与者作为一个小计算机,用户向参与者的邮箱发送信息。它们都是微服务核心概念的前身,虽然使用的工具或消息传递方式不尽相同,但是内在的思想并没有改变。如今我们认为SOA已经失败了,而微服务将会成功,但Young表示SOA的基础概念并没有任何错误,微服务的优点在SOA架构中也早已存在。

回顾近50年的经验教训,Young引用了分布式计算第一定律来概括:如果不是真正需要就不要让系统分布式。将应用分成多个服务,再将它们部署在同一台服务器上,甚至在同一个进程上,这样做并没有不对。Young表示,大部分系统,尤其是小型业务系统,并不需要分布式来提供可伸缩性,但是可以通过分布式来提升可用性。

我们真正需要的是服务间的隔离。当各个服务在同一服务器的各自进程中运行时,我们可以确保服务间遵循相互的协议。进一步隔离的方式是将各个服务运行在独立的Docker容器中。这样减少了各服务间内容的共享,从而达到更好的隔离性。再进一步可以将每个服务运行在独立的节点上。

选择一定层级隔离的原因之一是为了处理相关的错误。当在同一个进程中运行所有的微服务时,如果进程重启,所有的服务会被停止。而将服务运行在各自的进程中的话,单个进程重启只会影响一个服务。当然重启服务器会停止所有服务,所以将各个服务部署在独立的服务器上或双服务器双实例,会大大减少重启给服务可用性带来的影响。

当然每一种隔离层级都伴随着相应的成本。使用一台服务器多个进程相对于每个服务一个节点更容易实现。这其中并没有谁对谁错,有的只是各因素间的权衡。在提升系统的隔离级别的同时,你也会相应增加系统的成本和复杂度。Young同时引用Simon Brown的话:

如果你无法在单进程的独立应用上实现构建,那你如何确信在引入网络通信后问题可以得到解决?

Young认为,使用不同的隔离策略的一个优势是我们不需要提前做出一些决定,我们也不需要保持生产环境和开发环境使用一样的隔离级别。他表示这也是使用微服务架构的一个主要好处。

明年的伦敦微服务大会将与2017年11月6至7日举办。

查看英文原文:The Long History of Microservices

本文转自d1net(转载)

时间: 2024-10-27 09:02:30

微服务的漫长历史的相关文章

基于Nginx搭建一个安全的、快速的微服务架构

本文讲的是基于Nginx搭建一个安全的.快速的微服务架构[编者的话]本文改编自Chris Stetson发表在nginx.conf 2016上的一个有关如今的微服务以及如何使用Nginx构建一个快速的.安全的网络系统的演讲,大家可以在YourTube上回看此次演讲. 0:00 - 自我介绍 Chris Stetson:Hi,我的名字是Chris Stetson,我在Nginx带领专业服务部门,同时也领导微服务实践. 今天我们要谈论微服务以及如何使用Nginx构建一个快速的.安全的网络系统.在我们

Java微服务开发指南 -- 使用Dropwizard构建微服务

使用Dropwizard构建微服务     Dropwizard的历史要早于Spring Boot和WildFly Swarm,它最早是在2011.12发布的v0.1.0版本,在本文编写的过程中,它已经发布了v0.9.2版本,而v1.0.0版本也在准备中了.Dropwizard是Coda Hale在Yammer公司时创立的,它旨在提升公司分布式系统的架构(现在叫:微服务).虽然它最早被用来构建REST Web 服务,而现在它具备了越来越多的功能,但是它的目标始终是作为轻量化.为生产环境准备且容易

从多租户隔离到高可用,谈DaoShip微服务架构演进

本文根据DCOS联盟第3期线上分享整理而成   讲师介绍姜冲 DaoCloud高级软件工程师   Docker Contributor,负责公有云构建服务.DaoShip的设计与研发. 对微服务架构设计与实现有着丰富的理论与实践经验.     大纲:   正确构建镜像的目标和所需资源,以及如何规划和构建服务: 基于优良的微服务架构设计及网络层优化,为数十万用户的服务使用提供稳定高速的构建能力: 不同运营需求下的技术架构演进: 微服务带给客户的价值.   DaoShip 作为 DaoCloud S

SoundCloud:我们最终是如何使用微服务的?

本文讲的是SoundCloud:我们最终是如何使用微服务的,[编者的话]很多的技术文章着重介绍的都是项目后总结出的最佳实践,本文从另外的角度,介绍项目中解决问题的整个探索过程,详细讲述了在最终使用微服务架构之前所做的种种分析和尝试,这对于正在尝试解决问题的技术人员来说有很大的启示作用. 微服务是近期的热点. 当我在SoundCloud工作时,负责从一个巨大的Ruby on Rails应用程序里迁移到众多的微服务上.我已经多次讲述这个过程的技术问题了,在演讲里,也在SoundCloud的工程师博客

微服务——分解应用以实现可部署性和可扩展性

本文描述了日渐流行的微服务架构模式.微服务背后大的理念是将大型.复杂且历时长久的应用在架构上设计为内聚的服务,这些服务能够随着时间的流逝而演化.微服务这个术语强烈建议服务应该是很小的. 社区中有些人甚至建议构建10-100代码行(LOC)的服务.但是,尽管很小的服务是我们想要的,但这不应该是主要的目标.你应该致力于将系统分解为服务,以解决下面所讨论的开发和部署问题.一些服务可能确实会很微小,但有些可能会非常大. 微服务架构的本质并不新鲜.分布式系统的理念历史非常悠久.微服务架构也很类似于SOA.

从面向服务架构(SOA)学习:微服务时代应该借鉴的5条经验教训

[编者按]本文作者为 Matt McLarty,通过介绍 SOA 的兴衰变化,总结了微服务应该借鉴的5条经验教训.文章系国内 ITOM 管理平台 OneAPM 编译呈现. SOA 的兴衰变化让我们更了解如何充分利用微服务 正如笔者在上文<微服务架构是敏捷软件架构>中提到的,笔者对微服务架构的第一反应,就是质疑它跟面向服务架构(SOA)有何区别.还有很多人将这两种架构联系在一起.詹姆斯·刘易斯和马丁·福勒在他们的权威博客中包含了一个侧边栏,进行微服务和 SOA 的对比.对此,怀疑派做出的回应是二

微服务框架和工具大全

在<Java微服务>一书中,我们使用 Spring Cloud,它提供使微服务非常容易地开发所需的所有工具和平台.Spring Cloud使用 Netflix开放源码软件( OSS).让我们探讨 Netflix OSS--一个完整的软件包. Netflix开放源码软件(OSS) Netflix开放源码软件中心是基于 Java的微服务开放源码项目最流行和最广泛使用的开放源码软件.世界上最成功的视频租赁服务依赖于它.Netflix已经有超过 4000万用户,他们在全球各地使用其服务.Netflix

微服务技术栈选型,看了这个别的可以不用看了

前言 大家好,我是敖小剑,今天给大家分享的主题是"利用开源社区打造微服务生态体系". 主要内容如下: 内容分为三个大的部分: 1. 微服务的核心技术 2. 目前可选的开源微服务框架 3. 为微服务提供支撑的基础设施 需要说明的是,由于时间有限,而分享的内容数量太多,因此: 1. 内容都只是罗列,不展开具体介绍 2. 个人知识面有限,列举过程中范围覆盖不足有所遗漏是必然的 3. 部分场景我会给出一些个人建议,但是请注意这些都是我的一家之言,仅供参考 下面列出的是今天将会介绍的内容,数量非

为什么公司采用微服务以及他们如何获取成功

本文讲的是为什么公司采用微服务以及他们如何获取成功[编者的话]微服务架构设计是最近讨论最热的话题.随着最近几年互联网行业的迅猛发展,随着公司或者组织业务的不断扩张,需求不断的增加以及用户量的不断增加,单块架构的优势已逐渐无法适应互联网时代的快速变化,面临着越来越多的挑战.我们是否要开始使用微服务架构来避免单体式架构带来的挑战?微服务架构真的是我们想要的吗?什么样的场景应该拥抱微服务架构?本文从非技术的角度阐述了对微服务的理解,为什么公司选择微服务架构设计,以及分享使用微服务架构的成功经验. 这篇