0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

微服务是如何演变的

lhl545545 来源:电子发烧友网 2018-02-07 16:25 次阅读

微服务是如何演变的

微服务的概念产生是顺应这样的需求:为了开发出速度更快、更有弹性且用户体验更佳的应用。这个概念等同于具有可扩展性的自动化系统,在简单的商业化架构上运行软件。应用快速开发的需求影响到了全部公司,以及如何看待历来业务安排的方式。来自微服务的新实践代表着需要小型团队以对于公司来说陌生的方式——自上而下进行迭代。这意味着企业运作的方式将获得彻底的改变。

现在在针对应用架构与微服务的新思考方面,容器生态系统逐渐成为核心主题。根据Battery Ventures技术人员Adrian Cockcroft的说法:关于微服务有一些基本的原则需要思考。首先,如今构建软件的价格更为低廉,容器的出现降低了成本。Docker被所有人纳入蓝图——从软件供应商到终端用户,所有人都在尝试找出容器的用法,因为用它就能加快软件的交付节奏。不过这也代表着要安装的系统是应用级别的,也就是说在应用的开发、部署与管理方面出现了不同的需求。

举个例子,对于要处理服务与堆栈范围增长的公司来说,监控比以往更加重要。要想解决问题,必须对数据日志进行分析,而这些日志很可能横跨临时节点与多项服务。由于需要细化监控与加强工具,从业人员能更好地掌握这些构建模块对于应用所依赖的许多潜在微服务的影响。

那么起作用的是什么呢?从公司与API开始:基于微服务的产品团队与另一个基于终端的平台团队之间靠API连接,通过API调用以及企业基础架构持续作出相应的回应来生效。

微服务被定义为特定背景下松耦合、面向服务的架构,允许在无需理解其他部件运作原理的情况下进行更新。整个服务是跨公司构建的,但所有权却在同一个地方。微服务架构提供了更多系统间的点对点调用。消息形式必须灵活,所有部件在无论哪个版本中都能运作。这意味着在构建微服务架构时,我们需要一些工具来配置、探索、输送流量、观察与构建系统。

IBM杰出的工程师兼IBM云计算中心的CTO Andrew Hately作出了类比:15年前人们可能需要每周查看一下自己的银行余额,而互联网允许人们实时查看余额甚至做出进一步操作,也许随着智能手机的发展,很多事情都发生的改变。如今,人们可以即时访问自己的账户收支信息。这种速度与即时性代表着:在过去的5-10年内,企业提供服务的发展速度必须跟得上社交网络与搜索公司发展的速度。公司必须处理员工、消费者、系统与所有可能组合之间的持续互动——就像Hately所说的完全互联与持续可用。这意味着企业流程需要重建,需要将所有东西连接起来。如果公司不进行这方面的尝试,也无法提供相应功能的话,很快就会面临收入减少甚至出局的局面。

Hately表示:“工具非常关键。” 有数百家网站不支持代码,收到反馈后,在下一组测试用例中消费者就能使用它了。这种严格的开发过程提供了一种企业工作方式,也为微服务发展提供了思考方式。DevOps中的ops也会执行这样的工作。如果你有一小段代码并为其定义指标的话,就能细分出哪些会成功,哪些会失败。

IBM通过为消费者及内部团队构建反馈通道与成功标准,在敏捷、DevOps、精益生产与其他迭代进程中结合最佳实践,创建了名为IBM Bluemix Garage Method方法的企业方法论。IBM Bluemix Garage Method方法将企业解决方案的可靠性及可测试性与最新开放社区在规模质量上的最佳实践结合起来,持续创新、创建持续交付渠道并在云平台上进行部署。这种方法很有价值,向所有人开放资源能够提高个人、团队与全公司的DevOps技能,以及管理与监控能力。

软件相关的契约

第一代的容器管理平台支持这些速度更快的开发进程。Docker的产品高级VP Scott Johnston表示,在Docker Compose中,微服务促进了工具发展,YAML文件扮演了描述不同组件的清单(manifest)。Compose让开发人员得以用抽象的方式描述多容器应用,它可以描述web容器、数据库容器、负载均衡及其间的逻辑关系,无需连网或部署存储。

