微服务与单一整体式架构的优劣浅析

2024-01-22 02:30

本文主要是介绍微服务与单一整体式架构的优劣浅析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

图片描述

开发者要么出于本能,要么很快就能在痛苦中发觉:即便一个很小的变化也能改变一切。就像攀岩那样,每次挪移都会影响到未来的抉择,因此如果在开始时考虑不周的话,可能会在今后突然导致致命的危机。随着对开发生命周期和上市时间缩短这方面需求的增长,在架构初期的任何决定都比以前更加重要。

想要定义合适的软件架构,不应仅仅搭出高级架构的框架,还应联合所有利益相关者,包括程序员、管理员、市场推广人员等,最终一同得出走向成功的愿景规划。

新一场“客户端与服务器端之辩”

架构师需要决定将繁重的任务放在哪边。无分软件架构模式与风格,大众都在就这个问题争论不休。

Battery Ventures风投的Adrian Cockcroft在推特上就这个主题引发了一次著名的公众辩论:“Etsy 让我知道了为什么单一整体式应用是一条死路,请在可持续扩展部署中使用微服务架构。”
图片描述

Etsy’s CTO John Allspaw回应道:“在这点上你缺少批判性思考,因为你想象不到它能带来的所有好处。”

图片描述

而Allspaw在另一条推特中解释道:“选择变少了,机会却扩大了。只留几个人们有着深刻理解的工具和模式,反而更有优势。”

下面是相关的一点背景。单一整体式架构指的是传统的“一切归于主机”的软件开发方法。所有的进程与子程序都是庞大代码库的一部分,它们运行在不同的服务器上,以便最小化延迟,最大化正常运行时间。

较新的架构是微服务,它包括了一系列独立进程,彼此实时协调运作。最初,这听起来就像是重启古老的“客户端与服务器端之辩”。基本上这个比喻很直观,不过还有来自移动市场约束的三个显著差异。这三点差异与面向服务架构(SOA)的更新、企业服务总线(ESB)调用这些服务、以及进行一定程度的集中管制(CG)以避免复杂程度难以控制这三点相关。

SOA、ESB和CG

SOA从世纪之交就已存在,它是一种处理web服务更为有效的方式。这些年来,许多不同的方面都在使用SOA。也就是说需要取决于特定情况下使用哪种定义的SOA,才能确定微服务相关的方法。

Oracle的技术网络经理Bob Rhubart这样总结SOA的关系:“就现状来讲,微服务并不是SOA的替代品,更像是随着SOA逐渐过于严格和整体单一化,为了保留灵活度而采用的一种方式。”随着大量服务开始向上扩展,趋势逐渐明显:快速直接的沟通成为噩梦。通常ESB将访问方法或接口与每个服务一一对应。如果要更新系统,比如公司出售,或者供应商的任务重新分配,这时所有开发者必须要更新ESB。

集中式和分散式管制的价值也是有争议的。高级工程师Martin Fowler和James Lewis根据开发社区的讨论总结:“集中式管制的后果之一就是出现标准单一技术平台的倾向。根据经验来讲,这种办法过于严苛——并非每个问题都是个钉子,可以用一个锤子(解决方案)来搞定。”然而,有时候使用集中管制的单一整体式架构仍然更有意义。

从单一整体式架构中获益的项目

尽管在看法、专业化和细微差异上仍有很大的商榷空间,不过有些指标确实能够表明何种架构更适合某种具体目标。例如,Stack Exchange的工程师VP David Fullerton这样描述单一整体式架构:这是个让人感到乏味的架构,却能造就令人兴奋的结果。他在纽约QCon的演讲中这样描述自己的单一整体式架构:“其规模很适合我们。我们每个月要处理40亿个请求,峰值达到3000个/秒;每天处理8亿个SQL查询,峰值达到8500个/秒。”

单一整体式架构在时间有限时,能提供非常清晰的路径,关键是要尽快建立并运行起来。如果整支团队已经集中在一起,并取得同步,就能更有效地协作,继续完成任务。部署很简单,扩展起来也相对简单。团队只需要在大量虚拟机或独立主机上通过负载平衡器运行多个副本。一般来讲,团队最终会构建出单一整体式架构的核心,然后通过微服务手段构建可扩展组件。

从微服务架构中获益的项目

关于是否使用微服务,有很多赞成的论调,不过行业分析师指出:无论是应用自身,还是团队磨合,都会有很严重的沟通问题。当然,微服务在文档、测试与解决不兼容问题的时间上肯定有着更高的阈值。

PayPal的CTO James Barrese表示:他们从单一整体式架构转到了微服务架构上,以便能在更短周期内更快地更新。

在新的移动、面向项目团队中,由于工作一般具有独立性、跨时区性、多平台性,因而整体进程安排起来更好一些。这种架构允许团队成员成为某个功能的专家,让应用更新的时间跨度越来越短。想要隔离并下线出现问题的组件非常简单。在企业层面上,公司无需再耗费昂贵的投资来组建特定的开发堆栈。

