技术架构 - 应用数据分离,应用服务集群架构
前言
上一篇文章介绍了单机架构,由于性能瓶颈,满足不了高访问量,所以演化出了数据分离架构。
这种架构也很简单只是将应用服务和数据库服务分离开来,避免单一架构的资源争夺的情况。
一、 应用数据分离架构
1. 简介
应用服务和数据库服务使用两台服务器进行分别部署,应用服务就是对外提供服务的,数据库服务就是用来存储数据的。
2. 出现原因
单机架构存在严重的资源竞争,导致网站访问速度变慢。
3. 架构工作原理
以电子商城网站为例,用户访问淘宝网站,开始还是先访问 DNS 服务器,之后拿到 淘宝服务器的 IP 之后就去请求这个服务器的资源,此时的应用服务和数据库服务两台服务器是通过网络进行通信的,所以在请求商品信息的时候还是访问服务层,服务层再去查询数据库,只是这个操作是经过网络来完成交付的,和单一架构就这一点有区别。
4. 架构优缺点
优点:1. 成本比单机架构高一点,但是相对来说是可控的(原来部署一台服务器,现在部署两 台服务器)
2. 性能比单机架构提升了一点。
3. 数据库是单独存在的,如果如果应用层出现了一个 bug,这个 bug 会导致数据库的数 据损坏,此时不会因为这个 bug 而弄丢数据库的数据。具有一定的容灾能力。
缺点:1. 仍然不支持高并发、高访问量的场景,就算是部署两台服务器,性能也只是提高了一 点,如果是大量的并发请求,应用数据分离架构还是难以支持的。
2. 硬件成本增高,原来部署一台服务器,现在部署两台。

二、 应用服务集群架构
1. 简介
加入了负载均衡技术,应用是以多个服务器的方式(集群)运行,通过负载均衡技术避免单一节点(服务器)负载过大,达到资源利用的最优解。
2. 出现原因
上述的架构仍然不满足海量的并发请求,通过 负载均衡 + 集群 的方式来处理高并发。
3. 架构工作原理
以电子商城为例,如下图所示:用户在访问服务器时,先通过负载均衡技术将请求发送给对应的服务器节点,负载均衡再根据分配策略将请求发送给合适的服务器,然后再去查询商品,数据库和应用之间还是以网络的方式进行通信,之后服务层把拿到的数据返回给用户(这里负载均衡有两种模式,一种是返回的流量经过负载均衡,一种是流量不经过负载均衡)
4. 架构优缺点
优点:1. 高可用:一个服务器节点挂了之后其他的还可以继续工作。
2. 高性能:因为和数据库通信时经过网络的,需要一定的时间成本,所以如果不是和访 问数据库相关的操作,性能是很高的,而且集群中计算节点很多,所以支持 高并发的请求。
3. 支持横向扩展:如果这个集群中的节点不够用了,可以继续增加服务器节点来保证上 述优点。
缺点:1. 服务器是集群,但是数据库是单点,所以数据库的性能是有限的.
2. 硬件成本高。
3. 运维部署成本高,服务器节点增多,之后就需要快速部署,需要开发工具开发更快 捷。


