【从零开始学微服务】08.引入微服务架构的时机

news2024/11/16 22:37:23

大家好,欢迎来到万猫学社,跟我一起学,你也能成为微服务专家

在了解引入微服务架构的时机之前,架构设计时一般需要遵循的三个原则。

架构设计三个原则

架构设计一般需要遵循以下三个原则:

  • 合适原则:合适优于业界领先。
  • 简单原则:简单优于复杂。
  • 演化原则:演化优于一步到位。

合适原则

我们一般都有很强的技术情节,做架构方案时,总想着挑战自己,做一个很牛的架构,但如果设想超越了现实,最后很可能会失败。

即使我们的设计再好,能为公司打下很好的基础,但公司的实际环境如何?能否很好的落地?如果没有那么多人,却想干那么多活,肯定失败。

优秀的架构其实都是逼出来的,业务发展到一定阶段,量变导致质变。没有那么强大的业务场景支撑,失败的概率非常高。

简单原则

很多人评价一个设计方案水平高低时,很喜欢看复杂度,越复杂的系统,出现故障的概率越高。

应谨记KISS(Keep It Simple, Stupid)原则,大多数系统的设计应保持简洁和单纯,而不掺入非必要的复杂性,这样的系统运作成效会取得最优。

演化原则

对于建筑来说,永恒是主题,对于软件来说,变化才是主题。

架构设计时要时刻提醒自己不要贪大求全,或者盲目照搬大公司的做法,应认真分析当前业务的特性,明确当前业务的主要问题,设计合理的方案,快速落地以满足业务的需要,然后在运行过程中不断完善架构,不断随着业务演化架构。

什么时候引入微服务

微服务架构虽然看起来非常美好,但是也是有很大附加成本的。

通过上图可以看到,横轴是复杂度,纵轴是生产力。当软件的复杂度很低的时候,单体架构下的生产力是要高于微服务架构的,但随着复杂度的不断增加,无论是单体应用还是微服务应用的生产力都会下降,只是微服务架构的下降会相对缓慢一些。

因为在微服务架构中,我们的系统是由很多的小的服务组成,每一个服务都很小,相对简单,技术栈也很独立。这样做局部的变更也会更加容易,随着系统复杂度的不断增加,微服务的优势也就慢慢地体现出来了。

怎么引入微服务

在合适的项目,合适的团队,采用微服务架构收益会大于成本。微服务架构有很多吸引人的地方,但在拥抱微服务之前,也需要认清它所带来的挑战。需要避免为了“微服务”而“微服务”。

Martin Fowler(马丁·福勒)提出的单体架构优先(Monolith First)的思路,我们可以了解一下:

不推荐一开始就全盘直接使用微服务架构,因为微服务需要前期基础设施的投资,复杂性很高,如果对问题领域并不是很理解,一开始用微服务,很难去划分服务的边界,生产力反而会比较低,而且花了很大精力进行开发,产品并没有被市场验证过,有可能会失败,所以这个选择风险会比较高,所以推荐的是单体架构优先。

先从单体架构运用做起,这样成本低,团队成员也比较少,无须太多研发投入,就可以快速迭代并交付一些基本的功能,这样也可以赢得更多的时间去探索业务领域的复杂性,对业务领域的边界会有更深入的理解。可以考虑引入部分合适的微服务架构,原则是边界已经很明确的小范围领域,或是对已有系统进行改造或,逐步探索及积累微服务架构经验,而非全盘实施微服务架构。

随着应用越来越成功,用户越来越多,系统复杂度越来越高,就会出现单体架构应用和团队规模之间的矛盾,生产力会随着业务复杂度逐渐降低,这时再逐步的进行微服务化的拆分效果会更好。

最后,感谢你这么帅,还给我点赞


《从零开始学微服务》总目录

  • 【从零开始学微服务】01.微服务的过去与现在
  • 【从零开始学微服务】02.初识微服务
  • 【从零开始学微服务】03.软件架构的演化过程
  • 【从零开始学微服务】04.微服务架构的特点
  • 【从零开始学微服务】05.微服务的优势和不足
  • 【从零开始学微服务】06.微服务架构的建设思路
  • 【从零开始学微服务】07.微服务常用的开发框架
  • 【从零开始学微服务】08.引入微服务架构的时机

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

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

相关文章

NeurIPS'22 | APG:面向CTR预估的自适应参数生成网络

丨目录: 摘要 背景 Method 实验 结语▐ 摘要目前基于深度学习的CTR预估模型(即 Deep CTR Models)被广泛的应用于各个应用中。传统的 Deep CTR Models 的学习模式是相对静态的,即所有的样本共享相同的网络参数。然而,由…

IntelliJ IDEA中我最爱的10个快捷操作

1. psvm/main快速生成 main() 方法 在日常开发中,我们经常需要写main()方法,这时候您也可以使用main或者psvm命令快速地帮助我们创建出main()方法。 2.sout快速生成println()方法 打印输出一些内容到控制台也是频率很高的一个行为,我们可以…

Pytest断言

