微服务架构会和分布式单体架构高度重合吗

在最近的Microservices Practitioner Summit峰会上,来自Facebook的工程师Ben Christensen就目前正在普遍快速增长的分布式系统与二进制依赖关系的一种反面模式发表了自己的看法。

\\

Christensen谈到说,共享类库是整个服务运行过程中最需要的部分;另一方面,这些类库总的来说也可以被认为是“一种平台”。包括像Spring、Guava和那些通常被用在路由消息和日志记录里的类库。在最后,一个系统的性能优劣取决于是否具备100+类库的组合。如果一个服务不能和系统进行互动的话,只能说明这些类库的可用性有问题,Christensen称这种情况为分布式单体架构。本质上来讲,你所做的那些将成本花在分布式系统上的事情,其实只是在网络上推广单体架构,但是并没有从微服务架构里面获得任何好处。至于丢失的这些好处就包括多语言特点,也就意味着你所开发的这个服务错过了利用最好的技术来解决特殊问题的可能性,包含组织上和技术解藕方面的问题。解决处理了这些问题有助于团队进行技术升级,而不需要在第一时间去获得授权。

\\

143a65fb33bd55cdcd15e8def9bd9f5e.png

\\

不妨在这里简单介绍一下单体架构应用(Monolith),网上对微服务进行介绍的文章常常以单体架构开始。这里也不例外,只有在知道了单体架构的不便之后才能更容易地理解微服务架构模式所具备的各种优点。

\\

开发出来的服务应该是什么样子呢?通常情况下,这个服务所对应的代码是由多个项目所组成,各个项目会根据自身所提供功能的不同具有一个明确的边界。在编译时,这些项目会被打包成为一个个JAR包,并最终合并在一起形成一个WAR包。接下来,开发者需要将该WAR包上传到Web容器中进行解压,并重新启动服务器。在执行完这一系列操作之后,对服务的编译及部署流程也就完成了。如果按照单体架构组织的代码来运行的话,会生成一个包含了所有功能的WAR包,因此在对服务的容量进行扩展的时候,我们只能选择重复部署这些WAR包来扩展服务能力,而不是仅仅扩展系统瓶颈的组成。

\\

12dc9e8c826ff34a203466b523a79361.png

\\

但是这种扩展方式极大地浪费了资源。比如(上图):在一个服务中,某个组成的负载已经达到了90%,也就是到了不得不对服务能力进行扩容的时候了。而同一服务的其它三个组成的负载还没有到其处理能力的20%。由于单体架构服务中的各个组成是打包在同一个WAR包中的,因此通过添加一个额外的服务实例,可以将需要扩容的负载降低到45%,但是也使得其它各组成的利用率更为低下。可以说,所有的不便都是由于单体架构服务中一个WAR包包含了该服务的所有功能所导致的。而解决该问题的方法就是微服务架构模式。

\\

Don’t Repeat Yourself的字母缩写DRY对很多人来说都不陌生,意即不要重复造轮子。在共享代码的业务逻辑中,孤立的去部署变化条件的方式正在被摒弃,因为这种做法会直接影响服务执行代码的效果。Christensen强调共享代码在服务边界里面是相当完美的,可是一旦泄漏的话,就会有潜在的耦合可能性。Sam Newman在他的新书《Building Microservices》里提到:

\\
\

The evils of too much coupling between services are far worse than the problems caused by code duplication。

\\

服务之间太多的耦合所带来的弊端,远比简简单单复制代码所带来的问题还要严重很多倍。

\
\\

Christensen认为可替代的解决方案就是采用稳定的协议,隐藏所有的实现细节,只将数据契约和网络协议暴露出来,在不依赖服务实现的前提下,用户都能够使用任何技术和编程语言,这才是网络该做的事情。Christensen还指出,虽然在如日志记录、分布式跟踪、路由等领域没有强制的标准化需求,但还是应该启用独立的类库,这样用户才有权选择是否使用这些网络服务。

\\

Christensen认为,这样的低级错误是很容易经常性犯的,因为我们都知道如何使用共享类库,我们也常常在短期内进行优化来达到更高效率。他还说,虽然推迟解藕的成本较高,可是解决方案也是有的,努力在刚开始的时候就把合适的工具用在合适的地方,物尽所用才能发挥最大效果。

\\