Engine Yard的Matt Butcher表示:微服务是软件相关的契约。有些人会辩称微服务是正确执行的面向服务架构(SOA)。开发者想要的是有用、功能丰富且结构优雅的架构。微服务使得软件开发回归Unix的根源——将一件事完成得很好。用Unix可以任意输出命令。微服务不止在如何优秀地完成工作方面,同时在如何与环境互动方面也表现出契约性。如果运行良好,它所做的工作就像是优秀的Unix shell脚本。

举个例子,Kubernetes清单文件格式扮演着契约的角色,这个清单提供了所需的来源细节、存储卷定义、存储需求等,扮演了强大的DevOps类契约。它让开发者和运营者了解想要的内容。开发者与运营者之间的关系不再如同之前那样——开发者被迫只管自己的一摊工作。

一张清单可能会包括应用元数据,加上具体版本的描述性参数,其中可能还有多个清单。也许是一个实例、一个pod清单、一个复制控制器(replication controller)或者一个服务定义,还有组成文件的已知来源位置。任意标签可能由图表中所包括的组件来定义。

Butcher表示:“应用开发者在这方面的体验够深刻了。一旦出现典型问题,就会说丢过墙去,各管各的,反正有DevOps来负责生产环境中的运行事宜,开发者只负责开发,总有一个切换过程,往往会成为各扫门前雪的后果。”

如果开发者构建容器,会存在一定的水平保证(由抽象层决定):这些容器的运行方式在生产阶段与开发阶段是一样的。这已经缓解了让懂得容器这个基本工具的DevOps专业人员感到头疼的大多问题。容器化已经提供了这种保障,不过像Helm(Engine Yard所提供的新服务)之类的产品有助于进一步规范化这种关系,具体表现为团队间的契约形式——团队成员不能再推卸责任,各扫门前雪了,而要全程参与。

从虚拟机与Monolith,到容器,再到微服务

根据Joyent的CTO Bryan Cantrill的说法:容器为原生云架构提供了基础,与传统的虚拟化形式相比,象征着一种新的应用架构形式。在使用较大的机器来进行计算时,基于硬件的虚拟化或者传统虚拟机流行过一段时间。虚拟机为运营团队提供了管理大型整体应用的方式,就像Cantrill说的“过于臃肿”,而硬件定义了企业架构。虚拟机建议在底层之上,承担了运营系统的负载。但是容器创建了一个全新而更敏捷的抽象。就是Cantrill的那句话:“应用继续减肥速成修炼。”

如今,唯一的麻烦在于如何将虚拟机和monolith换成容器和微服务。各家公司还在想方设法执行这种转变,因为两种方式对应用架构、基础设施还有公司自身整体的思路都是迥异的。

Cantrill表示:Joyent的开源Triton服务,其目的就是为了简化与加速公司向容器与微服务的转变。它允许开发者简化架构,只提供容器,不提供虚拟机。由于无需配置网络等操作,用户可以通过阅读微服务手册,在短时间内完成部署。

Cantrill表示,Joyent公司是Docker Compose的粉丝,因为Compose可以用来与单独的Docker Engine通讯。Docker的远程端点由Triton部署,从而虚拟化了整个数据中心。使用这些工具,很容易快速让一个完整有弹性的运营服务运转起来。正如Cantrill所言:“这是大势所趋。”

VMware的CTO Kit Colbert从如何沿着容器之旅前进的角度来观察市场。VMware着重运营领域。现在它开发了一种方式,来满足新的开发人员及其需求,不过是作为基础架构提供商存在。

对于VMware来说,这家公司将自己视为基础设施提供商,而不是以应用为中心、面向架构的公司。Colbert只看到了对Cloud Foundry感兴趣的消费者,不过也有人想要DIY的方法。VMware正在设法通过vSphere集成容器(VIC)与Photon平台对应用技术提供支持。

为了让消费者适应使用容器,vSphere集成容器(VIC)让容器化工作负载称为vSphere的重中之重。VIC适合在开发进程中运行,将容器化最有价值的一个方面应用在容器中:灵活并具有动态的资源界限。通过虚拟化,VMware将普通硬件转化为简单、可取代的财产。同样,通过在虚拟机中应用Docker端点,vSphere集成容器创建了完全动态边界的虚拟容器主机。结果就是对传统与基于微服务应用同样支持的基础架构,允许IT与开发者的访问。

