技术架构的发展

技术架构的演进

主要方向:

1.提高单位时间内的吞吐量,提高并发度;

2.对应用服务代码进行解耦合,使得开发效率得到提高;

3.运维成本降低;

4.成本降低,如购买云厂商资源,降低资源闲置可能性;

一、八大架构演进

​ 分别是单机架构应用数据分离架构应用服务集群架构读写分离/主从分离架构冷热分离架构垂直分库架构微服务架构容器编排架构

二、单机架构

简介:应用服务和数据库服务共用一台服务器,即所有的服务都部署在一个服务器上

出现原因:出现在互联网早期,访问量比较少,单机足以满足需求;

架构工作原理:以电子商城为例,可以看到通过应用(划分了了很多个模块)和数据库在单个服务器协作完成业务运行;

架构的优缺点:优点:部署简单并且成本低;缺点:存在严重的性能瓶颈;另外数据建库和应用服务在互相竞争资源;

在这里插入图片描述

三、应用数据分离架构

简介:应用服务和数据库服务使用不同的服务器;

出现原因:单机架构存在严重的资源竞争;

架构工作原理:应用服务和数据库服务在不同的服务器通过网络进行协作;

架构的优缺点:优点:数据库单独隔离,不会因为应用导致数据库破坏;缺点:还是无法应对海量数据;

​ 解决方式:数据库服务和应用服务部署在不同的服务器上;

在这里插入图片描述

四、应用服务集群架构

简介:引入了负载均衡,应用集群方式进行运作;

出现原因:单个应用不足以支持海量的高并发请求;

架构工作原理:应用服务不在是一个,而是变成了多个,即将多个应用服务部署在多个服务器上,可以通过负载均衡实现海量的高并发;典型的负载均衡组件有Nginx(上限是50000并发),LVS支持几十万的并发,F5支持百万至千万级的并发,前面两种是软件,最后一种是一种硬件设备;DNS可以抗住上亿级的并发;最终通过不断横向扩展和负载均衡分层,实现上亿级别的并发;

​ 当DNS也扛不住时,请求达到百亿级别时,可以本地配置IP地址,不通过访问DNS来判断IP地址,提高并发;一般说来,使用了三层负载均衡;第一层是DNS,通过多个IP的返回实现;第二层是LVS/F5实现;第三层是Nginx实现;

架构的优缺点:优点:服务高可用,多个应用服务,防止一个服务挂掉,使得整个服务站点无法使用;应用服务已经具备一定的高并发,不经过数据库可以支持海量请求的快速响应;应用服务有一定的扩展能力,需要使用一定的中间件才能实现快速扩展;缺点:数据库成为了性能瓶颈,无法应对海量数据,单个数据库服务,没有高可用,运维工作增多,需要研发运维中间件进行快速地部署,硬件成本也增加了;

​ 解决方式:搭建应用服务集群,使用横向扩展与负载均衡;

在这里插入图片描述

五、读写分离/主从分离架构

简介:将数据库的读写操作分散到不同的数据库服务节点上,搭建主从集群,主机负载写,从机负责读,同时还需要进行同步;

出现原因:随着架构的发展,数据库已经成为了高并发性能瓶颈;

架构工作原理:在应用集群架构的基础上,对数据库服务实现集群化,一个主机负责写,多个从机负责读,主机完成写之后同步给从机,应用与数据库中间还需要一层判断读写逻辑,常用的组件有mycat、tddl等;

架构的优缺点:优点:数据库的读取性能提高;由于读操作被其他服务器承担,间接地提高了写性能;多个从库,支持高可用;缺点:热点数据频繁读取会导致数据库负载较高;存在一定的同步延迟;

​ 解决方式:对数据库服务使用读写分离与集群化,提高了并发度;

在这里插入图片描述

六、冷热分离架构

简介:引入缓存,实现冷热分离,将热点数据放入到缓存中,冷数据放入到数据库中,实现数据库的快速响应;

出现原因:之前的架构已经可以保证一定程度的并发,但是支持的并发量还是不够,还是会有海量的数据请求导致数据库负载过高,降低了站点响应速度,如秒杀产品的场景;

