27 | 微服务架构:微服务究竟是灵丹还是毒药?
李智慧
该思维导图由 AI 生成,仅供参考
微服务架构是从单体架构演化而来的。所谓单体架构,指的就是整个互联网系统所有代码打包在一个程序中,部署在一个集群上,一个单体应用构成整个系统。
而微服务架构则是将这个大的应用里面的一些模块拆分出来,这些模块独立部署在一些相对较小的服务器集群上,而应用通过远程调用的方式依赖这些独立部署的模块,完成业务处理。这些被独立部署的模块就被称为微服务,而这样的应用架构也被称为微服务架构。
应该说,模块化、低耦合一直以来都是软件设计追求的目标,独立部署的微服务使模块之间的依赖关系更加清晰,也更加隔离,使系统易于开发、维护,代表了正确的技术方向。但是在实践中,有时候却会出现这样的情况:用了微服务,系统反而变得更加难以开发、维护。技术团队痛苦不堪,觉得是微服务的锅,主张放弃微服务,退回到单体架构。
那么,究竟该不该上微服务?微服务是灵丹还是毒药?
单体架构的困难和挑战
阿里巴巴大约是国内最早尝试微服务的企业之一。让我们先回顾一下这段历史,看看当年阿里巴巴为什么要上微服务架构?微服务架构能解决什么问题?用好微服务需要做哪些准备?
阿里巴巴开始尝试微服务架构大约是在 08 年,在此之前,一个网站就是一个大应用,一个用 Java 开发的 war 包就包含了整个应用。系统更新的时候,即使只是更新其中极小的一部分,也要重新打包整个 war 包,发布整个系统。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
阿里巴巴的微服务架构重构实践成功地解决了工程师们日常开发的痛点,但微服务架构也带来了一些挑战。在实施微服务时,需重点关注业务的模块化设计,确保模块之间低耦合、高聚合,依赖关系清晰简单。成功实施微服务的关键在于明确需求,考虑实现的价值,构建设计原则,寻找最佳实践,选择最合适的工具。微服务和业务关系紧密,仅仅使用微服务技术框架是无法成功实施微服务的。此外,中台概念与微服务关系密切,需要思考中台的价值、需求以及与微服务的关系。因此,对于实施微服务,需重点关注业务的模块化设计,而不仅仅是使用微服务技术框架。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《后端技术面试 38 讲》,新⼈⾸单¥59
《后端技术面试 38 讲》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(14)
- 最新
- 精选
- _funyoo_初次了解中台这个概念的时候,觉得他与微服务没有什么不同……但深入对比了解后还是发现了区别 王健老师总结说:中台是企业级能力复用平台 首先中台是对于企业来说的,在我理解是面向企业的设计,并不是服务于仅仅一天业务线而言的 能力指其功能模式,承载手段的多样,比如数据中台等等 复用是指中台对前台复杂多变需求的抽象,在稳定的后台和多变的前台中磨合的齿轮,是树根和枝叶间沟通反哺的树干 而平台是他的存在形式 区别在于 微服务更多的是面向技术,为了代码复用,而没有解决前台的多变的需求 而中台则是面向用户,面向需求,满足用户多变的需求提供稳定的解决方案 微服务是拼凑,微服务面向后台的稳定 中台是抽象,中台面向前台的多变
作者回复: 👍
2020-01-28361 - 小时候很黑老师请教一下,微服务之间的http调用是否违反了依赖倒置原则呢?
作者回复: 本质上,依赖倒置和http没关系,高层模块可以通过高层接口调用微服务,这个高层接口通过proxy模式,使用http进行远程调用,这个高层接口属于高层模块,有高层模块定义,那么依然是符合依赖倒置原则的。 如果高层模块直接http调用微服务,那就是违反了依赖倒置原则。
2020-07-234 - 虢國技醬我想微服务是业务层面低耦合高内聚的体现! 中台虽然不是很清楚,但我觉得中台第一是要业务量够大,产品或者服务形成矩阵时,抽出稳定的基础共性东西形成支撑上层灵活产品的基础。关键还是对业务的深刻理解,对软件未来的清晰认识,进行边界清晰的业务模块划分,从而形成一套稳定的微服务组成的系统2020-01-3016
- 老男孩老师这篇关于微服务的文章,写的太棒了!是否选择使用微服务不能只从技术的角度考虑,应该从架构的层面,我觉得软件架构的本质就是商业利益。正如老师在文章中讲到,单体架构发展到一定程度,业务功能越来越多,开发团队越来越庞大,带来的问题就是面对一个大而全的应用包,开发人员奔溃,集成人员迷茫,测试人员幽怨。新人很难快速上手,太多无效的通宵,牵一发动全身,然后就是各种扯皮。集成人员合并的时候看花了眼,开发人员莫名背锅,本来好好的功能,代码没动过,发一次版本就出问题了。这些问题都会造成效率低下,最终影响到公司和大家的利益。从需求和痛点出发去考虑微服务架构的改造和实践,才是正确的方向!而不能把微服务作为技术和工具来看。牛掰的技术千篇一律(第一性原理),合适的架构才是目的。2020-03-065
- hex最近代码重构时提出了小前台大中台的概念,说下我的理解: 中台:公司业务方向比较多,对于业务处理逻辑相同的模块想要抽取出来做成一个中台微服务,供所有需要此业务逻辑的微服务调用,如短信模块,物流模块,账单对账等. 微服务:微服务给中台提供了便利,之前对于复用代码需要复制进去,现在有了微服务,这部分直接以微服务形式存在,就不需要去动这部分代码了.有新需求新功能只需要编写与页面交互的代码即可,其余直接远程调用中台. 老师讲的微服务就是应用按模块拆分后的独立部署的一个个模块,我的理解中台只是其中一个复用模块, 提供业务实现的,而微服务技术是实现中台的方式.2020-02-1115
- Bruce我觉得中台更偏底层和工具化一点,微服务是和业务有关联的,而中台一般不会好业务挂钩。现在很多中小企业都在做微服务和中台,完全就是盲目跟风,我觉得还是应该从实际出发,有些用户量不大的应用,没有必要做成微服务。2020-03-242
- 奔奔奔跑最近也看了很多关于中台的文章,中台区别于微服务的很多是组织架构上的调整,而微服务不涉及组织架构。中台是为了更灵活快速的试错而提出来的2020-02-011
- yz据说元数据驱动设计模式(metadata driven design), 可以把业务抽象成通用模型,具体使用时,再把模型实例化,从而实现业务的复用,这种元数据驱动设计模式和微服务有什么关系吗?2021-02-13
- Lucky_Dog我们公司就是写中台的,在我的理解,微服务是实现中台的技术,通过把共用业务逻辑抽取出来成为一个微服务中心,供前台调用。2020-12-04
- 何慧成微服务是一种技术实现方式,通过分业务/技术模块分别管理和部署来减少耦合,提升能力复用程度。中台是面相业务,最极端的,通过单一架构将企业公共的能力包在一起,也是中台。2020-10-17
收起评论