在最后的问答过程中他提到,使用一个大的框架无可厚非,只要这个框架被当作内部一个独立的服务使用就行,但如果整个系统的架构不采用这个大的框架也并无大碍,因为这会避免出现长期耦合。微架构或者SOA架构真正发挥所长的地方在于,根据彼此独立部署的逻辑服务,这些逻辑服务可以独立于其他服务进行扩展,而且能够实现独立的故障切换。

\\

红帽公司中间件部门工程副总裁Mark Little博士也曾说过:“我在微服务架构方面担心的问题之一就是,你有一个整体式单体架构应用,假设你随意把它分解成多个服务,到头来就会分解得过细,最后会有10个、100个甚至1000个微服务。但是这些微服务又彼此高度依赖,以至于如果某一个服务出现故障,其余服务很有可能也会出现故障。这种情况下,你将一无所获。你有999个服务就在那里干等着另一个服务恢复正常运行之后才能工作。”

\\

查看英文原文:Microservices Ending up as a Distributed Monolith

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/543633.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

北京soul_Soul高智商情侣,机器人博士邂逅科技记者,跨越1200公里来相爱

她,是知名媒体的科技记者,平时往返于帝都各大互联网媒体峰会上,朋友圈都是各大互联网公司创始人大佬,用文字记录下互联网江湖的风云变化。他,是魔都top大学的工业机器人博士,像谢尔顿一样充满科学的奇思妙想…

Android-Dialog

Android-AlertView 我的地址:https://github.com/kongqw/Android-AlertView 开源地址:https://github.com/saiwu-bigkoo/Android-AlertView

mysql卸载后重装失败_小筑教育BIM课堂-Revit100问 [第二期] | 软件卸载

1、Revit未卸载干净,导致安装失败,怎么办?答:方法1:利用官方软件卸载工具UninstallTool软件将剩余残留未卸载子程序卸载干净,之后再安装Revit。方法2:如果UninstallTool软件检索不到电脑上还有相…

hdu 5631 Rikka with Graph(图)

n个点最少要n-1条边才能连通&#xff0c;可以删除一条边&#xff0c;最多删除2条边&#xff0c;然后枚举删除的1条边或2条边&#xff0c;用并查集判断是否连通&#xff0c;时间复杂度为O&#xff08;n^3&#xff09; 这边犯了个错误&#xff0c; for(int i0;i<N;i){ fa[i]i;…

电机编码器调零步骤_蒂森电梯编码器整定和主机整定大全

CT 编码器整定操作步骤1. 断开电源&#xff0c;吊起轿厢&#xff0c;空开曳引轮钢丝绳。2. 取出主板 JP5 的 9 与 10.11.13 的线并短接一起。3. 送电后确认 KAS,KAD,继电器吸合&#xff0c;接触器 KM1,KM2,KM3 也吸合&#xff0c;抱闸自动张开。注&#xff1a;保证安全回路 102…

4 曝光_荣耀户外手表GS Pro曝光:超强续航 9月4日发布

8月21日消息&#xff0c;荣耀海外官微今日官宣&#xff0c;荣耀首款主打户外功能的手表&#xff0c;将于9月4日海外发布。从其预热海报来看&#xff0c;这款手表应该就是国内已官宣的荣耀GS Pro。因为两张海报中的手表新品外观一致&#xff0c;均采用三防设计&#xff0c;圆形表…

lightgbm 保存模型 过大_机器学习之12—Lightgbm

Lightgbm模型和GBDT以及XGboost一样&#xff0c;都是基于决策树的boosting集成模型&#xff1b;Lightgbm是一个快速高效、低内存占用、高准确度、支持并行和大规模数据处理的数据科学工具。关于GBDT和XGboost的介绍可以参考&#xff1a;大饼&#xff1a;机器学习——提升算法(A…

python3 装饰器

2019独角兽企业重金招聘Python工程师标准>>> #!/usr/bin/env python # encoding: utf-8 # author: eddy # contact: 278298125qq.com # site: http://my.oschina.net/eddylinux # file: study_deco.py # time: 2016-02-28 12:06 # version: 1.0#基础知识 #### 第一…

判断是否大于_电动车是否属于机动车的辩论要点

现行国家标准GB/T 24158-2009在3.1章节中对电动摩托车与电动轻便摩托车进行了定义,但将要在2019年4月1日实施的新标准却删除了该定义.在09标准中对电动轻便摩托车进行了如下定义:所以说,大于20km/h或大于40kg的电动车为机动车.但是这个标准删除了故对于电动车是否属于机动车不应…

Vim常用按键操作学习

