搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
繁依Fanyi0
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
C语言基础题练习10道_c语言练习题
2
JET毛选学习笔记:如何利用《实践论》学习实验
3
EPNP算法详解
4
springboot大文件上传、分片上传、断点续传、秒传的实现_springboot整合vue2-uploader文件分片上传、秒传、断点续传 randomacce
5
【Spring Security第二篇】身份认证Authentication_authentication 用户身份验证登录
6
Android Studio 报Error: Program type already present: **.BuildConfig_android studio project type already present buildc
7
浅测阿里【通义灵码】协助python代码编写记录-新手练习/老师傅摸鱼必备_通义灵码辅助python编程
8
Ubuntu apt更换国内镜像源,apt 更新源,apt 国内镜像_sudo apt 镜像
9
C/C++内存管理
10
如何“隐藏”NetSuite中PO/SO的价格信息?_netsuite 价格屏蔽
当前位置:
article
> 正文
常见的系统架构设计介绍_系统架构设计包括哪些内容
作者:繁依Fanyi0 | 2024-05-06 19:20:03
赞
踩
系统架构设计包括哪些内容
系统
架构
设计介绍
分布式架构
初始阶段架构
特征
应用服务和数据服务以及文件服务分离
特征
问题
使用缓存改善性能
特征
问题
使用应用服务器集群
特征
描述
问题
数据库读写分离
特征
描述
问题
反向代理和CDN加速
特征
描述
分布式文件系统与分布式数据库
特征
描述
问题
使用NoSQL和搜索引擎
特征
描述
业务拆分
特征
描述
分布式服务
特征
问题
分布式架构问题和挑战
单元化架构
什么是单元化
单元化的必要性
如何实现单元化
SOA架构
SOA架构基本概念
SOA实施基本特征
微服务架构
传统的Web开发方式
优点
缺点
系统架构的标准
基于微服务的架构设计
SOA和微服务的区别
Serverless架构
思想
优势
内容
函数即服务-FaaS
后端即服务-BaaS
三个优秀的less架构概念
Codeless
Applicationless
Serverless
分布式
架构
初始阶段架构
特征
应用程序,数据库,文件等所有资源都放在同一台服务器上
应用服务和数据服务以及文件服务分离
特征
应用程序,数据库和文件分别部署在独立的资源上
问题
随着系统访问量的再度增加
,webserver
机器的压力在高峰期会上升到比较高,需要开始考虑增加一台
webserver
使用缓存改善性能
特征
数据库中访问较集中的一小部分数据存储在缓存服务器中,减少数据库的访问次数,降低数据库访问压力
问题
系统访问特点遵循二八定律,即
80%
的业务访问集中在
20%
的数据上
缓存分为本地缓存和远程分布式缓存
本地缓存访问的速度更快但是缓存数量有限,同时存在与应用程序争抢内存的情况
使用应用服务器集群
特征
多台服务器通过负载均衡同时向外部提供服务,解决单台服务器处理能力和存储空间上限的问题
描述
使用集群是解决高并发,海量数据问题的常用手段
通过向集群中追加资源,提升系统的并发处理能力,使得服务器的负载压力不再成为整个系统的瓶颈
问题
Apache会阻塞很多请求,应用服务器对每个请求的比较快的
请求数太高会导致需要排队等待,响应速度变慢
数据库读写分离
特征
数据库引入了主备部署
描述
数据库划分为读库和写库
通过引入主从数据库服务,读和写操作在不同的数据库服务处理
读库可以有很多个,通过同步机制将写库的数据同步到读库
对于需要查询最新写入数据的场景,可以通过缓存中多写一份,通过缓存获得最新数据
问题
数据库写入,更新的操作部分对数据库连接的资源竞争非常激烈,导致系统变慢
反向代理和CDN加速
特征
采用CDN和反向代理加快系统的访问速度
描述
为了应付复杂的网络环境和不同地区用户的访问,通过CDN和反向代理加快用户访问的速度,同时减轻后端服务器的压力
CDN与反向代理的基本原理都是缓存
分布式文件系统与分布式数据库
特征
数据库采用分布式数据库,文件系统采用分布式文件系统
描述
任何强大的单一服务器都满足不了大型系统持续增长的业务需求
数据库读写分离随着业务的发展最终也将无法满足需求,需要使用分布式数据库及分布式文件系统来支撑
分布式数据库:
是系统数据库拆分的最后方法,只有在单表数据规模非常庞大的时候才使用
更常用的数据库拆分手段是业务分库,将不同的业务数据库部署在不同的物理服务器上
问题
随着系统的不断运行,数据量开始大幅增长
数据库分库的查询仍然很慢,于是按照分库的思想来做分表的工作
使用NoSQL和搜索引擎
特征
系统引入NoSQL数据库和搜索引擎
描述
随着业务越来越复杂,对数据存储和检索的要求也越来越复杂,系统需要采用一些非关系型数据库NoSQL和分数据查询技术搜索引擎
应用服务器通过统一的数据访问模块访问各种数据,减轻程序管理诸多数据源的麻烦
业务拆分
特征
系统按照业务进行拆分,应用服务器按照业务区分进行分别部署
描述
为了应对日益复杂的业务场景,通常使用分而治之的手段将整个业务系统分成不同的产品线
应用之间通过超链接建立关系,也可以通过消息队列进行数据分发.更多是通过访问同一数据存储系统来构成一个关联的完整系统
纵向拆分:
将一个大应用拆分成多个小应用
如果新业务比较独立,那么就直接设计部署为一个独立的Web应用系统
纵向拆分相对比较简单,通过梳理业务,可以将较少相关的业务剥离即可
横向拆分:
将复用的业务拆分出来,独立部署为分布式系统
新增的业务只需要调用这些分布式服务
横向拆分需要识别可复用的业务,设计服务接口,规范服务依赖关系
分布式服务
特征
公共的应用模块被提取出来,部署在分布式服务器上供应用服务器调用
问题
随着业务越拆越小,应用系统整体复杂程度呈指数级上升
由于所有应用要和所有数据库系统连接,最终导致数据库连接资源不足,拒绝服务
分布式架构问题和挑战
当服务越来越多时,服务URL配置管理变得非常困难,硬件负载均衡器的单点压力也越来越大
当服务越来越多时,服务间的依赖关系变得错综复杂,甚至分不清哪个应用要在哪个应用之前启动,架构师都不能完整地描述应用的架构关系
服务的调用量越来越大,服务的容量问题就暴露出来,这个服务需要多少机器支撑?什么时候该加机器?
服务多了,沟通成本也开始上升,调用某个服务失败应该找谁?服务的参数都有什么约定?
一个服务有多个业务消费者,如何确保服务质量?
随着服务的不断升级,总有一些意想不到的事情发生: 比如cache写错了导致内存溢出,故障不可避免,每次核心服务宕机,影响损失大,如何控制故障的影响面?服务是否可以功能降级?服务是否可以资源劣化?
针对这个问题,可以使用以下架构解决:
单元化架构
微服务架构
Serveless架构
针对业务系统,做到以下几个方面可以解决上述问题:
业务与业务隔离
管理域和运行域分开
业务与平台隔离
单元化架构
什么是单元化
单元化架构师是从并行计算领域发展而来
在分布式架构领域:
一个单元Cell:
满足某个分区所有业务操作的自包含的包装
一个分区Shard:
整体数据集的一个子集. 比如如果是用尾号来划分用户,那么同样尾号的那部分用户就可以认为是一个分区
单元化就是将一个服务设计改造成符合单元特征的过程
单元化的必要性
随着硬件的不断升级,计算机硬件能力已经越来越强,CPU越来越快,内存越来越大,网络越来越宽.这样就有了在单台机器上进行垂直扩展的能力
当遇到一个性能要求和容量增长可以预期的业务,单元化可以有效降低资源的使用,提供更高的性能服务
经过单元化改造,可以只使用一半的机器,获得比原来接近百倍的性能
性能的提升很大部分原因在于服务本地化,而服务的集成部署又进一步降低了资源的使用
单元化除了性能收益,还有更好的隔离性,包括请求隔离和资源隔离.更友好的升级,产品可以灰度发布
单元化改造后可以对高峰的应对以及扩容方式的解决
如何实现单元化
传统的服务架构:
服务是分层的
每一层使用不同的分区算法
每一层都有不同数量的节点
上层节点随机选择下层节点
单元化架构:
服务虽然分层划分,但是每个单元自成一体
所有层次使用相同的分区算法,每一层都有相同数量的节点,上层节点也会访问指定的下层节点
SOA架构
SOA架构基本概念
SOA:
Service-Oritented Architecture
面向服务的架构
是一个组件模型
将应用程序的不同功能单元,即服务.通过这些服务之间定义良好的接口和契约联系起来
接口采用中立的方式进行定义的,独立于实现服务的硬件平台,操作系统和编程语言
这样使得构建在各种个样的系统中的服务可以以一种统一和通用的方式进行交互
面向服务架构,可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署,组合和使用
服务层是SOA的基础,可以直接被应用调用,从而有效控制系统中与软件代理交互的人为依赖性
SOA实施基本特征
实施
SOA的
关键目标是实现企业IT资产的最大化作用.要实现这一目标,就要在实施
SOA
的过程中牢记以下特征:
可以从企业外部访问
随时可用
粗粒度的服务接口分级
松散耦合
可重用的服务
服务接口设计管理
标准化的服务接口
支持各种消息模式
精确定义各种服务契约
服务消费者
Service Consumer
可以通过发送消息来调用服务
这些消息由一个服务总线
Service Bus
转换后发送给适当的服务实现
SOA
架构可以提供一个业务规则引擎
Business Rules Engine
允许业务规则被合并在一个服务或者多个服务里
SOA
架构也提供了一个服务管理基础
Service Management Infrastructure
用来管理服务,比如审核,列表和日志等功能
SOA架构给企业提供了灵活的业务流程,更好地处理控制请求
Regulatory Requirement.
比如
Sarbanes Oxley(SOX),
并且可以在不影响其余服务的情况下更改某项服务
微服务架构
传统的Web开发方式
所有的功能打包在一个
war
包里
除了容器之外,基本没有外部依赖
部署在一个
JEE
容器里,比如
Tomcat, JBoss
和
WebLogic
包含了
DO
或者
DAO,Service,UI
等所有逻辑
优点
开发简单,集中式管理
基本不会重复开发
功能都在本地,没有分布式管理和协调消耗
缺点
效率低:
开发都在同一个项目改代码,相互等待,冲突不断
维护难:
代码功能耦合在一起,难以维护
不灵活:
构建时间长,任何小修改都要构建整个项目,耗费时间
稳定性差:
一个微小的问题,都可能导致整个应用宕机
扩展性不够:
无法满足高并发下的业务需求
系统架构的标准
提高敏捷性:
及时响应业务需求,促进企业发展
提升用户体验:
提升用户体验,减少用户流失
降低成本:
降低增加产品,客户活业务方案的成本
基于微服务的架构设计
目的:
有效拆分应用,实现敏捷开发和部署
微服务:
X轴:
运行多个负载均衡器之后的运行实例
Y轴:
将应用进一步分解为微服务
- 分库
Z轴:
大数据时,将服务分区
- 分表
SOA和微服务的区别
SOA
偏重重用,微服务偏重重写
SOA
偏重水平服务,微服务偏重垂直服务
SOA
偏重自上而下,微服务偏重自下而上
Serverless架构
思想
无服务器是一种架构理念
核心思想:
将提供服务资源的基础设施抽象成各种服务,以API接口的方式供用户按需使用
真正做到按需收缩,按使用收费
优势
消除了对传统的海量持续在线服务器组件的需求
降低了开发和运维的复杂性
降低运营成本并缩短了业务系统的交付周期
使得用户能够专注在价值密度更高的业务逻辑的开发上
内容
无服务器架构主要包括两个方面:
提供计算资源的函数服务平台
FaaS
提供托管云服务的后端服务
BaaS
函数即服务-FaaS
是一项基于事件驱动的函数托管计算服务
开发者只需要编写业务函数代码并设置运行条件,无需配置和管理服务器基础设施
函数代码运行在无状态的容器中,由事件触发且短暂易失,并完全由第三方管理,基础设施对应用开发者完全透明
函数以弹性高,高可用的方式运行,并且按照实际执行资源计费,不执行不产生费用
后端即服务-BaaS
Baas
涵盖了应用可能依赖的所有第三方服务:
云服务
身份验证
对象存储等
开发人员通过
API
和由
BaaS
服务商提供的
SDK,
能够集成所需的所有后端功能,而无需构建后端应用,更不必管理虚拟机或容器等基础设施,就能保证应用的正常运行
三个优秀的less架构概念
Codeless
Codeless
对应的是
服务开发
实现了代码托管
只需要关心代码实现,不需要关心代码在哪,因为整个过程不会感受到代码库和代码分支的存在
Applicationless
Applicationless
对应的
服务发布
在无服务化的框架下,服务发布不需要申请应用,不需要关注应用在哪
Serverless
Serverless对应的是
服务运维
不需要关注机器资源,Serverless会完成机器资源的弹性扩容
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/545583
推荐阅读
article
基于飞腾
D2000
全国产化
高速公路
一体化
收费
站解决方案:站数据
服务器
、站AI
服务器
、
收费
系统
、监控系...
高速公路
收费
站借鉴国内外经验和先进的软件、硬件、
系统
构建经验,灵活运用技术标准和指标,充分考虑到了飞腾核 心处理器的功能...
赞
踩
article
TypeScript
详解三:
函数
_
ts
通过
字符串
调用
方法...
本文介绍了
TypeScript
中
函数
的基本用法,包括
函数
的定义、
函数
表达式、可选参数、剩余参数和
函数
重载等。
_
ts
...
赞
踩
article
设计
网站
中
的
精品,你可能需要它兼职
赚钱
--第一期_
doooor
设计
师
可以
赚钱
吗...
一直读我文章
的
朋友应该知道我是一名程序员,在写程序
的
同时,UI图也是我必须接触
的
。而且平时接触
的
代码多了,这种视觉传达
的
...
赞
踩
article
大
数据
面经
吐血
总结
【阿里提问+
答案
解析】...
1 自我介绍控制在4分半以内,不超过5分钟(1)个人基本信息(2)工作履历工作时间、公司名称、任职岗位、主要工作内容、工...
赞
踩
article
基于
layuimini
开源框架的
PHP
资产
管理
系统
,适用于IT办公行业固定
资产
及设备的
管理
源码...
摘要:本文将介绍一款适用于IT办公行业的
资产
管理
系统
,该系统基于Layuimini开源框架开发,并提供了简单的部署文档。...
赞
踩
article
VirtualBox安装
CentOS7
_
visualbox7
...
Liunx一些发行版介绍: RHEL:Red Hat公司开发,收费。 CentOS:RHEL的社区克隆版本,免费。 Fe...
赞
踩
article
探索未来
视觉
定位
:
NeRF
-
SLAM
技术
解析与
应用
...
探索未来
视觉
定位
:
NeRF
-
SLAM
技术
解析与
应用
项目地址:https://gitcode.com/ToniRV/Ne...
赞
踩
article
记录
一下
:星环科技
Hadoop
实习生
岗位
面试
_
星环大
数据
工程师
面试
题...
我刚毕业时在西安高新区工作,住在公司附近的一个城中村,步行20分钟上下班,每天下班回家经过科技路和高新路的十字路口,看着...
赞
踩
article
阿里巴巴
大厂
面试
参考指南【第
24
篇
,
三年
Python
开发
...
学好
Python
不论是就业还是做副业赚钱都不错
,
但要学会
Python
还是要有一个学习规划。最后大家分享一份全套的...
赞
踩
article
linux
中
安装
nodejs
,
卸载
nodejs
,更新
nodejs
,
git
,
linux
中
安装
nginx
...
卸载
node清理掉自动
安装
的并且不需要软件包查看node相关的文件如果有文件需要手动删除文件删除该文件命令在此查看nod...
赞
踩
article
Python
生成
中文词云图...
本文介绍了
Python
如何
生成
词云,主要过程包括加载数据、中文分词、自定义形状、
生成
词云。上面过程可以进一步改进,如过滤...
赞
踩
article
西工大
NOJ
-
2023
(持续更新)
_
noj
2023
答案
...
该文章是关于
西工大
NOJ
-
2023
的目录,其中包括了从1到20的题目内容,如Hello World、A+B等。摘要长度为...
赞
踩
article
hbase
启动异常解决方法_
java
.
io
.interrupted
io
except
io
n at or...
重启
hbase
之后,仍然出现上述异常。推测可能是HDFS中和zk中的
hbase
没有删除导致。下面重启
hbase
、zook...
赞
踩
article
【
算法
】
字符串
...
模拟的竖式计算的步骤,如果相加等于2,那么就进1,然后将这个字符取模就加到要返回的结果中,一直到两个
字符串
都结束。利用中...
赞
踩
article
Spring
Boot整合
Spring
Security
JWT...
Security
权限管理基于security权限管理的简单实现,使用jwt的方式。新建spring boot工程引入相关...
赞
踩
article
如何评价
微软
发布
的
Phi
-3
,
手机都可以运行
的
小
模型
...
微软
这次打出“手机就能直接跑
的
小
模型
”
的
旗号
,
4bit量化后
的
phi-3-mini在iPhone 14 pro和iPho...
赞
踩
article
牛客刷题笔记--(
队列
专项练习)_当
队列
为空
时
,
插入
元素
时
,
队头
和
队尾
指针
都需修改...
知识点总结图的拓扑排序 深度优先 关键路径算法用的辅助数据结构是栈树的层序遍历 图的广度优先遍历用的数据结构是
队列
输入受...
赞
踩
article
uniapp
使用
腾讯
im
无
ui
集成方案写法
_
腾讯
im
uniapp
...
// 创建 SDK 实例,TIM.create() 方法对于同一个 SDKAppID 只会返回同一份实例。// SD...
赞
踩
article
一文详细
介绍
情绪
识别
常用的
数据
集
_
seed
数据
集
...
一文详细
介绍
情绪
识别
常用的
数据
集
SEED本文详细
介绍
了脑机接口
情绪
识别
常用的
数据
集
,主要有SEED, SEED-IV, ...
赞
踩
article
spring
Security
中
jwt
机制及应用详解_
spring
security
jwt
...
前言:在Spring的众多组件
中
,个人认为Spring
security
组件绝对是比较有难度的一款。对于
spring
Sec...
赞
踩
相关标签
智能交通
高速ETC
typescript
学习
javascript
python
人工智能
大数据
分布式
hadoop
数据库
spark
qt
开发语言
java
linux
运维
服务器
搜索引擎
算法
c语言
c++
1024程序员节
hbase