我的编程空间,编程开发者的网络收藏夹
学习永远不晚

【架构师】零基础到精通——架构发展

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

【架构师】零基础到精通——架构发展

博客昵称:架构师Cool
最喜欢的座右铭:一以贯之的努力,不得懈怠的人生。
作者简介:一名Coder,软件设计师/鸿蒙高级工程师认证,在备战高级架构师/系统分析师,欢迎关注小弟!
博主小留言:哈喽!各位CSDN的uu们,我是你的小弟Cool,希望我的文章可以给您带来一定的帮助
百万笔记知识库, 所有基础的笔记都在这里面啦,点击左边蓝字即可获取!助力每一位未来架构师!
欢迎大家在评论区唠嗑指正,觉得好的话别忘了一键三连哦!😘

1、单体应用架构(Monoliths)

互联网早期,一般的网站应用流量较小,只需一个应用,将所有功能代码都部署在一起就可以,这样可以减少开发、部署和维护的成本。比如说一个电商系统,里面会包含很多用户管理,商品管理,订单管理,物流管理等等很多模块,我们会把它们做成一个web项目,然后部署到一台tomcat服务器上。

在这里插入图片描述

1-1、优点

  • 项目架构简单,小型项目的话, 开发成本低
  • 项目部署在一个节点上, 维护方便

1-2、缺点

  • 全部功能集成在一个工程中,对于大型项目来讲不易开发和维护
  • 项目模块之间紧密耦合,单点容错率低
  • 无法针对不同模块进行针对性优化和水平扩展

2、垂直应用架构(Vertical)

随着访问量的逐渐增大,单一应用只能依靠增加节点来应对,但是这时候会发现并不是所有的模块都会有比较大的访问量。还是以上面的电商为例子, 用户访问量的增加可能影响的只是用户和订单模块, 但是对消息模块的影响就比较小. 那么此时我们希望只多增加几个订单模块, 而不增加消息模块. 此时单体应用就做不到了, 垂直应用就应运而生了。所谓的垂直应用架构,就是将原来的一个应用拆成互不相干的几个应用,以提升效率。比如我们可以将上面电商的单体应用拆分成:

  • 电商系统(用户管理 商品管理 订单管理)
  • 后台系统(用户管理 订单管理 客户管理)
  • CMS系统(广告管理 营销管理)

这样拆分完毕之后,一旦用户访问量变大,只需要增加电商系统的节点就可以了,而无需增加后台和CMS的节点。

在这里插入图片描述

2-1、优点

  • 系统拆分实现了流量分担,解决了并发问题,而且可以针对不同模块进行优化和水扩展
  • 一个系统的问题不会影响到其他系统,提高容错率

2-2、缺点

  • 系统之间相互独立, 无法进行相互调用
  • 系统之间相互独立, 会有重复的开发任务

3、分布式架构(Distributed)

即分布式架构当垂直应用越来越多,重复的业务代码就会越来越多。这时候,我们就思考可不可以将重复的代码抽取出来,做成统一的业务层作为独立的服务,然后由前端控制层调用不同的业务层服务呢?

这就产生了新的分布式系统架构。它将把工程拆分成表现层和服务层两个部分,服务层中包含业务逻辑。表现层只需要处理和页面的交互,业务逻辑都是调用服务层的服务来实现。
在这里插入图片描述

3-1、优点

  • 抽取公共的功能为服务层,提高代码复用性

3-2、缺点

  • 系统间耦合度变高,调用关系错综复杂,难以维护

4、面向服务化架构(SOA)

在分布式架构下,当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心对集群进行实时管理。此时,用于资源调度和治理中心(SOA Service Oriented Architecture,面向服务的架构)是关键。
在这里插入图片描述

4-1、优点

  • 使用注册中心解决了服务间调用关系的自动调节

4-2、缺点

  • 服务间会有依赖关系,一旦某个环节出错会影响较大( 服务雪崩 )
  • 服务关心复杂,运维、测试部署困难

5、微服务架构(Micro Service)

微服务架构在某种程度上是面向服务的架构SOA继续发展的下一步,它更加强调服务的"彻底拆分"。

在这里插入图片描述

5-1、优点

  • 更好的开发规模
  • 更快的开发速度
  • 支持迭代开发或现代化增量开发
  • 充分利用现代软件开发生态系统的优势(云、容器、 DevOps、Serverless)
  • 支持水平缩放和细粒度缩放
  • 小体量,较低了开发人员的认知复杂性

5-2、缺点

  • 更高数量级的活动组件(服务、数据库、进程、容器、框架)
  • 复杂性从代码转移到基础设施
  • RPC 调用和网络通信的大量增加
  • 整个系统的安全性管理更具有挑战性
  • 整个系统的设计变得更加困难
  • 引入了分布式系统的复杂性

5-3、微服务定义