相比之下,VMware的Photon平台是专为原生云应用设计的。Photon平台由最小的管理程序与控制面板组成,专为微服务提供速度与规模的服务。Photon平台在设计时还考虑到了开发者通过API使用时的易用性,让这个平台成为一个提供应用程序与快速部署的自助服务平台。

从VMware的角度来说,运营团队也在推进部署速度。现在更着重于数字化体验或者软件如何提供更多功能方面。很类似我们如何看待在智能手机上使用的应用。供应商可能以声音很大的扬声器而闻名,不过服务的应用是否能提供功能?

Colbert询问:“我能依赖它吗?” 公司必须找出构建应用,为寻找高质量应用的消费者提供服务的方式。想要继续进步,就必须找到这一点。很多拥有外置式、虚拟化基础架构的消费者希望:随着应用开发进程的加快,解决公司面临的挑战。

在微服务时代的开发

软件开发是迭代式的,需要持续的反馈循环才能奏效。这也是类似IBM Bluemix Garage Method所提供的工具所提供的功能。不过大多公司是根据模型来执行的,这与开发者工作的方式不同。开发者不会按照销售、市场推广、财务等部门人员的方式来工作,开发者不是按照计划或方案来执行工作的。软件开发的过程有更多的迭代,并非瀑布式自上而下的。

Pivotal的首席技术Michael Coté表示:“我不知道怎么说,不过真实世界与软件世界是完全不同的。”Coté辩称:找出软件开发的方式似乎非常矛盾,不过事实上确实阻止了人们想要根据一份文档来了解一个巨大机器的所有部件的工作方式。通过遵守软件开发的原则,各家公司找到了自己的办法,而不是严格遵守固定的计划。

Coté认为,没有执行微服务的固定道路。用微服务可以在运行中和架构上获得灵活性。微服务根据简单的原则构建出真正复杂的东西。原则越简单,所能创造的东西就越复杂。

不过,如果把复杂性转移到其他地方会发生什么?Pivotal这个平台管理着复杂程度。去掉选择,让消费者无需考虑网络、运营系统等问题。它允许消费者将复杂性放在应用堆栈的顶层,在为终端用户提供服务时能够更好的区分服务。Hately表示:“在科技行业,我们看到了另一个文艺复兴时期。”

同样地,IBM Bluemix Garage Method也希望简化复杂性,以便让开发者的工作更有效率,能够更好地享受自己的工作。所有这些努力都为企业提供了巨大的机会,无论在技术还是文化层面。

微服务是如何演变的

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微服务
    +关注

    关注

    0

    文章

    117

    浏览量

    7240
