当前位置: 首页 > news >正文

分布式与微服务详解

1. 单机架构

只有一台机器,这个机器负责所有的工作

(这里假定一个电商网站)

现在大部分公司的产品都是单机架构 。

2. 分布式架构

一台机器的硬件资源是有限的,服务器处理请求是需要占用硬件资源的,如果业务增长,用户量和数据量变多,一台机器可能会出现难以应对的情况,要解决这种情况要么优化软件,找到性能平均做优化,要么就引入更多的硬件资源,也就是加机器,引入多个主机的系统就称为分布式系统。

2.1 应用服务与数据库服务分离

应用服务器需要处理很多的业务请求,那么就更需要CPU和内存资源,数据库服务器则更侧重硬盘的大小和读写速度,由此就可以更具用途来定制机器达到更高的性价比。

2.2 引入更多的应用服务器

如果请求数量过多,那么应用服务器可能还是会撑不住,此时可以引入更多的应用服务器来处理请求:

这里还引入了负载均衡来根据服务器的负载清理来分发请求:

负载均衡算法一般单独运行在一个服务器上用于接收请求并分发给应用服务器。

注意:负载均衡只负责请求的分配并不会处理请求所以资源消耗是比较小的,不用过于担心性能问题。如果请求真的多到负载均衡器压力过大也可以引入多个负载均衡器。

2.3 读写分离

在上面的情况里,如果请求数增多了,那么通常对数据库的操作也会更频繁,就可能导致数据库服务器成为性能瓶颈。

在实际的应用场景下,读的频率是要比写的频率高得多的, 于是可以引入多个数据库服务器,一个主数据库,用于处理写操作,多个从数据库用于处理读操作(这里也可以通过负载均衡的方式管理从数据库的访问),从数据库会在合适的时机再去同步主数据库中的数据:

2.4 引入缓存

由于数据库是把数据放在硬盘中,所以对数据库的操作都是较慢的。但在实际情况中,并不是所有的数据都会被频繁的访问,一小部分的热点数据,通常可以支持大多数请求,所有可以引入一个缓存服务器,把一些访问频繁的数据放在缓存中,就可以大大提高平均响应速度(可以使用Redis)

2.5 分库分表 

用户量过多也会导致数据量过大,大到一个服务器存不下,就可以通过对数据库进行拆分,通过多个主机来存储:

这里的存储集群即上面的主从数据库服务器共同组成 ,每个集群包含了对应表的主数据库服务器和从数据库服务器。

如果某个表特别大,也可以对表进行拆分。不过具体的分库分表要根据实际的业务来决定。

3. 微服务架构

在上面的架构模式中,关于用户信息的请求,商品的请求,订单的请求,都是由同一种服务器做的,随着业务需求增多,代码会变得越来越复杂,为了更方便代码的维护,就可以把这样一种复杂的服务程序拆分为多个功能不同的服务器,这种架构就叫做微服务:

引入微服务可以更方便的组织人员对代码进行管理,以及功能的复用, 但是确大大提高了系统的复杂程度,也就更容易引发问题,同时系统之间依赖网络通信,可能会造成性能下降。

相关文章:

分布式与微服务详解

1. 单机架构 只有一台机器,这个机器负责所有的工作 (这里假定一个电商网站) 现在大部分公司的产品都是单机架构 。 2. 分布式架构 一台机器的硬件资源是有限的,服务器处理请求是需要占用硬件资源的,如果业务增长&a…...

Vue设置滚动条自动保持到最底端

需求描述:在开发中我们常常会遇到需要让滚动条保持到最底端的需求,比如在开发一个聊天框时,请求接口拿到消息列表数据,展示到前端页面时,需要让滚动条自动滚到最底端,以此来展示最后的聊天记录。同时&#…...

uniapp创建一个新项目并导入uview-plus框架

近年来,随着技术的发展,人们越来越意识到跨平台和统一的重要性。对于同一款应用来说,一般都会有移动端、PC端、甚至小程序端。这是由于设备的不同,我们必须要做很多的客户端来满足不同的用户需求。但是由于硬件设施的不同&#xf…...

LabVIEW光电在线测振系统

开发了一种基于LabVIEW软件和光电技术的在线测振系统。该系统利用激光作为调制光源,并通过位置敏感型光电传感器(PSD)进行轴振动的实时检测。其主要特点包括非接触式测量、广泛的测量范围、高灵敏度和快速响应时间,且具备优良的抗…...

分布式光伏电站 转化能源 丰富用电结构

分布式光伏系统是一种利用分散式的可再生能源,在靠近用户端的地方安装光伏发电设施,通过光伏效应将太阳能转化为直流电能,并通过逆变器将其转换为交流电,以供用户使用的系统。以下是对分布式光伏系统的详细阐述: 一、…...

环境配置:如何在IntelliJ IDEA中安装和修改JDK版本配置(以Windows为例)

