【青训营】架构初探

news2025/1/18 3:21:04

单机架构

单机架构是把所有功能都实现在一个进程里,并且部署在一台机器上。优点是简单,但是缺点在于其能够承载的带宽有限,而且进行运行维护必须关停服务器。模块之间相互影响,

image.png

单体架构

单体架构和单机架构最大的不同是单体架构可以有多个进程一同处理需求,其中用户会被分流到不同的分布式应用上,从而实现水平扩容,就像蛋糕店雇多了几个师傅一同做蛋糕一样。但是所有的职责都会在一个进程内完成,单个进程的职责过重,就如同一个蛋糕师傅需要制作所有类型的蛋糕一样

image.png

垂直应用架构

垂直应用架构是对单体架构的改进,按照业务线垂直划分比如说一个进程对应一个特定的功能,就如同一个师傅只负责一种蛋糕一样。垂直应用架构可以按照应用垂直切分单体。其优势在于各个业务都是独立开发维护的

image.png

但是垂直应用架构中单个进程的职责还是很重,一旦某个进程的某一步出现故障,那么该进程就会瘫痪,而且有一些各个进程都需要进行的重复性工作被分散到了各个进程中,降低了效率。比如每一个蛋糕都需要蛋糕胚,按照垂直应用架构,每一个师傅都要自己做蛋糕胚,实际上讲做蛋糕胚的任务集中起来效率会更高。而且每个服务依旧是一个单体架构,依旧存在单体架构的缺点

分布式架构

分布式架构在垂直架构的基础上,抽离除了业务无关的公共模块,在中间增加列一个服务层,减少了垂直应用架构的服务中的重复模块,实现了公共逻辑的复用。

image.png

但是他的劣势在于:某个服务模块的bug可能导致全站瘫痪,而且服务的调用关系十分复杂

SOA

SOA的思想是面向服务的
SOA的特性是:

  1. 将应用的不同功能单元抽象为服务
  2. 定义服务之间的通信标准

SOA架构是一种水平切分,对职责进行了进一部分的切分,将将职责扁平化,然后再组合起来,并且通过中心化的手段解决了分布式架构中的调用关系复杂的问题

image.png

经过水平切分后,在“兰师傅蛋糕店沟通技巧”部分将各个蛋糕部分组合在一起,实现了更为高效的系统。

image.png

这个兰师傅蛋糕店沟通技巧就是一个服务注册中心,展现层和服务层通过服务注册中心交互,可以实现服务的发现和注册等。

image.png

但是SOA的问题是:整个系统设计是中心化的,是从上至下的设计,这导致系统重构的难度和成本都很大

微服务

微服务架构是SOA的去中心化演进方向。是彻底的服务化

image.png

对于微服务,有以下挑战:

  • 数据一致性问题:如何保证各个分布式服务数据一致
  • 高可用问题:服务之间如何合作
  • 治理:如果某个微服务出错,如何容灾
  • 解耦还是过微:过分的解耦会使得服务太多,使得运维成本反而增加

微服务优势在于:

  • 开发效率高,开发者只需要聚焦于自己要实现的微服务的功能而不需要管其他微服务
  • 业务独立设计
  • 自下而上,使得重构变得容易
  • 故障隔离,一个微服务的故障不会使得系统崩溃

劣势在于:

  • 治理和运维的难度都提升了,尤其是微服务拆分粒度太细的时候
  • 微服务对安全性的要求更高

架构的演进就如同做蛋糕,需求量越来越大,总归要增加人手;越做越复杂,总归要分工合作。架构的演进可以水平切分或者竖直切分

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

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

相关文章

【JavaEE】认识Tomcat

✨哈喽,大家好,我是辰柒!✨ 🛰️🛰️系列专栏:【JavaEE】 ✈️✈️本篇内容:如何构造 HTTP 请求同时认识HTTPS! 🚀🚀代码存放仓库github:JavaEE代码! ⛵⛵作者…

排序模型进阶-WideDeepWDL模型导出

8.5 排序模型进阶-Wide&Deep 学习目标 目标 无应用 无 8.5.1 wide&deep Wide部分的输入特征: raw input features and transformed featuresnotice: W&D这里的cross-product transformation:只在离散特征之间做组合,不管是文本…

《从0开始学大数据》之构建一个大数据平台

在分布式系统中分发执行代码并启动执行,这样的计算方式必然不会很快,即使在一个规模不太大的数据集上进行一次简单计算,MapReduce 也可能需要几分钟,Spark 快一点,也至少需要数秒的时间。而互联网产品处理用户请求&…

微信短视频怎么提取gif?三步教你在线提取gif动画

