架构演变之路

news2025/1/11 8:55:20

一)单机架构:

一)定义:应用服务和数据库服务器共用一台服务器,所有的服务被部署到一台服务器上面

蓝色的就是我们写的JAVA代码用户服务负责用户的登录和注册,商品服务用于商品的购买和交易,交易模块用于用户的下单和购买,在数据库服务里面创建了用户表,商品表和交易表

二)出现原因:出现在互联网的早期,用户访问量比较小,单服务器机器足够满足需求

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

四)单机架构的优点: 

4.1)部署简单

4.2)成本低

五)单机架构的缺点: 

5.1)用户请求量变大,会存在着严重的性能瓶颈

5.2)数据库服务和其它应用相互竞争资源

二)应用数据分离架构

一)定义:应用服务和数据库服务使用不同的的服务器,这个时候的应用服务和数据库服务不是在一台主机上进行交互的,而是需要通过网络来进行交互

注意:当用户访问到应用服务器的时候,首先由BDS服务器将用户输入的域名转化成IP地址,这个时候必须是应用服务器的IP地址而不能是数据库服务的IP地址,否则会产生安全问题

 二)出现原因:当用户访问量过大的时候,单机服务存在着严重的资源竞争例如CPU资源,内存资源,导致站点变慢

三)架构的工作原理:以电子商城为例,可以看到应用服务(划分出了多个模块)和数据库在各自的服务器上面通过网络传输完成业务运行

四)优点:成本相对可控,性能相比于单机服务是有提升的,数据库单独隔离,不会因为应用把数据库搞坏是有一定的容灾能力的

五)缺点:硬件成本变高,性能还是存在瓶颈,无法应对于海量并发 

三)应用服务器集群架构:

简介:引入例如负载均衡操作,应用以集群的方式运作

出现原因:单个应用不足以支持海量的并发请求,高并发的时候站点响应变慢

注意:用户在输入域名解析的时候,解析的是负载均衡的IP地址

架构工作原理:以电子商城为例,可以看到应用不只是一个,而是变成了多个,通过负载均衡来进行支持海量的并发

此时DNS服务器在进行域名解析的时候将一部分用户输入的域名变成IP1,此时这个HTTP请求就去寻找第一个LSV/F5,其他的请求被域名解析系统解析成IP2,此时这个HTTP请求就去寻找第二个LSV/F5;

但是此时用户的访问量进一步加大,连DNS服务器都处理不了域名的转换了,这个时候浏览器本身做缓存,这时浏览器就直接可以绕过DNS服务器直接去请求对应的LVS/F5 

优点:

1)应用服务高可用,应用满足高可用,不会因为一个服务器出问题把整个站点挂掉

2)应用服务器具备一定的高性能,如果说不访问数据库,应用处理通过扩展可以支持海量请求快速响应

3)应用服务器可以支持一定的扩展能力,支持横向扩展

缺点:

1)数据库成为性能瓶颈,应用满足高可用,不会因为一个服务器出现问题而把整个站点挂掉,但是数据库只有一个,高可用能力非常差,是无法应对数据库的海量查询

2)数据库是单节点,可用性非常差,如果数据库挂了,那么整个节点也就挂了

3)运维工作增多,扩展之后部署运维工作增多,需要开发对应的工具完成快速部署

4)硬件成本比较高

DNS做一级负载均衡,LSV做二级负载均衡,NGINX做三级负载均衡,Tomact做水平扩展

四)读写分离主从分离架构 

1)定义:将数据库读写操作分到不同的节点上面,数据库服务器搭建主从集群,一主一从或者是一主多从都可以,数据库主机负责进行写入操作,从机只是负责读取操作

2)出现原因:数据库成为瓶颈,而互联网应用一般要求读多写少,数据库承载压力比较大,主要是这些读的请求造成的,所以我们就可以把读操作和写操作分离开

 3)架构工作原理:以电子商城为例,可以看到很多数据库服务器不再是一个,而是变成了多个,数据库的主机负责进行写操作,从机负责读操作,数据库主机通过主从复制将数据从主机同步到从机

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

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