在这里插入图片描述

  • 一组小的服务

    原来的单块服务都是业务能力大而全的打包在一个单块中,微服务主张把这些单块服务进行拆分,形成一个个小的独立的服务。这里有个最大的特点是“小”,那么纠结要小到什么程度才为之小,很多同学都会纠结这个小的点,因为这个小并没有特别和明确的规定,所以这也就引申出了现在很多DDD领域驱动设计来指引微服务的拆分,但基本上一个微服务能让一个开发人员能够独立的理解,基本上就称为一个微服务,具体有多少行代码并不是很关键。

  • 独立的进程

    微服务是运行在独立的进程当中,例如java程序部署在tomcat,也可以部署在容器docker中,容易本身也是一种进程,所以微服务可以以进程的方式去扩展。

  • 轻量级的通讯

    微服务主张使用轻量级去构建通讯机制,例如http,固定消息格式和减少消息格式,服务之间不耦合,让通讯尽量轻量。

  • 基于业务能力

    微服务是基于业务能力进行构建,例如有用户服务,登陆服务,商品服务,基于这些业务能力去构建这些微服务。

  • 独立部署

    微服务被拆分开后,每个团队独立维护自己的微服务,开发,迭代自己的微服务,是可以独立的去部署,团队之间是不需要特别的去协调,这些对业务开发维护可以做到更加的敏捷,轻量,快速。

  • 无集中式管理

    原来单体服务是需要整个技术团队是需要独立的架构团队去管理,统一架构,统一技术栈,统一存储,微服务就不太一样,微服务主张每个团队根据自己的技术需要,选择自己最熟悉,最高效解决问题的技术栈,甚至选择不同存储方式。

来源地址:https://blog.csdn.net/qq_57473444/article/details/129219131

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

【架构师】零基础到精通——架构发展

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

【架构师】零基础到精通——架构发展

博客昵称:架构师Cool 最喜欢的座右铭:一以贯之的努力,不得懈怠的人生。 作者简介:一名Coder,软件设计师/鸿蒙高级工程师认证,在备战高级架构师/系统分析师,欢迎关注小弟! 博主小留言:哈喽!各位CSDN的uu们,我是你的小弟Co
2023-08-20

【架构师】零基础到精通——网关策略

博客昵称:架构师Cool 最喜欢的座右铭:一以贯之的努力,不得懈怠的人生。 作者简介:一名退役Coder,软件设计师/鸿蒙高级工程师认证,在备战高级架构师/系统分析师,欢迎关注小弟! 博主小留言:哈喽!各位CSDN的uu们,我是你的小弟
2023-08-17

Python 入门到精通:从零基础到项目开发

Python 是一种简单易学、功能强大的编程语言,适合各种人群学习。本文将从零基础开始,逐步介绍 Python 的基础语法、数据类型、运算符、控制流语句、函数、模块、面向对象编程等内容,并通过演示代码帮助读者理解和掌握这些知识点。
Python 入门到精通:从零基础到项目开发
2024-02-10

零基础可以考系统架构设计师吗?怎么复习

系统架构设计师是软考中的一个高级别认证,考察的是考生在系统设计方面的理论知识和实践经验。对于零基础的考生来说,考取系统架构设计师确实是一项挑战,但并非不可能实现。具体请见下文。
零基础可以考系统架构设计师吗?怎么复习
2024-09-21

MQ消息队列发展史&MQ通用架构

MQ消息队列发展史:1. 早期的消息队列:早期的消息队列主要是基于主机内存的消息传递系统,它们通常用于进程间通信和数据传输。2. 第一代消息队列:第一代消息队列主要是基于消息传递中间件(Middleware)的架构,如IBM MQSerie
2023-10-11

PHP框架:从基础到精通,揭示最佳实践

php框架是构建web应用程序的架构,提供工具和功能,以简化开发过程。选择合适的框架取决于项目需求和技能水平。实战案例展示了使用laravel构建博客的步骤,包括安装、创建模型、定义路由、编写控制器和呈现视图。最佳实践建议使用mvc架构、遵
PHP框架:从基础到精通,揭示最佳实践
2024-05-24

用JavaScript MVC架构构建动态Web应用程序:从入门到精通

在构建动态Web应用程序时,MVC架构是一种流行的设计模式。JavaScript MVC框架是一种基于JavaScript的MVC框架,它可以帮助开发人员快速构建交互式、健壮的Web应用程序。
用JavaScript MVC架构构建动态Web应用程序:从入门到精通
2024-02-12

深入浅出 Node.js 事件驱动架构:从入门到精通

深入学习 Node.js 事件驱动架构,揭秘其关键概念和运作机制,掌握高效率开发技巧。 Node.js、事件驱动、事件循环、非阻塞式、高并发 Node.js 作为一种跨平台的运行时环境,以其高效、轻量和高扩展性备受青睐,而其事件驱动架构更是其核心优势之一。本文将深入浅出地解析 Node.js 事件驱动架构,从基础概念讲解到实用案例演示,帮助您全面理解和掌握这项强大技术。
深入浅出 Node.js 事件驱动架构:从入门到精通
2024-02-07

Java集合框架宝典:从零基础到精通,掌握数据管理的不二法门

Java集合框架是Java平台提供的用于存储和管理集合类型数据的API,它为开发人员提供了丰富的集合类型和操作方法,极大地简化了数据管理的复杂性。本文将从零基础开始,逐步介绍Java集合框架的组成、体系结构、基本操作方法和具体实现,帮助读者掌握Java集合框架的精髓,成为数据管理的高手。
Java集合框架宝典:从零基础到精通,掌握数据管理的不二法门
2024-02-22

编程热搜

目录