现在各大社交软件上短视频是越来越多,为了方便传播、保存可以将短视频制作成GIF。那么,如何从视频中提取动图呢?很简单,两招就能完成在线视频转换成gif动图的操作,只需要使用【GIF中文网】的视频转gif(http…

OBS使用WebRTC进行腾讯云推流播流

推流: 首先:OBS想要推送WebRTC格式的推流需要满足以下两点: 1:OBS版本在26及以上 2:需要给OBS安装腾讯云插件,而且只支持Windows版。 OBS下载地址:Download | OBSDownload OBS Studio for W…

电路方案分析(十六)带有C2000微控制器且精度为 ±0.1° 的分立式旋转变压器前端参考设计

带有C2000微控制器且精度为 0.1 的分立式旋转变压器前端参考设计 tips:参考Ti设计资源:TIDA-01527 旋转变压器详细介绍: https://blog.csdn.net/qq_41600018/article/details/127597875?spm1001.2014.3001.5501 该参考方案设计…

用投资思维做好招商工作:湘商回归,长沙急企业之所急

在中国经济发展40年后,当下经济发展的底层逻辑已发生了根本性变化。企业发展所面临的问题,投资所思考的方向也已不同以往。一味再强调本地资源优势,介绍当地优惠政策的招商工作方式不再适应当下形式,往往反而会导致忽略企业的真实…

58.Isaac教程--OTG5 直线运动规划器

OTG5 直线运动规划器 ISAAC教程合集地址文章目录OTG5 直线运动规划器最大值和期望值的配置OTG5 的 Flatsim 演示用于直线运动的在线轨迹生成 - V 型 (OTG5) 规划器允许线性运动,同时明确防止曲线。 这在即使与一般直线运动方向有轻微偏差也会导致意外结果的情况下很…

Redis核心技术-高可靠-集群方案(客户端分片、代理分片、Redis Cluster)

Redis在3.0版本前只支持单实例模式,虽然Redis的开发者Antirez早在博客上就提出在Redis 3.0版本中加入集群的功能,但3.0版本等到2015年才发布正式版。 各大企业等不急了,在3.0版本还没发布前为了解决Redis的存储瓶颈,纷纷推出了各…

【每日一题】【LeetCode】【第二十四天】【Python】两个数组的交集 II

解决之路 题目描述 测试案例(部分) 第一次 顺着“两个数组的交集”的思路想,先用集合处理nums1和nums2,然后通过“交集”运算得出列表res,然后循环检查列表res,得出各个元素在两个数组中出现的最小次数&…

2022生化原理I复习资料汇总

文章目录1.2022复习重点及参考题2022年考试复习题:附录:参考答案及复习重点2.2021复习重点及参考题3.往年复习重点及参考题汇总4.复习重点整理及考试题型生化原理I复习资料及往年考题1.2022复习重点及参考题 2022年考试复习题: 1.2021-2022…

Python Stock安装与使用

这个是使用python 开发股票系统。 使用 tushare 获取股票数据,然后使用tornado 进行web 展示。 使用pandas numpy 数据处理。 项目代码 项目代码放到github上面 GitHub - pythonstock/stock: stock,股票系统。使用python进行开发。 因为为了简单&#x…

【Netty学习】七、详解ByteBuf缓冲区

七、详解ByteBuf缓冲区 为了确保引用计数不会混乱,在Netty的业务处理器开发过程中,应该坚持一个原则:retain和release方法应该结对使用。简单地说,在一个方法中,调用了retain,就应该调用一次release。 pub…

视图存储过程存储函数

文章目录视图常见数据库对象视图概述为什么使用视图?视图的理解创建视图创建单表视图创建多表联合视图基于视图创建视图查看视图更新视图的数据一般情况不可更新的视图修改、删除视图修改视图删除视图总结视图优点视图不足存储过程&存储函数存储过程概述理解分类…

NFT Insider #84:The Sandbox与华纳音乐集团合作举办全世界最大的DemoDrop,英超联赛签署NFT协议

引言:NFT Insider由NFT收藏组织WHALE Members、BeepCrypto联合出品,浓缩每周NFT新闻,为大家带来关于NFT最全面、最新鲜、最有价值的讯息。每期周报将从NFT市场数据,艺术新闻类,游戏新闻类,虚拟世界类&#…

[论文分享] How could Neural Networks understand Programs?

前言 读一篇 ICML 2021 的论文How could Neural Networks understand Programs? 程序语义理解是程序设计语言处理(PLP)的一个基本问题。最近基于NLP预训练技术学习代码表示的工作,推动了该方向的前沿。然而,PL和NL的语义有着本质的区别。忽略这些&…

CPP----精选常识100例

1 静态全局变量的作用域 本文件 2 判断一个程序是C还是C编译的 #ifdef __cpluspluscout << "c"; #else cout << "c"; #endif3 C函数传递方式 值传递&#xff0c;引用传递&#xff0c;指针传递 4 虚函数定义及用法 虚函数是C中用于实现多态(p…

vue2 a-tree-select树形结构-懒加载(无限子级)---笔记

实现效果 思维导图 HTML代码&#xff1a;treeData是绑定的数组&#xff0c;onLoadData是懒加载函数 <a-tree-select style"width: 100%; margin-left: 20px" tree-data-simple-mode multiplelabelInValueplaceholder"请选择…" v-decorator"[lea…

史上最详细的KMP算法教程,看这一篇就够了

&#x1f9d1;‍&#x1f4bb; 文章作者&#xff1a;Iareges &#x1f517; 博客主页&#xff1a;https://blog.csdn.net/raelum ⚠️ 转载请注明出处 目录一、BF算法二、KMP算法2.1 字符串基础2.2 next数组2.3 KMP的实现2.4 next数组的生成三、改进的KMP算法3.1 nextval数组3.…

turf.js实现行政区(多边形)图形合并边界提取,掩膜等效果

在做前端行政区展示的时候,可能经常会遇到这样的需求,就是给定一个行政区比如杭州市各个区,县的行政区边界图形,但是我们现在需要一个杭州市的行政区边界,我们是否可以通过前端合并这些行政区,答案当然是可以的,我们可以使用turf.js来实现这个需求。 turf官网:Turf.js…