架构工作原理:由于秒杀场景会同一时间有大量的人员使用,这个数据请求就是热点数据,需要在缓存服务器和存储服务器中都进行写入,但是会存在不都成功的请款给,需要使用代码保证都成功;当进行秒杀查询时,会直接查询缓存服务器,不经过存储服务器直接返回响应,其他冷数据查询时,就会先查询缓存服务器,判断是否存在,不在就查询存储服务器,然后返回响应;常见的缓存组件:Redis内存级数据库;缓存服务器也是集群化的;

架构的优缺点:优点:降低了数据库的访问请求,提高性能,数据都是存放在内存中;缺点:产生了缓存一致性、缓存击穿、缓存失效、缓存雪崩等问题;数据库中所保存的数据量过大,导致查询的速度过慢;

​ 解决方式:引入缓存数据库用来存放热点数据,不再需要和数据库进行交互,间接地提高数据库的并发性能;

在这里插入图片描述

七、垂直分库架构/分布式数据库架构

简介:数据库的数据被拆分,数据分布式存储,分布式处理,分布式查询,换句话说不再是一个服务器处理一个请求,而是多个服务器处理一个请求;

​ 分库分表:由于数据存储量过大,先是将负责业务数据库垂直拆分成简单业务数据库,然后分配到多个服务器中,随着数据不断增加,将简单数据库水平拆分到多个服务器中,每个数据库中存放部分表结构;然后发现表太大,此时进行分表,使用哈希运算进行拆分多个子表,便于后续数据整合;但是执行语句的时候会导致需要发送多个语句的然后将数据进行合并的问题,此时就需要设计中间件负责打包完成这个过程;

​ 分布式数据库:分库分表与打包执行中间件的设计实现分布式数据库;

出现原因:单个库存放在单个服务器中,大量的数据存储,减少了索引、IO等效率;

架构工作原理:在前面架构的基础上,添加多个存储集群,存放一个库中的多个表结构,每个集群都是主从集群;还需要在多个集群之上添加中间件,负责多个sql的执行和数据的合并打包,然后就实现了分布式数据库;常见的分布式数据库:Greenplum、TiDB、Postgresql XC、HAWQ 等,商用的如南大通用的 GBase、 睿帆科技的雪球 DB、华为的 LibrA 等

架构的优缺点:优点:数据库吞吐量大幅提升;缺点:产生分布式相关的跨库问题;由于应用代码整体耦合在一起,每次修改,都要将整个站点暂停,重新进行部署发布;

​ 解决方式:数据库服务和应用服务部署在不同的服务器上;

模拟实现分布式数据库:

在这里插入图片描述

垂直分库架构:

在这里插入图片描述

八、微服务架构

简介:按照业务板块来划分应用代码,使得板块之间做到独立升级迭代,便于上层开发出来新应用服务来复用微服务;

出现原因:扩展性差(添加新功能,每次都要重新构建整个系统)、持续开发困难( 一个小的代码改动也需要重新部署整个应用)、不可靠(一个功能失效,导致整个系统失效)、不灵活(不支持多个语言进行开发不同功能)、可维护性差(代码耦合度高,修改起来不方便);

架构工作原理:在先前架构的基础上,将应用服务的开发转变为微服务的开发和使用微服务构建大型服务(起其实是大型服务调用微服务),需要考虑到微服务之间的协作和与缓存服务器集群,分布式存储服务器集群的交互;常见的微服务框架:Spring Cloud、Dubbo;

架构的优缺点:优点:开发效率高;支持多语言开发,因为http、rpc等协议支持跨语言;缺点:运维难度提高(运维量提高,复杂度提高),如某些微服务不使用了,需要停止服务,可以使用一些自动化运维的工具提高运维效率,还有一个服务器上部署多个微服务要解决环境冲突问题,此外对于动态扩缩容场景,需要在新增的服务上部署环境;使用的资源增多,多个微服务创建的进程增加;排查故障困难;

​ 解决方式:开发微服务模块,支持上层大型应用服务的开发;

在这里插入图片描述

九、容器编排架构

简介:借助容器化技术(docker)将应用和服务打包成一个镜像,然后使用容器编排工具(k8s)来动态分发和部署镜像服务,以容器化方式运行;

出现原因:运维成本较高;

架构工作原理:在原有架构的基础上,创建多个k8s集群,内部使用了不同的容器部署在不同的服务器上,不同的k8s集群分层通过通信来实现一个大型服务的实现;

