(一)单机架构、应用数据分离架构、应用服务集群架构
文章目录
- 明确为什么要学习架构的演进
- 单机架构
- 什么是单机架构
- 单机架构的模型
- 单机架构的优缺点
- 优点
- 缺点
- 单机架构的技术案例
- 应用数据分离架构
- 什么是应用数据分离架构
- 架构模型
- 应用数据分离架构的优缺点
- 优点
- 缺点
- 技术案例
- 应用服务集群架构
- 什么是应用服务集群架构
- 架构模型
- 应用服务集群架构优缺点
- 优点
- 缺点
- 技术案例
明确为什么要学习架构的演进
- 了解技术处于什么位置
- 对分布式系统有一个大概的了解
架构的演进流程: 单机架构、应用数据分离架构、应用集群架构、主从分离架构、冷热分离架构(redis)、垂直拆分架构(更进一步的分布式数据库)、微服务架构、容器编排架构(docker);
单机架构
什么是单机架构
单机架构就是一个服务器内部同时运行应用服务和数据库服务。 主要出现在计算机早期的系统设计。
单机架构的模型
单机架构的优缺点
优点
- 单机架构的优点是部署简单、成本低。
- 没有网络延迟, 处理少量请求效率高。
缺点
- 并发量增大, 资源竞争容易导致性能瓶颈
- 系统的扩展性比较差。
- 系统解耦性高, 发生故障会产生连锁反应
单机架构的技术案例
java中的tomcat, 就可以看作一个应用服务的软件; MySQL就可以看错数据库服务的软件。 然后这两个服务在同一个服务器中对外提供服务, 就叫做单机架构。
- 用户向浏览器/APP发起一个请求。
- 浏览器请求中的域名去dns进行域名解析, 得到目标服务器的目的IP。
- 浏览器根据IP找到目标服务器。 找到提供服务的应用。
- 应用根据请求中的要求直接从MySQL中insert数据或者check数据, 无需网络传输。
- 完成服务进行返回。用户得到反馈。
应用数据分离架构
什么是应用数据分离架构
应用数据分离架构是将应用服务和数据库分离开来, 两个服务分别部署于不同的服务器。 两种服务专注于自己的服务。
架构模型
应用数据分离架构的优缺点
优点
- 应用服务与存储服务进行分离,让两者可以独立设计。
- 提高了系统的扩展性, 使应用服务和数据库都可以进行横向扩展。
- 应用与存储独立使用自己的cpu资源, 避免了两种服务之间的资源竞争。
缺点
-
提高了系统的成本, 提高运维成本。
-
应用服务与数据库服务之间数据的传输效率变为网络传输, 延迟增加。
-
当并发量和数据量进一步提升, 应用服务器可能存在瓶颈。
技术案例
原本的单机架构应用程序直接从数据库中读取数据, 是在一台服务器中读取, 也就是在内存中的读取。 应用数据分离架构变成了应用服务和数据库服务通过网络进行通信。
应用服务集群架构
什么是应用服务集群架构
将应用服务横向扩展——添加多台应用服务器分担并发请求。通过一台负载均衡器接收所有并发请求, 然后通过算法将请求分发给多台服务器。
- 当请求的并发量提升, 提升到一台应用服务器已经承受不住了, 那么可以添加多台应用服务器分担这些并发请求。
- 但是只添加应用服务器如何分配这些并发请求就成了问题, 所以需要在上层布置一台负载均衡服务器接收所有的并发请求, 然后比较均匀的分发给下层的应用服务器。——这个负载均衡服务器要能承受所有的并发请求。
- 这么做后, 理论上, 应用服务器不够用, 添加应用服务器。 负载均衡服务器不够用, 再在负载均衡器上面布置处理并发能力更强的负载均衡服务器, 那么应用服务器就不会再称为瓶颈。
架构模型
应用服务集群架构优缺点
优点
- 应用服务器不再成为瓶颈。
- 应用服务器部署更加灵活,可以根据阶段用户请求的并发量部署应用服务器。
- 多冗余, 系统可用性增强, 单个应用服务器崩溃,不影响其他节点的使用, 少影响整个业务的运行。
缺点
- 硬件成本增加, 系统的复杂度提升, 运维的成本增加
- 需要增加服务器之间数据同步机制。
- 当并发请求很多, 数据库服务器可能称为瓶颈。
技术案例
当一台应用服务器不够用, 添加多台服务器, 并使用Nginx来作为负载均衡器。但是负载均衡器也有并发上限:
- Nginx的并发量为50000左右, 如果超过了, 就只能多家几台Nginx, 并且再上加一层负载均衡器, 可以用LVS。
- LVS的并发量百万级别, 如果超过了, 只能多增加几台LVS, 并且再往上加一层负载均衡器, 可以使用F5.
- F5是硬件设备, 价格高, 并发量是千万级别, 如果超过了, 就要使用dns了, dns不仅仅是域名转换服务, 也可以作为全局的负载均衡器。
相关文章:

(一)单机架构、应用数据分离架构、应用服务集群架构
文章目录 明确为什么要学习架构的演进单机架构什么是单机架构单机架构的模型单机架构的优缺点优点缺点 单机架构的技术案例 应用数据分离架构什么是应用数据分离架构架构模型应用数据分离架构的优缺点优点缺点 技术案例 应用服务集群架构什么是应用服务集群架构架构模型应用服务…...

Python数据分析案例72——基于股吧评论数据的情感分析和主题建模(LDA)
背景 好久没更新了,最近忙其他去了。最近股市波动太大,看了不少新闻的评论。抽空写了个股吧评论数据的LDA建模和情感分析,简单写到博客上来更新一下。 数据来源 上证指数(000001)股吧_上证指数怎么样_分析讨论社区— 数据来源上述网站的东…...
Git分支管理方案
成都众望智慧有限公司Git分支管理方案 采用 轻量级Git Flow 敏捷版本控制策略,在保证稳定性的同时提升开发效率。以下是优化后的方案: 1. 精简分支模型(相比6-8人团队减少分支层级) 分支类型作用生命周期devops生产环境代码&am…...

力扣-160.相交链表
题目描述 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意,函数返…...
c语言中float和double 类型的区别
在 C 语言里,float和double都用于表示浮点数,不过二者在多个方面存在差异,下面为你详细介绍: 1. 存储空间大小 在 C 语言中,数据类型所占用的存储空间大小通常与编译器和系统架构有关,但一般来说…...

【C++】特殊类的设计、单例模式以及Cpp类型转换
📚 博主的专栏 🐧 Linux | 🖥️ C | 📊 数据结构 | 💡C 算法 | 🅒 C 语言 | 🌐 计算机网络 上篇文章: C 智能指针使用,以及shared_ptr编写 下篇文章ÿ…...

050_基于springboot的音乐网站
一、系统架构 前端:vue | element-ui | html | jquery | css | ajax 后端:springboot | mybatis 环境:jdk1.8 | mysql | maven | nodejs | idea 二、代码及数据 三、功能介绍 01. web端-注册 02. web端-登录 03. web…...
全局变量Msg.sender
msg.sender 在 Solidity 中,有一些全局变量可以被所有函数调用。 其中一个就是 msg.sender,它指的是当前调用者(或智能合约)的 address。 注意:在 Solidity 中,功能执行始终需要从外部调用者开始。 一个合…...

【论文阅读】平滑量化:对大型语言模型进行准确高效的训练后量化
论文题目:SmoothQuant: Accurate and Efficient Post-Training Quantization for Large Language Models 论文地址:[2211.10438] SmoothQuant: Accurate and Efficient Post-Training Quantization for Large Language Models 代码地址:http…...

【资料推荐】LVDS Owner’s Manual
一份年代有些久远的技术资料,但是内容全面且经典! 本用户手册提供了很多有用的信息,首先简要概述了三种最常见的高速接口技术:LVDS(包括B-LVDS和M-LVDS)、CML和LVPECL,并对其相应的特性进行了分…...

ARM Cortex-M (STM32)如何调试HardFault
目录 步骤 1: 实现一个有效的 HardFault 处理程序 步骤 2: 复现 HardFault 并使用调试器分析 步骤 3: 解读故障信息 步骤 4: 定位并修复源代码 HardFault 是 ARM Cortex-M 处理器中的一种异常。当处理器遇到无法处理的错误,或者配置为处理特定类型错误ÿ…...

黑马 redis面试篇笔记
redis主从 version: "3.2"services:r1:image: rediscontainer_name: r1network_mode: "host"entrypoint: ["redis-server", "--port", "7001"]r2:image: rediscontainer_name: r2network_mode: "host"entrypoint:…...
Docker端口映射与容器间DNS发现:打通服务通信的任督二脉
Docker端口映射与容器间DNS发现:打通服务通信的任督二脉 一、端口映射深度解析1.1 端口映射核心机制映射规则语法: 1.2 高级映射技巧批量端口映射:查看端口绑定状态: 二、容器间服务发现机制2.1 自定义网络DNS体系DNS解析特性&…...

DBdriver使用taos数据库
首先创建连接 连接后比如数据库里有三个库 选择其中的hypon 选中localhost,右键sql编辑器,打开sql控制台 就插入了一条数据...

观成科技:摩诃草组织Spyder下载器流量特征分析
一、概述 自2023年以来,摩诃草组织频繁使用Spyder下载器下载远控木马,例如Remcos。观成安全研究团队对近几年的Spyder样本进行了深入研究,发现不同版本的样本在数据加密、流量模式等方面存在差异。基于此,我们对多个版本样本的通…...

AIGC实战之如何构建出更好的大模型RAG系统
一、RAG 系统核心架构解析 1. 检索模块深度优化 1.1 混合检索技术实现 技术原理:结合稀疏检索(BM25)与密集检索(DPR),通过动态权重分配提升检索精度。例如,在医疗领域,BM25 负责精…...

