微服务在现代软件开发中的作用


微服务虽然不是一个新颖的概念或实践,但一直在重新定义软件开发在很多方面 。微服务有可能取代单片应用程序,并且更符合企业不断变化的业务需求 。典型的单片应用程序是一种独立的软件应用程序,其中所有组件部件彼此紧密互连 。如果任何组件因任何原因受到影响,则整个应用程序都会受到影响 。例如,一个组件的更改可能需要完整的系统回归和完整的部署 。单片应用程序被视为不灵活的系统,企业花费大量资源来维护此类应用程序 。另一方面,微服务被证明更加灵活和灵活 。它们是小型,独立且可重复使用的服务,可以进行修改和独立部署 。这使企业可以节省大量投资 。虽然不能说微服务普遍使用,但已经有一些令人鼓舞的案例研究 。
什么是微服务?
微服务是一种开发单一软件应用程序的架构风格,它结合了小型独立服务 。我们的想法是能够以隔离的方式工作或修改每个服务,这样,与单片应用程序的情况不同,整个软件应用程序不会因为更新而受到影响 。每个服务都有自己的进程,并以轻量级机制进行通信 - 通常借助HTTP资源Web服务 。
要理解微服务架构的特性,将其与单片软件系统进行比较可能是相关的 。下表提供了单片和微服务软件系统之间的主要区别 。
机制
单片
微服务
处理
将所有功能放在一个过程中 。
将各个功能放入单独的服务中 。
缩放
在多个服务器中复制monolith 。
在需要时,跨服务和重复分发服务 。
为什么它会获得人气
开发和管理软件应用程序的微服务方式更符合不断变化的业务需求,这是企业逐渐采用它的最重要原因 。在充满挑战和动态的业务场景中,企业需要快速响应不断变化的需求,但单片软件系统不允许他们这样做 。微服务更灵活,能够适应不断变化的情况 。微服务受欢迎的主要原因包括:
微服务应用程序允许故障隔离 。无论何时出现问题,服务的孤立,独立性质都允许与主要软件和评估分离 。在修复故障时,软件应用程序不受影响 。
企业不需要长期承诺使用特定的技术堆栈,因为它们可以用满足其需求的另一个替换它 。
由于服务是孤立和独立的,因此很容易获得知识并开始工作 。
什么是架构组件?
微服务架构的架构组件也可称为其定义特征 。该体系结构的主要组件如下所述 。
简单的请求处理架构
与使用高级系统执行消息路由,编排和应用业务规则等任务的复杂系统(如企业服务总线(ESB))不同,微服务架构以简单的方式处理请求:它接受请求,处理请求并生成响应 。
权力下放和灵活性
微服务架构允许企业从任何地方添加独立服务,无论用于开发这些服务的语言或程序如何 。这允许软件开发人员根据他们的需要选择最合适的服务 。
强大的问题管理
由于该体系结构可能包括几个不断相互影响的不同服务,因此总会出现问题 。在这种情况下,有问题的服务可以与整个软件系统隔离,并在软件系统继续平稳运行时进行修复或替换 。
这个怎么运作
微服务架构基于其原理工作,可以跨软件应用程序应用,无论技术或平台如何 。微服务的工作方式如下所述:
构建它并运行它
它遵循亚马逊的“构建并运行它”的理念 。软件应用程序已经构建,并且假设开发团队即使在软件交付后也要负责 。这与软件项目的情况不同,在软件项目交付后,开发团队被拆除,责任交给维护团队 。在这种情况下,开发团队即使在交付软件后也要承担全部责任 。
将软件组件化为服务
虽然微服务架构可以像单片软件系统那样工作 - 调用库 - 它提供了一个独特的功能 。库是链接到程序的组件,该程序在内存函数调用的帮助下调用 。但是微服务使用的服务是进程外组件,它们通过Web服务或远程过程调用等元素与软件进行通信 。
它与SOA有什么不同?
面向服务的体系结构(SOA)是一种基于服务或RESTful Web服务的体系结构,它执行各种功能 - 例如,显示系统状态,创建用户和更新用户数据 。SOA允许软件开发人员构建,调用和公开服务,并协调服务以提供解决方案 。就像在微服务中一样,SOA中的服务都是独立的,松散耦合的服务 。虽然SOA和微服务架构在以服务形式组件化软件应用程序时都有共同的原则,但它们并不相同 。SOA和微服务架构之间的主要区别如下所述 。(要了解有关SOA的更多信息,请阅读BPM和SOA:他们如何推动业务发展 。)
沟通机制
虽然SOA允许您在各种技术堆栈中开发服务并将其部署以开发软件应用程序,但它还要求每个服务使用通用通信机制进行通信 。但是,在微服务架构的情况下,没有这样的要求 。服务可以独立部署和运营 。
沟通失败的影响
在SOA中,企业服务总线用于跨所有部署的服务进行通信 。在ESB发生故障的情况下,服务之间的通信可能会中断 。显然,完全依赖于ESB 。在微服务的情况下,每个服务可以不同地构建,并且在出现故障或错误的情况下,仅该特定服务受影响而不受其他服务的影响 。
规模和范围
微服务架构中的每项服务往往都明显小于SOA架构中的服务 。微服务是可独立部署的服务,而SOA可以是整体应用程序或小型可部署服务的一部分 。
微服务的一些例子
许多着名的组织已经离开了用于微服务架构的单片系统,包括Netflix,eBay,亚马逊,英国政府数字服务,Twitter,PayPal,Soundcloud,卫报等等 。
Netflix一直在SOA架构中使用微服务取得了巨大成功 。它每天通过来自800多种不同设备的API接收超过10亿个呼叫,然后再拨打5个后端服务 。
eBay已经转向微服务,其核心应用程序包括几个较小的自治应用程序 。每个小应用程序都为应用程序的不同业务领域执行业务逻辑 。
结论
很明显,微服务非常受欢迎,因为它们更符合不断变化的业务场景 。但是,需要牢记的是,将多种多样化的服务组合在一起以实现单一目标并非易事 。企业仍然需要在系统中管理清晰,及时的沟通,这可能是一个挑战 。此外,管理团队或具有管理如此众多不同服务知识的人员可能是一项挑战 。考虑到所有因素,微服务架构似乎仍然比单片架构更好 。
【微服务在现代软件开发中的作用】

    推荐阅读