相关文章:
技术架构 - 应用数据分离,应用服务集群架构
前言 上一篇文章介绍了单机架构,由于性能瓶颈,满足不了高访问量,所以演化出了数据分离架构。 这种架构也很简单只是将应用服务和数据库服务分离开来,避免单一架构的资源争夺的情况。 一、 应用数据分离架构 1. 简介 应用服务和…...
YOLO目标检测——树叶检测数据集下载分享【含对应voc、coco和yolo三种格式标签】
实际项目应用:生物多样性研究、林业管理、环境监测和教育科研等方面数据集说明:树叶分类检测数据,真实场景的高质量图片数据,数据场景丰富,总共十个类别。标签说明:使用lableimg标注软件标注,标…...
ubuntu 20通过docker安装onlyoffice,并配置https访问
目录 一、安装docker (一)更新包列表和安装依赖项 (二)添加Docker的官方GPG密钥 (三)添加Docker存储库 (四)安装Docker (五)启动Docker服务并设置它随系…...
Vue 模板语法 v-bind
红色框里面的都是vue的模板。有了模板就得有模板的特殊语法。上面只是简单的双括号加上表达式,这种叫做插值语法,除了这种语法还有其他语法吗? 插值语法实现的功能很单一,就是将指定的值放到指定的位置。还有一种叫做指令语法&am…...
定义宏,字符串、枚举、接口类绑定
在项目中,有一些接口处理类,比如 "value1"对应的类处理使用class Cvalue1 "value2"对应的类处理使用class Cvalue2 使用 X-Macros 技术能够很大程度上帮助我们,减少代码量并且使得代码简洁。 如果我们需要对每一个字…...
盘点30个Python树莓派源码Python爱好者不容错过
盘点30个Python树莓派源码Python爱好者不容错过 学习知识费力气,收集整理更不易。 知识付费甚欢喜,为咱码农谋福利。 链接:https://pan.baidu.com/s/1LA4cLunntKW3qO5aok3xAQ?pwd8888 提取码:8888 项目名称 PiCar-raspber…...
「Verilog学习笔记」用优先编码器①实现键盘编码电路
专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网 分析 用此编码器实现键盘的编码电路。 注意:编码器的输出是低电平有效,而键盘编码电路输出的是正常的8421BCD码,是高电平有效。因此将编…...
APT攻击的特点及含义
APT(高级持续性威胁Advanced Persistent Threat)攻击是一种高级、持续性的攻击模式,通过先进的攻击手段对特定目标进行长期持续性的网络攻击,一般针对拥有敏感数据的大型企业及重要机构。 APT攻击的特点 一、目标性强 APT攻击并…...
使用html2canvas插件进行页面截屏
使用纯html实现过程 <!DOCTYPE html> <html><head><title>使用html2canvas生成网页截图</title><script src"https://html2canvas.hertzen.com/dist/html2canvas.min.js"></script> </head><body><h1>…...
Java --- JVM的执行引擎
目录 一、执行引擎概述 1.1、执行引擎的工作过程 二、Java代码编译和执行的过程 三、解释器 3.1、解释器工作机制 3.2、解释器分类 3.3、解释器现状 四、JIT编译器 五、热点代码及探测方式 六、方法调用计数器 6.1、热点衰减 七、回边计数器 八、HotSpot VM设置程序…...
前端学习笔记--node.js
Node Node 可以理解成 ECMAScript 内置的模块组成的,引用第三方模块, npm系统 node package manager。 node是基于js的,前端来写服务端通过node是最方便的,node的性能问题 内部采用的多线程。 node中主线程还是单线程的 &#…...
DB2 常用命令及SQL语句
前言 DB2数据库是由IBM开发的关系型数据库管理系统(RDBMS)。它是一种功能强大、可扩展和可靠的数据库解决方案,用于存储和管理企业级应用程序的数据。 以下是一些关于DB2数据库的重要信息和特点: 数据模型:DB2数据库…...
spring-boot-starter-data-redis2.X连接redis7
由于redis7引入了acl机制,可以配置用户权限, 比如配置了一个普通用户 test,权限为 test_ 前缀的key可操作 springboot想要连接,并没有设置用户名的地方, 跟了源码,jedis客户端是支持的,但是s…...
PHP中$_SERVER全局变量
在PHP中,$_SERVER 是一个全局数组变量,它包含了有关服务器和当前脚本的信息。$_SERVER 数组中的每个元素都是服务器环境的一个参数,如请求的方法、请求的 URI、客户端 IP 地址等。 PATH 系统环境变量的值,包含了多个目录的路径…...
【ML】欠拟合和过拟合的一些判别和优化方法(吴恩达机器学习笔记)
吴恩达老师的机器学习教程笔记 减少误差的一些方法 获得更多的训练实例——解决高方差尝试减少特征的数量——解决高方差尝试获得更多的特征——解决高偏差尝试增加多项式特征——解决高偏差尝试减少正则化程度 λ——解决高偏差尝试增加正则化程度 λ——解决高方差 什么是…...
服务器数据恢复—服务器发生故障导致数据丢失如何恢复服务器数据?
服务器常见故障: 硬件故障:磁盘、板卡、电源故障等。 软件故障:操作系统崩溃、程序运行错误等。 入侵破坏:加密、删除服务数据等。 不可控力:浸水、火烧、倒塌等。 误操作:格式化、删除、覆盖等。 如何减少…...
SLAM中提到的相机位姿到底指什么?
不小心又绕进去了,所以掰一下。 以我个人最直观的理解,假设无旋转,相机在世界坐标系的(5,0,0)^T的位置上,所谓“位姿”,应该反映相机的位置,所以相机位姿应该如下: Eigen::Matrix4d T Eigen::M…...
《视觉SLAM十四讲》-- 后端 1(上)
文章目录 08 后端 18.1 概述8.1.1 状态估计的概率解释8.1.2 线性系统和卡尔曼滤波(KF)8.1.3 非线性系统和扩展卡尔曼滤波(EKF)8.1.4 小结 08 后端 1 前端视觉里程计可以给出一个短时间内的轨迹和地图,但由于不可避免的…...
南昌市西湖区棒球特色规划
西湖区棒球特色学校打造方案 一、项目背景 南昌市西湖区作为江西省的教育强区,一直致力于发展特色教育。近年来,棒球运动逐渐受到广泛关注,西湖区决定将棒球运动作为特色项目,打造一所具有国际水平的棒球特色学校。 二、目标与…...
nginx启动命令
普通启动 切换到nginx安装目录的sbin目录下,执行:./nginx 通过配置文件启动 ./nginx -c /usr/local/nginx/conf/nginx.conf /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 其中-c是指定配置文件,而且配置文件路径必须指定绝对路…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...
佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...
HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...
JVM虚拟机:内存结构、垃圾回收、性能优化
1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...
