《系统设计》微服务不是银弹
前言
微服务,是系统设计的一种架构风格。
曾经有一段时间,微服务被认为是系统设计的黄金法则。
但是,正如 Brooks 的名言:软件工程没有银弹。
微服务,自然不是银弹。
单体架构 vs 微服务架构
比较 | 单体架构 | 微服务架构 |
---|---|---|
项目结构 | 所有模块在一个项目中 | 一个模块对应一个项目 |
服务调用 | 进程内调用 | RPC/HTTP |
开发团队 | 所有模块由一个大的开发团队完成 | 一个模块对应一个开发团队 |
开发模式 | 瀑布式开发 |
敏捷开发,DevOps
|
水平伸缩 | 以整个系统为维度加机器,浪费了不必要的资源 | 以某个模块为维度加机器,效果更好 |
微服务的好处 vs 坏处
好处:
- 解耦
- 职责分离
- 独立开发,独立升级,可以选择不同的技术栈
- 方便水平伸缩,可以对负载高的模块单独增加机器
- 无状态 (Stateless)
坏处:
- 微服务拆分多,并且互相调用,增加了系统复杂度
- 调用链路变长,延迟增加
- 异常处理复杂,比如某个微服务处理失败,需要考虑前面成功的微服务如何回滚
- 问题定位复杂
- 监控复杂
- 资源管理复杂
参考资料
- https://blog.bytebytego.com/i/96603172/is-microservice-architecture-the-silver-bullet
- https://blog.bytebytego.com/i/88429916/what-are-the-differences-between-monolithic-and-microservice-architecture
- https://www.zhihu.com/question/359630395
- https://martinfowler.com/articles/microservices.html
《系统设计》微服务不是银弹相关推荐
- 微服务是银弹还是焦油坑?
微服务是银弹吗 微服务是近些年特别火热的一种架构设计理念,在各大互联网公司盛行的一种系统架构设计方式.以至于很多老铁在项目开发实践中,会不加思考的采用微服务,总觉得实施了微服务就可以把什么问题都解决了 ...
- 微服务系统设计——数据模型与系统架构设计
摘要 经过前面需求梳理,商场停车收费业务需求情况已经十分明了,本节就依据前文的输出作为输入,开始系统设计工作,包括功能模块设计.存储设计.架构设计等,为后面编码提供良好基础保障. 一.数据实体设计 基 ...
- 微服务并不能解决你的烂代码问题
" 微服务并不能解决你的烂代码问题 很久以来,软件的交付质量一直是一个大家比较关心的问题,而程序员和架构师也一直在极力寻找一种更好的方式来构建应用系统.随着互联网爆炸式的增长,对于系统的交付 ...
- 浅谈微服务的来龙去脉
作者:王清培(Plen wang) 沪江 公共业务平台 应用架构师 转载至沪江技术学院微信公众号 背景介绍 最近一段时间公共业务平台在进行大面积的重构,对原来的技术栈进行迁移,逐渐往Java.Go.N ...
- .Net Core微服务系列--理论篇
微服务的由来 微服务最早由Martin Fowler与James Lewis于2014年共同提出来的,但是微服务也不是一个全新的概念,它是由一系列在实践中获得成功并流行起来的概念中总结出来的一种模式, ...
- 常读常新,微服务最强内功心法,这些理论得吃透~
前言 Building Microservices: Designing Fine Grained Systems 读书笔记. 本书偏理论而非实现,可作为内功心法,适合架构师或有经验的系统工程师. 常 ...
- 架构演进之「微服务架构」
"为什么要搞「微服务架构」"?这也是我们当初讨论的聚焦点.现在天天把"微服务"挂在嘴边的人很多,但是有多少人真正深入思考过"为什么",我认为 ...
- 告别“臃肿”,选择微服务(文末福利)
点击标题下「异步社区」可快速关注 参与文末话题讨论,每周赠送异步图书 --异步小编 一直以来,系统的架构设计是IT领域经久不衰的话题,也是构建每一个系统最核心且重要的部分之一.它决定了系统能否满足业务 ...
- 为何从单体架构迁移到微服务这么难?
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 面对微服务如火如荼的发展,很多人都在了解,学习希望能在自 ...
最新文章
- c语言dp状态转移方程,[总结-动态规划]经典DP状态设定和转移方程
- mac finder变慢解决办法
- pandas.Series.multiply()含义解释
- eclipse 出现 jar包找不到 问题记录
- oracle11g imp性能,怎么最快地把本机的oracle11g数据导入xe
- KEIL编译生成bin文件,并输出内存使用情况
- Android开发之 Android 的基本组件的概述
- pytorch 优化器调参
- flutter初体验之基础控件知识
- 求一个整数数组中和最大的连续子数组,例如:[1, 2, -4, 4, 10, -3, 4, -5, 1]的最大连续子数组是[4, 10, -3, 4]
- 数据处理(1.2)-python 正则表达式-量词与贪婪
- “店小二”精神国际化步伐23年成就巨无霸
- 2021秋软工实践第一次个人编程作业
- Mac 查看本机端口占用
- 微火发布数据中台产品,加速商户数字化转型经营
- 不懂怎么搞定人的进来:年业绩千万的老销售给你几招实惠的-没有干货立即跳楼
- JavaScript实战——打气球游戏
- 学生信息管理系统代码全篇
- iPhone/IOS使用Fiddler抓包配置
- python之ATM