C++入门小馆: 深入了解STLlist
嘿,各位技术潮人!好久不见甚是想念。生活就像一场奇妙冒险,而编程就是那把超酷的万能钥匙。此刻,阳光洒在键盘上,灵感在指尖跳跃,让我们抛开一切束缚,给平淡日子加点料,注入满满的pa…...
【Git】Fork和并请求
当你在 GitHub 或其他代码托管平台上 Fork 了一个项目后,你可以基于你的 Fork 进行开发,并通过 Pull Request(PR) 的方式将你的更改提交给原始项目(也称为上游仓库)。以下是完整的流程和步骤: 1…...

小白学习java第15天:JDBC
1.数据库驱动 想一下我们之前是怎么操作数据库,是不是使用SQL语句对其mysql数据库管理系统,然后管理系统在进行数据库(硬盘文件里面的)进行操作。那么我现在想使用应用程序对其数据库进行操作,应该怎么办呢࿱…...

大模型应用开发(PAFR)
Prompt问答 特征:利用大模型推理能力完成应用的核心功能 应用场景: 文本摘要分析 舆情分析 坐席检查 AI对话 AgentFunction Calling 特征:将应用端业务能力与AI大模型推理能力结合,简化复杂业务功能开发 应用场景: 旅行指南 数据…...
Go 剥离 HTML 标签的三把「瑞士军刀」——从正则到 Bluemonday
1 为什么要「剥皮」? 安全:去掉潜在的 <script onload…> 等恶意标签,防止存储型 XSS。可读性:日志、消息队列、搜索索引里往往只需要纯文本。一致性:不同富文本编辑器生成的 HTML 五花八门,统一成「…...

U-Mail邮件加速服务:全球链路加速,安全稳定收发
由于跨国网络拥堵、带宽不稳定等因素,导致海外用户在使用企业邮箱收发邮件时,经常出现邮件收发不畅的问题。针对这种情况,U-Mail正式推出了邮件加速服务,U-Mail邮件加速服务依托全球优质加速链路和转发集群服务器,为海…...
实战交易策略 篇十七:翻倍黑马交易策略
文章目录 系列文章设置指标判断大盘买入的条件判断大盘卖出的条件精选个股,挖掘明天能上涨的黑马熊市选股牛市选股短线最佳买点短线最佳卖点“翻倍”的核心秘籍系列文章 实战交易策略 篇一:奥利弗瓦莱士短线交易策略 实战交易策略 篇二:杰西利弗莫尔股票大作手操盘术策略 实…...
反爬策略应对指南:淘宝 API 商品数据采集的 IP 代理与请求伪装技术
一、引言 在电商数据驱动决策的时代,淘宝平台海量的商品数据极具价值。然而,淘宝为保障平台安全和用户体验,构建了严密的反爬体系。当采集淘宝 API 商品数据时,若不采取有效措施,频繁的请求极易触发反爬机制&#x…...

论文精读:大规模MIMO波束选择问题的量子计算解决方案
论文精读:大规模MIMO波束选择问题的量子计算解决方案 概要: 随着大规模多输入多输出系统(MIMO)在5G及未来通信技术中的应用,波束选择问题(MBS)成为提升系统性能的关键。传统的波束选择方法面临计…...
精益数据分析(13/126):洞察数据关系,灵活调整创业方向
精益数据分析(13/126):洞察数据关系,灵活调整创业方向 大家好!在创业和数据分析的探索之路上,每一次的学习都是成长的宝贵机会。今天,咱们接着深入学习《精益数据分析》,一起探索相…...

uniapp-商城-37-shop 购物车 选好了 进行订单确认3 支付栏
支付栏 就是前面用的 car-Layout 在shop也用来这个组件 只是在那里用来的是购物车。 1、 样式 我们开始进入这个页面是点击的shop的购物篮 到这里就变成了支付栏 其实他们是同一个组件 只是做了样式区分 2、具体看看样式和代码 2.1 消失了购物车和改变了按钮名字 如何…...

【LLM+Code】Claude Code Agent 0.2.9 版本PromptTools最细致解读
一、Claude Code 是anthropic团队开发的一个code agent bash工具 具体使用文档:https://docs.anthropic.com/en/docs/agents-and-tools/claude-code/overview 1.1 安装/使用Claude Code 自行安装 npm install -g anthropic-ai/claude-code cd your-project-dire…...

ISCTF2024-misc(部分)
前言 之前写的,一直没发,留个记录吧,万一哪天记录掉了起码在csdn有个念想 1.少女的秘密花园 打开是个图片 随波逐流binwalk一下分离得到一个zip,解压得到base_misc发现是zip 爆破得到密码 解压得到一个txt,将里面的…...

U8G2在PC端模拟(C语言版本)
前提: 电脑已经准备好mingw编译器环境,已经加入环境变量. 测试方法: window下打开cmd,输入gcc -v 会有信息打印. u8g2 u8g2官方支持sdl2接口,已经做好了适配. 所以只需要在使用的开发环境配置好SDL2路径即可. sdl2和u8g2的适配…...