相关文章

周赛 Round#3 题解

又不能放图片,又不能写学校,你让我怎么办啊!! 系列文章目录 1.周赛 Round#1 2.周赛 Round#2 前言 这是周赛第三轮。//涉及隐私原因,博文里不放题目,要看的去http://0241:101:610:801.22222 划分字符串贪…

树状数组(一)

文章目录 前言一、树状数组简介二、树状数组的原理与相应模块三、实战演练3.1 区域和检索 - 数组可修改3.1.1 题目链接3.1.2 题目描述3.1.3 题目代码3.1.4 解题思路 3.2 数字流的秩3.2.1 题目链接3.2.2 题目描述3.2.3 题目代码3.2.4 解题思路 总结 前言 给定一段数字&#xff…

多元回归预测 | Matlab麻雀算法(SSA)优化BP神经网络回归预测,SSA-BP回归预测,多变量输入单输出模型

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元回归预测 | 麻雀算法(SSA)优化BP神经网络回归预测,SSA-BP回归预测,多变量输入单输出模型 评价指标包括:MAE、RMSE和R2等,代码质量极高,方便学习和替换数据。要求2018版本及以上。 部分源码 %-------------…

Windows10家庭版安装WSL

记录Windows10家庭版安装linux子系统WSL 查看自己的windows版本是否支持安装wsl2,cmd里输入ver查看。 系统版本:Windows 10 1903及以上版本。 系统内部版本: 18362及以上。 启用适用于Linux的windows子系统 右键命令提示符,以管…

小航编程题库2022年NOC决赛图形化(小低组)(含题库教师账号)

需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统(含题库答题软件账号)_程序猿下山的博客-CSDN博客 单选题3.0分 删除编辑 答案:C 第1题对小猫编程,程序运行后,看到的小猫最终方向是多少? A、120B…

Compose二三事:初步认识

Compose 是什么? Compose是Jetpack系列中用于构建原生Android界面的工具库,Jetpack是Google推出的一系列帮助开发者规范代码的库。简单来说就是用代码写UI,也就是声明式UI。 声明式UI和命令式UI的区别在于,声明式UI更关心做什么&…

Python系列模块之标准库re详解

感谢点赞和关注 ,每天进步一点点!加油! 目录 一、Python 正则表达式 1.1 re模块常用操作 1.2 re.match 1.3 re.search 1.4 re.findall 1.5 re.compile 函数 1.6 re.sub 检索和替换 1.7 re.split拆分 1.8 实战案例:根据文…

多看一眼多进步,python入门到放弃

python相关工具都安装完成后,就可以开始学习了,以下在pycharm中,以下学习内容来自b站边学习边整理的笔记,好记性不如赖笔头,多总结多记录,总是不错的 print()函数的使用 print函数可以输出哪些内容 &…

华为OD机试真题 Java 实现【优雅数组】【2023Q1 200分】