环境配置:如何在IntelliJ IDEA中安装和修改JDK版本配置(以Windows为例) 为了在Java开发中使用最新的功能和优化,升级和配置JDK版本是必不可少的。本文将详细介绍如何下载、安装、配置最新的JDK版本,并在IntelliJ IDEA…...

Spring AOP 原理——代理模式

目录 一、代理模式 1.1 静态代理 1.2 动态代理 1.2.1 JDK动态代理 1.2.2 CGLIB动态代理 Spring AOP 是基于动态代理来实现AOP的。 一、代理模式 代理模式, 也叫委托模式。该模式是为其他对象提供⼀种代理以控制对这个对象的访问。它的作用就是通过提供一个代理类&#…...

leetcode 234.回文链表

思路:其实就是判断反转链表是不是和原链表一样的问题。 我们可以借助反转链表的思路,首先我们先把链表的全部元素正向存储,然后再把链表进行反转。 之后我们再遍历反转之后的链表结点元素是不是和刚刚存储数组里面的元素一致就可以了。一旦…...

AD中Split Planes 的作用和功能

在 Altium Designer (AD) 中,Split Planes 功能允许你在一个平面层(例如电源层或地层)上分割出多个不同的区域,每个区域可以分配给不同的网络(net)。这对于设计中需要管理多种电源或接地类型的情况下非常有…...

[linux][命令]linux文件操作命令大全

Linux操作系统提供了丰富的文件操作命令,以下是一些常用的文件操作命令列表: 查看文件内容 cat:查看文件内容。less:分页显示文件内容。more:分页显示文件内容,一次显示一屏。head:查看文件的前…...

大语言模型 (LLM) 窥探未来