收藏 人收藏

    评论

    相关推荐

    【算能RADXA微服务器试用体验】Radxa Fogwise 1684X Mini 规格

    通过网络可以了解到,算能RADXA微服务器的具体规格: 处理器:BM1684X 算力:高达32Tops INT8峰值算力 内存:16GB LPDDR4X 内存 存储:64GB eMMC 编程框架
    发表于 02-28 11:21

    Java微服务随机掉线排查过程简析

    我们的业务共使用 11 台(阿里云)服务器,使用 SpringcloudAlibaba 构建微服务集群, 共计 60 个微服务, 全部注册在同一个 Nacos 集群。
    的头像 发表于 01-13 17:41 542次阅读
    Java<b class='flag-5'>微服务</b>随机掉线排查过程简析

    游戏公司不使用微服务架构的原因

    微服务基本只有 request/response 的模式。做不了 streaming?微服务通常要求应用是无状态的才能做到水平扩展。streaming 本身就是加入了状态
    的头像 发表于 12-29 11:18 214次阅读

    如何构建弹性、高可用的微服务

    基于微服务的应用程序可实现战略性数字转型和云迁移计划,对于开发团队来说,这种架构十分重要。那么,如何来构建弹性、高可用的微服务呢?RedisEnterprise给出了一个完美的方案
    的头像 发表于 11-26 08:06 236次阅读
    如何构建弹性、高可用的<b class='flag-5'>微服务</b>?

    设计微服务架构的原则

    微服务是一种软件架构策略,有利于改善整体性能和可扩展性。你可能会想,我的团队需不需要采用微服务,设计微服务架构有哪些原则?本文会给你一些灵感。文章速览:微服务设计的要素
    的头像 发表于 11-26 08:05 235次阅读
    设计<b class='flag-5'>微服务</b>架构的原则

    docker微服务架构实战

    随着云计算和容器化技术的快速发展,微服务架构在软件开发领域中变得越来越流行。微服务架构将一个大型的软件应用拆分成多个小型的、独立部署的服务,每个服务负责独立的业务功能。其中,Docke
    的头像 发表于 11-23 09:26 314次阅读

    springcloud微服务架构

    Spring Cloud是一个开源的微服务架构框架,它提供了一系列工具和组件,用于构建和管理分布式系统中的微服务。它基于Spring框架,旨在通过简化开发过程和降低系统复杂性来帮助开发人员构建弹性
    的头像 发表于 11-23 09:24 388次阅读

    Spring Cloud :打造可扩展的微服务网关

    Spring Cloud Gateway是一个基于Spring Framework 5和Project Reactor的反应式编程模型的微服务网关。它提供了丰富的功能,包括动态路由、请求限流、集成安全性等,使其成为构建微服务架构的理想选择。
    的头像 发表于 10-22 10:03 259次阅读
    Spring Cloud :打造可扩展的<b class='flag-5'>微服务</b>网关

    SpringCloud微服务架构:实现分布式系统的无缝协作

    在深入Spring Cloud之前,让我们首先了解一下什么是微服务架构。微服务架构是一种软件架构模式,将一个应用程序拆分为一组小型、独立的服务。每个服务都有自己的数据库和业务逻辑,并可
    的头像 发表于 10-12 16:21 263次阅读
    SpringCloud<b class='flag-5'>微服务</b>架构:实现分布式系统的无缝协作

    边缘计算微服务操作系统的设计与实现

    面对边缘计算运行环境不统一、适配难,工业边缘计算微服务开发难度高,微服务生态系统碎片化,以及工业边缘计算行业应用难以落地等技术和行业共性问题,本文实现了一种边缘计算微服务操作系统,包括边缘计算
    的头像 发表于 08-31 16:49 610次阅读
    边缘计算<b class='flag-5'>微服务</b>操作系统的设计与实现

    主流微服务全链路监控系统实战案例解析

    随着微服务架构的流行,服务按照不同的维度进行拆分 ,一次请求往往需要涉及到多个服务。互联网应用构建在不同的软件模块集上 ,这些软件模块,有可能是由不同的团队开发、可能使用不同的编程语言来实现、有可能
    发表于 06-29 10:13 599次阅读
    主流<b class='flag-5'>微服务</b>全链路监控系统实战案例解析

    释放微服务架构全部潜力的关键

      释放微服务的力量 您是否正在努力构建高效、可扩展且有弹性的软件系统?作为软件开发人员或高级开发人员,您一定遇到过“微服务架构”一词。这种革命性的软件开发方法已被许多成功的科技巨头采用,例如
    的头像 发表于 06-25 11:54 332次阅读
    释放<b class='flag-5'>微服务</b>架构全部潜力的关键

    微服务之间涉及到的数据依赖问题应该怎么处理呢?

    微服务,顾名思义,就是将我们程序拆分为最小化单元来提供服务。在一体化系统中,各个微服务也是不可能独立存在的,那么微服务之间涉及到的数据依赖问题,应该怎么处理呢?我们从场景入手来分析考虑
    的头像 发表于 06-15 10:05 510次阅读
    <b class='flag-5'>微服务</b>之间涉及到的数据依赖问题应该怎么处理呢?

    从分层架构到微服务架构介绍(五)

    本文要介绍的是 服务化架构 (Service-Based Architecture, SBA )。 SBA 可以看成是单体架构和微服务架构之间的一个折中方案,它也是按照业务领域进行服务划分
    的头像 发表于 05-10 17:02 593次阅读
    从分层架构到<b class='flag-5'>微服务</b>架构介绍(五)

    我们的微服务中为什么需要网关?

    玩过微服务的小伙伴对 Spring Cloud 中的的 Spring Cloud Gateway 多多少少都有一些了解,松哥之前既写过相关的文章,也录过相关的视频跟小伙伴们介绍 Spring
    的头像 发表于 05-04 17:38 990次阅读
    我们的<b class='flag-5'>微服务</b>中为什么需要网关?