架构的优缺点:优点:部署运维简单快速;隔离性好,多个容器不会相互影响;滚动性好,可以形成不同版本的部署方案,实现版本替换;缺点:技术栈增多,要求高;当大促来时,需要大量的服务器设备,结束时就会造成资源闲置,所以可以使用购买云服务器的方式,防止造成资源闲置;

​ 解决方式:容器化技术docker、容器编排技术k8s,使用云厂商的技术,解决资源浪费问题;

在这里插入图片描述

十、互联网实战架构

在这里插入图片描述

缓存数据:内存中存放的热点数据;

对象存储:负责存储非层级结构的数据;

基础数据:存放层级结构数据,如文本文件;

ES集群:一种优秀的搜索引擎集群;

MongoDB集群:评论和描述都是大段文字,使用文档数据库存储比较方便;

Hadoop集群:对于数据量大且数据有价值的数据使用大数据分析;

​ 由于不同的数据特征,需要调用不同的数据集群,会使用到大量的API,过程过于繁琐,此时就需要创建一个中间件,抽象出来一个统一数据服务层,屏蔽底层的差异,来快速地访问对应数据集群;

​ 1.最后两层统一叫做数据层;2.向上使用k8s搭建不同的服务部署管理系统构成服务层,服务对外开放需要网关进行管理,所以每一个服务集群都可以配一个API网关进行管理;3.再向上使用负载均衡技术进行请求和响应的控制分发;4.再向上就是防火墙保证后端数据出入安全;5.之后就是DNS层提供域名转IP和负载均衡;6.最后一层就是用户使用的客户端/浏览器;

​ 之后加入AI就需要在各层使用新的技术;

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

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

相关文章

Cortex-M7——NVIC

Cortex-M7——NVIC 小狼http://blog.csdn.net/xiaolangyangyang 一、NVIC架构 二、中断及异常编号 三、中断屏蔽寄存器(__disable_irq和__enable_irq操作的是PRIMASK寄存器) 四、中断分组寄存器(SCB->AIRCR[10:8]) 五、NVIC寄…

常用的Linux命令,linux下文件的读、写、打开、关闭append用法

vim demoq.c打开写的.c文件 内容为 按a可以编辑页面代码。按ESC退出编辑然后按shift:wq保存文件并退出 Linux 系统中采用三位十进制数表示权限,如0755, 0644.7 124(可读、可写、可执行) 5 14(可读、不可写、可执行) …

苹果手机微信如何直接打印文件

在快节奏的工作和生活中,打印文件的需求无处不在。但你是否曾经遇到过这样的困扰:打印店价格高昂,让你望而却步?今天,我要给大家介绍一款神奇的微信小程序——琢贝云打印,让你的苹果手机微信直接变身移动打…

Docker配置Redis集群以及主从扩容与缩容

基础镜像拉取 docker run -p 6379:6379 -d redis:6.0.8 配置文件以及数据卷挂载 # 开启密码验证(可选) requirepass 1234 # 允许redis外地连接,需要注释掉绑定的IP # bind 127.0.0.1 # 关闭保护模式(可选) protected-m…

6.18云服务器大促盘点,错过一次,再等一年!

随着云计算技术的飞速发展,云服务器已成为企业和个人构建和扩展在线业务的首选平台。特别是在大型促销活动如618年中大促期间,云服务提供商纷纷推出极具吸引力的优惠,以降低用户上云的门槛。以下是对当前市场上几个主流云服务提供商的优惠活动…

德克萨斯大学奥斯汀分校自然语言处理硕士课程汉化版(第六周) - 预训练模型

预训练模型 1. 预训练模型介绍 1.1. ELMo1.2. GPT1.3. BERT 2. Seq2Seq 2.1. T52.2. BART 3. Tokenization 1. 预训练模型介绍 在预训练语言模型出现之前,统计语言模型(如N-gram模型)是主流方法。这些模型利用统计方法来预测文本中的下一个…

设计模式-外观(门面)模式(结构型)

外观模式 外观模式又称门面模式(结构型模式),它是一个可以屏蔽系统复杂性的设计模式。俗话说没有什么问题是加一层“介质”解决不了的,如果有那就在加一层。在开发过程中肯定封装过Utils类,我认为这就是一种门面模式&…

亘古真知

目录 一,概述 二,个人面板 三,科技面板 四,手牌 五,回合 1,行动 (1)打造 (2)学习 (3)归档 (4)挖掘 …