🔴pytest 允许使用标准的python assert 用于验证Python测试中的期望和值。所以并不像unittest的那么丰富。但是我们可以重写。 ❞小例子--介绍 import pytestclass Testnew:def test_num(self):assert 1 "1"def test_dic(self):assert {"QA":…

MySql索引下推知识分享

作者:刘邓忠 Mysql 是大家最常用的数据库,下面为大家带来 mysql 索引下推知识点的分享,以便巩固 mysql 基础知识,如有错误,还请各位大佬们指正。 1 什么是索引下推 索引下推 (Index Condition Pushdown,…

技术分享 | 测试的本质是什么?

本文将分别浅谈不同阶段的业务、不同端的业务、不同类型的业务的测试差异,再抽离其中的测试目标/本质。仅为笔者个人观点,欢迎批评指正。 一、不同阶段业务对测试的需求不同 不同阶段业务对测试的需求不同。这点几乎经历过的人员都心有戚戚焉。 从0到1的…

盘点导致Spring事务失效的4个场景

1,非运行时异常导致事务无法回滚 我们知道,Spring是通过AOP的方式来实现事务的,而在处理事务的过程中,Spring只有捕获到RuntimeException或者Error的时候才会触发回滚操作,如果我们在代码中抛出的是非运行时异常&…

Web前端学习之虚拟DOM如何进化为真实DOM

Vue和React的Render函数中都涉及到了Virtual DOM的概念,Virtual DOM也是性能优化上的重要一环,同时突破了直接操作真实DOM的瓶颈,本文带着以下几个问题来阐述Virtual DOM。 1.为什么要操作虚拟 DOM? 2.什么是虚拟 DOM? 3.手把手教你实现…

Word内容解析之图表数据获取

最近遇到一个问题,Word里有个从Excel直接复制进去的图,但那个Excel已经找不到了,无法通过编辑数据获取到表格的数据。这个其实可以用getdata等软件获取,或者鼠标点在表上的点就可以显示数据,再把数据录下来&#xff0c…

更加灵活、经济、高效的训练 — 新一代搜推广稀疏大模型训练范式GBA

作者:苏文博、张远行 近日,阿里巴巴在国际顶级机器学习会议NeurIPS 2022上发表了新的自研训练模式 Gloabl Batch gradients Aggregation(GBA,论文链接:https://arxiv.org/abs/2205.11048),由阿里…

模拟电子技术(七)波形的发生和信号的转换

(七)波形的发生和信号的转换正弦波振荡电路RC正弦波振荡电路LC正弦波振荡电路正弦波振荡例题电压比较器单限比较器过零比较器一般单限比较器滞回比较器窗口比较器电压比较器例题非正弦波发生电路矩形波发生电路三角波发生电路锯齿波发生电路信号转换电路…

Visual Studio 调试无法启动调试,拒绝访问

方法一 win更新了不兼容 ,卸载更新。 1、单击开始菜单,选择【设置】如下图; 2、然后再进入【更新和安全】选项,如下图; 3、查看已安装更新历史记录,如下图红圈 4、这个页面详细列出了最新的更新&#xf…

绿盟SecXOps安全智能分析技术白皮书 安全分析模型核心服务部署

安全分析模型核心服务部署 ModelOps 对所有的人工智能 模型(图形模型、语言模型、基于规则的模型)以及决策模型的整个生命周期 进行管理,确保对生产中的所有模型进行独立验证和问责,其核心功能涵盖了模型存储、模型测试、模型回滚…

28. 如何使用 SAP OData 服务向 ABAP 服务器上传文件

文章目录 1. 创建对应的自定义数据库表和 ABAP DDIC 结构2. 完成 SEGW 事物码里模型的增强3. 完成必要的 ABAP 编码本教程到目前为止开发的 OData 图书管理服务,可以在 ABAP 系统里对图书数据进行增删改查。 本步骤我们继续介绍如何通过 SAP OData 服务,实现向 ABAP 系统上传…

0.96寸OLED显示屏介绍

OLED显示屏简介 OLED,即有机发光二极管(Organic Light Emitting Diode)。OLED 由于同时具备自发光,不需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板、使用温度范围广、构造及制程较简单等优异之特性&#x…

【C语言】常见字符函数和字符串函数

1.1strlen size_t strlen(const char* str); 字符串已经\0作为结束标志,strlen函数返回的是在字符串中\0前面出现的字符个数(不包含\0)。 参数指向的字符串必须以\0结束。 注意函数的返回值为size_t,是无符号整形(…

五、Vector底层源码详解

文章目录特点底层源码分析有参构造器public Vector(int initialCapacity, int capacityIncrement)有参构造器public Vector(int initialCapacity)有参构造器public Vector(Collection<? extends E> c)无参构造器public Vector()扩容机制特点 底层是elementDate数组线程…

自学Python真的可以吗?

自学当然可以学成功python了&#xff0c;但是前提是你需要认真去学&#xff0c;而不是三天打渔两天晒网的&#xff0c;因为python初学很容易&#xff0c;稍微过几天忘记也很容易&#xff0c;所以一定要坚持学习&#xff0c;并且通过平时多加练习来熟练掌握各个知识点。 一、学…

非零基础自学Golang 第15章 Go命令行工具 15.4 注释文档(doc)

非零基础自学Golang 文章目录非零基础自学Golang第15章 Go命令行工具15.4 注释文档(doc)第15章 Go命令行工具 15.4 注释文档(doc) Go语言文档工具go doc和go fmt一样&#xff0c;也是对godoc的简单封装。 我们通常使用go doc查看指定包的文档。 例如我们查看函数fmt.Println…

焕然一新的 Vue 3 中文文档要来了

前言 大家好&#xff0c;我是LBJ&#xff0c;最近参与了 Vue 3新文档的翻译和校验工作 (vuejs/docs contributor 和 docs-zh-cn contributor) 我们知道 Vue 3 新文档 ( vuejs.org ) 已经发布一个多月了&#xff0c;但那是英文版的&#xff0c;不知道你看了没&#xff1f; 没…

恒业微晶冲刺深交所:年营收4.3亿 戴联平控制73.8%表决权

雷递网 雷建平 12月20日上海恒业微晶材料科技股份有限公司&#xff08;简称&#xff1a;“恒业微晶”&#xff09;日前递交招股书&#xff0c;准备在深交所创业板上市。恒业微晶计划募资8亿元&#xff0c;用于恒业新型分子筛项目。年营收4.31亿恒业微晶创建于1992年&#xff0c…