一、题目描述 如果一个数组中出现次数最多的元素出现大于等于k次,被称为k-优雅数组,k也可以被称为优雅阈值。 例如,数组[1, 2, 3, 1, 2, 3, 1],它是一个3-优雅数组,因为元素1出现次数大于等于3次,数组[1,…

华为OD机试真题 Java 实现【取出尽量少的球】【2023Q1 200分】

一、题目描述 某部门开展 Family Day 开放日活动,其中有个从桶里取球的游戏。 游戏规则如下: 有 N 个容量一样的小桶等距排开,且每个小桶都默认装了数量不等的小球,每个小桶装的小球数量记录在数组 bucketBallNums 中。 游戏开…

eu.org申请免费域名 免费域名申请教程

EU.org是由Paul Mockapetris在1996年创建的免费域名服务,给没有资金买域名的个人或公司提供永久免费的域名。虽然是二级域名,但是已经被一些网络公司(当然是国外的)认定为顶级域名。 优缺点 优点:稳定性高、几乎没有…

04.Python Dash网页开发:ubuntu服务器部署DASH网站(uWSGI+nginx)

<~生~信~交~流~与~合~作~请~关~注~公~众~号生信探索> Dash官网只有付费的部署方式❌ 我的简单理解&#xff0c;uWSGI去运行dash app并且与nginx通讯&#xff1b;nginx处理浏览器传来的请求并把需求给uWSGI Python enviroment mkdir bioquestvi ~/bioquest/dash.yamlmicro…

docker搭建简单elk日志系统6(kibana设置)

1.进入kibana的索引管理界面清理调之前生成的测试数据流 2.模拟dev、uat、prod三个环境产生日志 修改filebeat配置文件&#xff0c;重启filebeat fields: application: testenv: devlog_type: normalfilebeat -c .\filebeat-test.yml产生日志 查看kibana数据流(已经生成dev环…

C++11 -- 类的新功能

文章目录 类的新功能默认成员函数类成员变量初始化强制生成默认函数的关键字default禁止生成默认函数的关键字delete继承和多态中的final和override关键字 类的新功能 默认成员函数 原来在C类中,有6个默认成员函数: 1: 构造函数 2: 拷贝构造函数 3: 拷贝赋值重载 4: 析构函数…

mysql 索引有哪几种?主键索引、唯一索引

面试题&#xff1a;mysql索引有哪几种&#xff1f; 答&#xff1a; 索引有两类&#xff0c;一是单列索引&#xff0c;二是组合索引。 单列索引&#xff0c;即一个索引只包含单个列&#xff0c;一个表可以有多个单列索引&#xff0c;但这不是组合索引。组合索引&#xff0c;即一…

SQL查询语言(3) 聚集查询和窗口函数的概念

查询结果排序 排序 规则如下: 1.语句: SELECT A1,A2.... FROM 表名 WHERE 选择条件 order by 属性1(ASC升序),属性3(DESC降序); 如果没有说明默认是升序排列: 2.对于空值的处理 如果是升序排列 NULL放在最后一行&#xff0c;如果是降序则放在第一行 上图为 按升序排列查询…

MyBatis动态SQL,基本语法加实战,一篇搞懂

问题&#xff1a; 有的时候我们需要实现批量删除&#xff1a;delete from t_car where id in(1,2,3,4,5,6,…这⾥的值是动态的&#xff0c;根据⽤户选择的 id不同&#xff0c;值是不同的); 多条件查询:有时我们需要根据多个不同地条件来进行查询&#xff0c;比如&#xff1a;se…

数据集成平台之kettle优缺点分析

数据集成平台前言 数据在业务中发挥着重要的作用&#xff0c;但并非所有数据都具有相同的价值和影响力。事实上&#xff0c;大部分数据业务的核心价值主要来自其中的少部分关键数据。这些关键数据可能包含着重要的业务指标、关键客户信息、市场趋势数据等&#xff0c;它们直接…

【机器学习】之Anaconda中使用的命令

操作之前&#xff0c;点击上图入口&#xff0c;进入Prompt。 //示例是在base环境下&#xff0c;cls清屏 (base) C:\Users\bubusa>cls1、base环境下的操作 //&#xff08;1&#xff09;列出所有虚拟环境 (base) C:\Users\bubusa>conda env list # conda environments: #…

Radeon Vii 系统分析 001记——工具

0. 简介 为了对 vega 7nm 有更感性的编程使用体验&#xff0c;故对 vega 7nm做各种测试&#xff1b; 工具&#xff1a; CLRadeonExtender ubuntu ROCm 资料&#xff1a; &#xff08;1&#xff09; 一张安装了 Radeon Vii vega 7nm 的台式机&#xff0c;win10 或 ubunt…