Java——数组排序和查找

一、排序介绍 1、排序的概念 排序是将多个数据按照指定的顺序进行排列的过程。 2、排序的种类 排序可以分为两大类:内部排序和外部排序。 3、内部排序和外部排序 1)内部排序 内部排序是指数据在内存中进行排序,适用于数据量较小的情况…

【SQLAlChemy】如何连接数据库?

使用SQLAlChemy连接数据库 导入包 首先,导入创建数据库引擎的包。 from sqlalchemy import create_engine编写数据库配置 SQLALCHEMY_DATABASE_URL "mysql://root:123456789127.0.0.1:3306/tortoise"字段解释: mysql::这是数…

持续警惕火灾风险:学校可燃气体报警器的定期校准检验

可燃气体报警器在学校中的安装、检验和校准对于保护师生生命安全至关重要。 接下来,佰德将探讨可燃气体报警器在学校中的必要性,以及相关实际案例和数据,为您呈现一个安全的学习环境。 一、学校安全不能掉以轻心 学校是培养未来的摇篮&…

【CS.SE】端午节特辑:Docker容器化技术详解与实战

端午节, 先祝愿大家端午安康,阖家幸福, 哈哈!这篇讲下Docker这一现代软件开发中不可或缺的技术。软件工程涉及软件开发的整个生命周期,包括需求分析、设计、构建、测试、部署和维护。Docker作为一种容器化技术,直接关联到软件部署…

云服务器CPU和内存直接被zzh恶意挖矿程序打满,如何解决?

回顾 最近在服务器上面部署网站,刚开始使用还是没问题的,当时一段时间之后发现CPU和内存总是被打满,本地没有跑大的应用,主要有mysql、nginx、redis,一度还以为是nginx 的问题,但是后来排除了。之后使用ht…

Android 11 低电量自动关机失效

Android 11 低电量自动关机 概述 安卓系统设计了低电关机功能,旨在当手机电池电量过低时自动关机,以保护手机硬件和数据安全。该功能由以下几个部分组成: 电池电量监测: 安卓系统通过 BatteryService 组件持续监测电池电量。BatteryService…

小主机折腾记24

好久不更新,最近折腾的事如下 1.10块钱自提买了个半高机箱,15086140,把之前拆机的H61m-A/M32AA/DP_MB与200w航嘉电源装了进去,额外买了半高pcie转接了个m2位,江波龙64g安装了win10专业版,最后卖了176块钱&a…

实战分析:记录一下线上OOM排查(原创)

记录背景 公司仓库系统经常反馈出现系统使用不了503的情况,自动挂掉。 启动脚本添加命令 以为是程序发生OOM导致内存溢出,添加命令,发生内存溢出输出文件 -XX:HeapDumpOnOutOfMemoryError -XX:ErrorFile./errorfile.log -XX:HeapDumpPath.…

Windows无法安装到这个硬盘空间。选定的分区上启用了BitLocker驱动器加密。请在控制面板中暂停(也称为禁用)BitLocker,然后重新开始安装。

我们安装操作系统的时候,到了选择安装分区的地方,我们选中的分区提示“无法在驱动器的分区上安装Windows”,然后我们点击显示详细信息,提示如图下所示 分析原因,可能是之前的分区未进行格式化。但是这个时候我们无法格…

【Python预处理系列】深入理解过采样技术及其Python实现

目录 一、过采样简介 二、过采样的实现方法 三、过采样和欠采样是数据增强吗 四、Python实现SMOTE过采样 (一) 生成不平衡数据集 (二) 将数据集转换为DataFrame,便于展示 (三) 应用SMOTE算法进行过采样 &…

【Centos7】CentOS 7下的PyTorch安装策略:高效实践指南

【Centos7】CentOS 7下的PyTorch安装策略:高效实践指南 大家好 我是寸铁👊 总结了一篇【Centos7】CentOS 7下的PyTorch安装策略:高效实践指南✨ 喜欢的小伙伴可以点点关注 💝 前言 由于需要跑深度学习,要用到pytorch&a…

重塑楼宇管理:智慧管控可视化开启高效新篇章

借助图扑智慧楼宇管控可视化技术,实现实时监控与智能化管理,快速响应潜在问题,确保楼宇安全、节能和高效运行。