初始的探索 在NLP领域,早期的模型如 LSTM 和 GRU 在处理序列数据时取得了一定的成功。但随着数据量和复杂性的增加,这些模型开始显得力不从心。 Transformer的诞生 Transformer 模型的提出,它通过自注意力(Self-Attention&…...

WPF DataGrid调试错误总结

最近WPF中使用了DataGrid做了表格,框架版本为472,遇到了不少的问题,因为软件添加了一个退出进程的全局错误捕获,因此不得不解决所有问题,这边总结一下DataGrid的问题 EditItem is not allowed for this view 按字面意…...

【GCC】结合GPT4 延迟梯度学习1:公式推导及理论分析

大神的分析 本文主要借鉴。【TWCC 】基于gpt和python简化分析webrtc拥塞控制论文: Analysis and Design of the Google Congestion Contro for Web Real-time Communication (WebRTC)感觉应该学习好理论后再进行python 分析:【gcc】基于gpt和python的流程和延迟梯度分析另外:…...

【Linux】【网络】进程间关系与守护进程

进程间关系与守护进程 文章目录 1.进程组1.1什么是进程组1.2组长进程 2.会话2.1什么是会话2.2如何创建会话 3.作业3.1什么是作业、作业控制?3.2作业号3.3常见作业状态3.4作业的切换 4.守护进程4.1什么是守护进程?4.2如何创建守护进程4.3模拟实现daemon …...

红黑树的插入与删除

文章目录 红黑树概念红黑树的性质: 红黑树的插入操作情况一情况二情况三 小总结红黑树的验证红黑树的删除一.删除单孩子节点1. 删除节点颜色为黑色2. 删除颜色为红色 二. 删除叶子节点1. 删除节点为红色2.删除节点为黑色2.1兄弟节点为黑色,有孩子节点&am…...

联通数科如何基于Apache DolphinScheduler构建DataOps一体化能力平台

各位小伙伴晚上好,我是联通数字科技有限公司数据智能事业部的王兴杰。 今天,我将和大家聊一聊联通数字科技有限公司是如何基于Apache DolphinScheduler构建DataOps一体化能力平台的。 今天的分享主要分为三个部分: 关于DataOps的一些思考&a…...

Python知识点:如何使用Mitmproxy进行HTTP/HTTPS流量分析

Mitmproxy 是一个强大的中间人代理工具,可以用来分析和修改 HTTP 和 HTTPS 流量。以下是如何使用 Mitmproxy 进行 HTTP/HTTPS 流量分析的步骤: 安装 Mitmproxy 首先,你需要在系统上安装 Mitmproxy。可以通过以下方式安装: 使用 …...

06:【stm32】OLED模块的简单使用

OLED模块的简单使用 OLED简单的使用 OLED简单的使用 OLED驱动函数是使用B站UP江科大的。我们直接调用即可,是使用软件模拟I2C协议进行通信的。具体的I2C协议可查看上官嵌入式开发中的C51单片机开发。 驱动函数文件:通过百度网盘分享的文件:…...

HIVE4.0.0的10000端口启动不起来的一种情况

问题 原生态部署HIVE4.0.0启动不起来10000端口&#xff0c;也没找到日志文件的位置&#xff0c;后来才知道日志文件默认在/tmp/<hostname>/路径下面&#xff0c;查看日志以为是Tez没安装的问题&#xff0c;我这儿要实现hive on spark&#xff0c;是不是该安装spark然后启…...

[极客大挑战 2019]FinalSQL1

打开题目 sql注入&#xff0c;点击1试一下 点击2试一下 点击3试一下 点击4 点击5 id6试一下 感觉是sql盲注了 编写脚本 import requests import string from time import sleep url "http://9da9cb18-3096-413a-9476-8a177ffec31a.node4.buuoj.cn:81/search.php?id0^(…...

从零构建:基于OpenCV与人体姿态分析的跌倒检测实战(附完整源码)

1. 为什么我们需要跌倒检测系统 想象一下家里的老人独自在客厅活动时突然摔倒的场景。这种意外在现实生活中并不罕见&#xff0c;尤其是对于行动不便的老年人群体。传统的解决方案往往依赖于佩戴式设备或紧急呼叫按钮&#xff0c;但这些方法要么需要用户主动操作&#xff0c;要…...

PyTorch 2.8镜像功能体验:支持多卡计算,大幅缩短模型训练时间

PyTorch 2.8镜像功能体验&#xff1a;支持多卡计算&#xff0c;大幅缩短模型训练时间 1. PyTorch 2.8镜像概述 PyTorch 2.8镜像是一个开箱即用的深度学习环境&#xff0c;预装了PyTorch 2.8和CUDA工具包。这个镜像最大的亮点是支持多GPU并行计算&#xff0c;能够显著加速模型…...

利用快马平台快速构建鸿蒙pc镜像下载验证工具原型

最近在研究鸿蒙系统的PC版本适配工作&#xff0c;发现获取官方镜像是个不小的门槛。官方渠道的下载链接分散在不同页面&#xff0c;版本信息也不够直观&#xff0c;每次下载完还得手动校验文件完整性&#xff0c;整个过程相当繁琐。于是想做个工具来简化这个流程&#xff0c;正…...

Modbus实战:从功能码到网络选型的工业通信指南

1. Modbus协议基础&#xff1a;从功能码到设备角色 第一次接触Modbus时&#xff0c;我被它简洁的设计震惊了——这个诞生于1979年的协议&#xff0c;至今仍是工业自动化领域的通用语言。就像乐高积木一样&#xff0c;Modbus用几个基础功能码就能搭建出复杂的控制系统。让我们先…...

保姆级教程:在RflySim仿真平台用Python玩转大疆Livox激光雷达点云(附完整配置流程)

从零玩转RflySim与大疆Livox激光雷达&#xff1a;Python点云处理全实战指南 当无人机开发者需要测试激光雷达算法时&#xff0c;真实飞行测试成本高昂且风险大。RflySim仿真平台结合大疆Livox激光雷达的虚拟模型&#xff0c;为开发者提供了一个安全、高效的测试环境。本文将手把…...

【重磅原创改进代码】基于自适应峰谷感知(APVP)多头注意力(MHA)多任务学习(MTL)的多变量多输出时间序列预测附Python代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f447; 关注我领取海量matlab电子书和…...

用STM32F103做个智能门禁卡管理终端:RC522读卡、OLED菜单、4x4键盘改密码,附工程源码

基于STM32F103的智能门禁终端开发实战&#xff1a;从模块整合到系统优化 在物联网设备开发领域&#xff0c;将多个功能模块整合为一个稳定可靠的终端系统是开发者常面临的挑战。本文将深入探讨如何基于STM32F103RCT6微控制器构建一个功能完善的智能门禁管理终端&#xff0c;涵盖…...

快速原型设计:基于快马平台构建vmware安装交互演示应用

今天想和大家分享一个特别实用的开发经验&#xff1a;如何用InsCode(快马)平台快速制作VMware虚拟机安装的交互式演示工具。这个项目特别适合技术文档编写者或IT培训师&#xff0c;能让你用最短时间把枯燥的安装教程变成生动可操作的原型。 为什么需要交互式演示&#xff1f; 传…...

Subtitle Edit:实现专业级字幕制作的7大创新方法指南

Subtitle Edit&#xff1a;实现专业级字幕制作的7大创新方法指南 【免费下载链接】subtitleedit the subtitle editor :) 项目地址: https://gitcode.com/gh_mirrors/su/subtitleedit 在视频内容创作与传播领域&#xff0c;字幕不仅是辅助理解的工具&#xff0c;更是提升…...

自动化智能体生成+外接MCP,我用 ModelEngine Nexent 5分钟手搓了一个小红书爆款收割机

前言&#xff1a;别让“工作流”困住了你的想象力 在 AI Agent 爆发的这一年&#xff0c;作为开发者&#xff0c;我们采用过“工作流&#xff08;Workflow&#xff09;”开发&#xff0c;提示词开发。 最近体验了 ModelEngine Nexent&#xff0c;它打出的 Slogan 是 “Your n…...