结论

微服务软件架构代表软件开发架构的未来趋势么?PwC显然是认可这一看法的,他们指出:

诸如Netflix、Gilt、PayPal和Condé Nast这样的公司都是以网站可以容纳高吞吐量而著称。然而,尽管他们最近对系统做了大修大改,但那些老旧而更偏向单一整体式的架构无法再快速增加或修改原有功能了。因此,现在他们都在转用基于微服务的架构,采用更模块化、更松散耦合的方式。

不过事实上,单一整体式的结构并未灭亡,而且仍旧在快速原型法中扮演着最有效的角色,尽管到了生命周期后期,团队会逐渐转向微服务。但在切实可用的人工智能出现前,最好的办法就是结合两种架构,一起使用。

原文链接:Microservices vs. Monolithic Architecture(译者/Vera 责编/钱曙光)


(责编/钱曙光,关注架构和算法领域,寻求报道或者投稿请发邮件qianshg@csdn.net,交流探讨可加微信qshuguang2008,备注姓名+公司+职位)

「CSDN 高级架构师群」,内有诸多知名互联网公司的大牛架构师,欢迎架构师加微信qshuguang2008入群,备注姓名+公司+职位。

这篇关于微服务与单一整体式架构的优劣浅析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/631576

相关文章

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

mybatis的整体架构

mybatis的整体架构分为三层: 1.基础支持层 该层包括:数据源模块、事务管理模块、缓存模块、Binding模块、反射模块、类型转换模块、日志模块、资源加载模块、解析器模块 2.核心处理层 该层包括:配置解析、参数映射、SQL解析、SQL执行、结果集映射、插件 3.接口层 该层包括:SqlSession 基础支持层 该层保护mybatis的基础模块,它们为核心处理层提供了良好的支撑。

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、

【区块链 + 人才服务】区块链集成开发平台 | FISCO BCOS应用案例

随着区块链技术的快速发展,越来越多的企业开始将其应用于实际业务中。然而,区块链技术的专业性使得其集成开发成为一项挑战。针对此,广东中创智慧科技有限公司基于国产开源联盟链 FISCO BCOS 推出了区块链集成开发平台。该平台基于区块链技术,提供一套全面的区块链开发工具和开发环境,支持开发者快速开发和部署区块链应用。此外,该平台还可以提供一套全面的区块链开发教程和文档,帮助开发者快速上手区块链开发。

系统架构设计师: 信息安全技术

简简单单 Online zuozuo: 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo :本心、输入输出、结果 简简单单 Online zuozuo : 文章目录 系统架构设计师: 信息安全技术前言信息安全的基本要素:信息安全的范围:安全措施的目标:访问控制技术要素:访问控制包括:等保

利用命令模式构建高效的手游后端架构

在现代手游开发中,后端架构的设计对于支持高并发、快速迭代和复杂游戏逻辑至关重要。命令模式作为一种行为设计模式,可以有效地解耦请求的发起者与接收者,提升系统的可维护性和扩展性。本文将深入探讨如何利用命令模式构建一个强大且灵活的手游后端架构。 1. 命令模式的概念与优势 命令模式通过将请求封装为对象,使得请求的发起者和接收者之间的耦合度降低。这种模式的主要优势包括: 解耦请求发起者与处理者

基于SpringBoot的宠物服务系统+uniapp小程序+LW参考示例

系列文章目录 1.基于SSM的洗衣房管理系统+原生微信小程序+LW参考示例 2.基于SpringBoot的宠物摄影网站管理系统+LW参考示例 3.基于SpringBoot+Vue的企业人事管理系统+LW参考示例 4.基于SSM的高校实验室管理系统+LW参考示例 5.基于SpringBoot的二手数码回收系统+原生微信小程序+LW参考示例 6.基于SSM的民宿预订管理系统+LW参考示例 7.基于

创业者该如何设计公司的股权架构

本文来自七八点联合IT橘子和车库咖啡的一系列关于设计公司股权结构的讲座。 主讲人何德文: 在公司发展的不同阶段,创业者都会面临公司股权架构设计问题: 1.合伙人合伙创业第一天,就会面临股权架构设计问题(合伙人股权设计); 2.公司早期要引入天使资金,会面临股权架构设计问题(天使融资); 3.公司有三五十号人,要激励中层管理与重要技术人员和公司长期走下去,会面临股权架构设计问题(员工股权激

PHP最长单一子串

<?php//方法一$s='abcccddddddcdefg';$max='';while($s!=''){$i=0; while($i<strlen($s) && $s[$i]==$s[0]) $i++;if ($i>strlen($max)){$max=substr($s,0,$i);} $s=substr($s,$i);}echo $m