对于Vi的学习&#xff0c;在这里算是做个笔记&#xff0c;对于一些常用的命令记录下&#xff0c;以后在使用起来会更方便&#xff0c;便于以后查阅使用&#xff0c;而不需要再从去搜索。读到这你应该看出&#xff0c;这是一个笔记了&#xff0c;会比较干了。补充一句&#xff0…

c++局部对象是什么_程序员每日一题-GCROOT对象

每天一题&#xff0c;进步一点答案&#xff1a;ABCD解析首先了解一下什么是GCROOT。了解这个概念之前&#xff0c;我们先了解一下垃圾回收。简单来说&#xff0c;JVM中程序的对象都会在堆区占据一定空间&#xff0c;如果不再使用了&#xff0c;JVM就会把它清除掉。那么如何判定…

项目如何用jetty运行_如何用Cloudbase Framework部署一个Vue项目?

Cloudbase Framework 是云开发官方出品的前后端一体化部署工具&#xff0c;无需修改业务代码&#xff0c;就能将 Vue 应用前后端一键托管部署在云开发平台。借助于 Cloudbase Framework&#xff0c;你可以一键部署一个已有的 Vue 项目&#xff0c;也可以快速创建一个新的 Vue 项…

在桌面上创建路径

2019独角兽企业重金招聘Python工程师标准>>> //实例化filemanager NSFileManager*fm[NSFileManager defaultManager]; //获取桌面路径并创建新路径 NSArray*URLs[fm URLsForDirectory:NSDesktopDirectory inDomains:NSUserDomainMask]; if (URLs.count>0) { NSUR…

小米手环无法模拟门卡_颜值与功能得到全面升级,小米手环4 NFC版上手体验

提到国产智能手环&#xff0c;相信不少人第一时间想到的就是小米手环系列&#xff0c;就在前不久的时候&#xff0c;小米米家正式举办了新品发布会&#xff0c;而小米手环4系列也正式登场。与前代产品相比&#xff0c;小米手环4系列在很多方面都进行了全面升级&#xff0c;比如…

[小记]Centos7网络配置DNS配置解决、yum出错解决。

2019独角兽企业重金招聘Python工程师标准>>> Centos7&#xff1a; yum install iptables-services Error List&#xff1a; Loaded plugins: fastestmirror, Error: cannot find a valid baseurl for repo : base/7/x86_64 ... Solutions&#xff1a; a) fastest…

怎么覆盖默认样式_图形设计软件cdr教程:设置默认字体

互联网时代&#xff0c;设计师们现在都是用电脑进行设计&#xff0c;那么对字体的需求就比较多&#xff0c;CorelDRAW作为强大的平面设计软件&#xff0c;怎么在其中设置某字体为默认字体呢&#xff1f;对很多新手朋友来说&#xff0c;可能不是很理解。本文小编介绍在CDR中设置…

的garch预测_随机森林预测

当涉及到预测数据(时间序列或其他类型的序列)时&#xff0c;人们会关注基本回归、ARIMA、ARMA、GARCH&#xff0c;甚至Prophet&#xff0c;但不排除使用随机森林来预测数据。随机森林通常被认为是一种分类技术&#xff0c;但回归问题绝对是随机森林可以处理的。在本文中&#x…

统计abacbacdadbc中的每个字母出现的次数,输出格式是:a(4)b(3)c(3)d(2)

2019独角兽企业重金招聘Python工程师标准>>> import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.TreeMap; /** 统计abacbacdadbc中的每个字母出现的次数&#xff0c;输出格式是&#xff1a;a(4)b(3)c(3)d(2)* * 选中TreeMa…

[译]机器人操作系统简介:终极机器人应用框架(上)

2019独角兽企业重金招聘Python工程师标准>>> [译]机器人操作系统简介&#xff1a;终极机器人应用框架 /*** 原文出处&#xff1a;https://www.toptal.com/robotics/introduction-to-robot-operating-system* author dogstar.huang <chanzonghuanggmail.com> 2…

AIKit v4.11.0 – WordPress AI 自动编写器、聊天机器人、写作助手和内容重定向器 / OpenAI GPT 插件

AIKit v4.11.0&#xff1a;WordPress的AI革命 一、引言 AIKit v4.11.0是一款为WordPress用户精心设计的强大插件&#xff0c;该插件集成了OpenAI的GPT-3技术&#xff0c;为用户提供了前所未有的AI写作和聊天机器人功能。此版本的推出&#xff0c;将WordPress的功能扩展到了全新…