分布式系统架构

news2024/9/27 7:21:33

分布式系统定义

  • 分布式系统:硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。

为什么需要分布式系统

  • 提升系统吞吐量:集群协同解决单机性能瓶颈
  • 提高系统可用性 :冗余部署,各别服务宕机,不会影响系统可用性
  • 可扩展要求:系统需要具备快速扩展的能力

分布式系统架构

类型描述优点缺点备注
集中式架构业务逻辑及数据访问功能全部集成在单体的模块中开发成本低,性能高、运维成本低、架构简单隔离性差、协同效率低
分体架构面向服务、分层架构、微服务架构迭代快、故障范围小、易扩展开发成本高、基础设施依赖度高、维护复杂、延迟增加多
  • 面向服务:按照业务功能将模块垂直拆分成多个独立的服务
  • 分层架构:层级解耦,分为网关层,业务逻辑层,数据访问层。
  • 微服务架构:将单应用程序作为一套小型服务开发的方法,每种应用程序都在其自己的进程中
    运行,并与轻量级机制进行通信。这些服务是围绕业务功能构建的

分布式系统架构组成

在这里插入图片描述

  • 基础设施: DNS、CDN、Nginx、LVS
  • 业务模块: 网关模块、业务逻辑模块、 数据访问模块
  • 基础组件: 注册中心、配置中心、消息队列、 服务治理平台、分布式锁组件、分布式事务组件、性能分析平台、日志分析平台、发布系统、监控平台
  • 存储资源:关系数据库、分布式缓存、KV存储、对象存储、时序数据库、NoSQL、NewSQL

分布式架构中的三高:高并发、高性能、高可用

高可用设计

高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。通常,我们会通过设计冗余+自动故障转移来保证系统的高可用特性。

请求生命周期分析

在这里插入图片描述

  • 分布式系统中请求由前端发出,到达后端服务系统处理并返回前端,通常会经过 DNS->LVS->NGINX->网关→ 应用服务->DB集群

服务冗余

  • 保证在个别节点发生异常后其他正常节点承载异常节点的流量,保证业务请求得到正常处理
    处理方式:服务注册与服务发现,健康检查,节点探活,

存储冗余

  • 数据冗余可以尽量保证数据不丢失,同时还可以承载更多的查询流量,提高系统访问性能
    处理方式:
    • 一主一从或多从,从库扛线上流量
    • 主从切换:业务无感知的主从切换时保证数据高可靠的前提
    • 数据隔离:DB要按业务隔离,不同部门或不同业务不能使用同一DB,必须配合业务拆分,防止相互影响
    • 共用实例问题:数据量大影响性能、业务相互影响、连接资源紧张

模块拆分

  • 采用垂直拆分、水平拆分方法使模块功能单一,处理业务隔离,提高系统整体可靠性
  • 模块拆分的原则:职责单一、业务隔离、粒度合理、结合场景、适应组织架构、避免循环依赖

高并发设计

  • 有状态设计:是指进程在本地内存或磁盘上存储自己完成代码逻辑需要的数据,并且进程启动时需要将数据加载到内存或要求数据文件在本地磁盘上存在才能正常运行的服务。
  • 无状态设计:对单次请求的处理,不依赖其他请求,也就是说,处理一次请求所需的全部信息,要么都包含在这个请求里,要么可以从外部获取到(比如说数据库),服务器本身不存储任何信息
    • 无状态设计的设计如果涉及到要存储信息,有两种方式可以选择:客户端保存、服务端保存

高性能设计

以用户为中心,提供快速的网页访问体验。主要参数有较短的响应时间、较大的并发处理能力、较高的吞吐量与稳定的性能参数。

  • 前端优化:网站业务逻辑之前的部分;
  • 浏览器优化:减少HTTP请求数,使用浏览器缓存,启用压缩,CSS JS位置,JS异步,减少Cookie传输;CDN加速,反向代理;
  • 应用层优化:处理网站业务的服务器。使用缓存,异步,集群
  • 代码优化:合理的架构,多线程,资源复用(对象池,线程池等),良好的数据结构,RPC异步调用,单例,Cache等;
  • 存储优化:缓存、固态硬盘、光纤传输、优化读写、磁盘冗余、分布式存储(HDFS)、NoSQL、索引优化、分库分表等。

分布式系统服务治理

服务注册、服务发现、负载均衡、流量削峰、版本兼容、服务熔断、服务降级、服务限流等方面的问题,都是因服务拆分所引发的一系列问题。如何解决这些问题,让服务更稳定地运行,就叫作服务治理。

  • 服务分组: 将同一集群的服务节点分组,分别向不同的调用方提供服务,隔离调用方之间的相互影响
  • 过载保护: 服务端高可用措施,必要情况下丢弃部分请求,保证服务柔性可用
    • 原因分析: 下游服务超时、自身资源不足
    • 现象: 请求队列堆积
    • 解决办法: 超时丢弃、限流
  • 熔断降级:调用方高可用措施,必要情况下丢弃调用,有损返回数据,防止系统雪崩,保证系统柔性可用
  • 权重支持:动态调整节点权重,结合线上流量和服务节点情况,合理利用服务器资源
  • 应用场景 :机器性能差异、机器流量差异、实现节点慢启动
  • 日常维护:线上系统常常处于不停的迭代中,时刻掌握线上系统运行状态,了解系统性能瓶颈也十分重要,这里需要重点做的其实是监控,用于发现系统异常,预判故障点

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

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

相关文章

OSS阿里云存储

一、开通“对象存储OSS”服务 2、进入管理控制台 二、控制台使用 点击Buket列名,Buket可以看作是一系列的虚拟内存空间它是一个独立的小个体 创建mystudent 创建成功后就有下面的样子了 ,创建的时候读写权限,我们选择公共读&#xff0c…

matlab中sign函数的使用(提取符号)

仅用于记录自己学习过程中遇到的函数 matlab中sign函数的使用,提取符号 一、语法 Y sign(x) 返回与 x 大小相同的数组 Y,其中 Y 的每个元素是: 1,前提是 x 的对应元素大于 0。 0,前提是 x 的对应元素等于 0。 -1&am…

CAP定理与分布式事务理论

文章目录一、CAP定理1.1 一致性1.2 可用性1.3 分区容错1.4 定理的矛盾点二、分布式事务理论2.1 BASE理论2.2 解决分布式事务思路一、CAP定理 分布式系统有三个指标。 Consistency(一致性)Availability(可用性)Partition toleranc…

GBASE斩获2022科技赋能金融业数字化转型突出贡献奖

12月27日,由中国人民银行主管的《金融电子化》杂志社主办的“2022中国金融科技年会暨第十三届金融科技应用创新奖颁奖典礼”成功举办,在本次活动上,GBASE南大通用“多模多态分布式数据库GBase 8c”,荣获“2022科技赋能金融业数字化…

PyCharm高级配置

pycharm设置内存大小步骤1,Help -> FindAction -> (输入 “VM”) -> (点击)“Edit Custom VM options”2,Pycharm会在编辑器中打开适当的vmoptions文件(pycharm.vmoptions或pycharm64.options)。3,将**-Xms**…

CCIE重认证350-401

拖图题 QoS traffic policing: causes TCP retransmissions when traffic is dropped导致TCP重传时流量下降 introduces no delay and jitter引入无延迟和抖动 drops excessive traffic减少过多的流量 traffic shaping: buffers excessive traffic缓冲过多的流量 introduce…

Sensor+ISP专栏-Demosaic

SensorISP专栏-Demosaic 1.what is raw raw图指的是从cmos sensor直接输出的原始图像,它本身没有颜色分量。在CMOS Sensor中使用彩色滤镜阵列(color filter array,CFA) 的方式捕获彩色图像,每个感光像素的上面覆盖一个语物理像素相同面积大…

OpenStack-Mitaka版本部署

1.环境准备 centos7.2相关文件 镜像:https://mirrors.aliyun.com/centos-vault/7.2.1511/isos/x86_64/CentOS-7-x86_64-DVD-1511.iso?spma2c6h.25603864.0.0.5c565932JYniuU openstack-mitaka rpm包:https://mirrors.aliyun.com/centos-vault/7.2.15…

hadoop 3.x 案例7: hadoop大数据平台日志

文章目录一. Hadoop日志1.1 namenode日志1.2 datanode日志1.3 secondarynamenode日志1.4 yarn日志1.4.1 resourcemanger日志1.4.2 nodemanager日志1.5 historyServer日志二. Hive日志三. Spark日志四. Flink日志一. Hadoop日志 cd $HADOOP_HOME/logs日志分类: namenode日志 d…

【ROS】—— ROS通信机制进阶(七)

文章目录前言1. 常用API(C)1.1 初始化1.2 话题与服务相关对象1.3 回旋函数(重点)1.4 时间1.4.1 获取当前时刻and指定时刻1.4.2 持续时间1.4.3 时间运算1.4.4 设置运行频率1.4.5 定时器1.5 其他函数2. 常用API(python)2.1 初始化2.2 话题与服务相关对象2.3 回旋函数2.4 时间2.4.…

Bandit算法学习[网站优化]02——epsilon-Greedy 算法

Bandit算法学习[网站优化]02——epsilon-Greedy 算法 参考资料 White J. Bandit algorithms for website optimization[M]. " O’Reilly Media, Inc.", 2013.https://github.com/johnmyleswhite/BanditsBook 实验环境:jupyter python 3.7 项目地址&am…

twrp Xposed zip包脚本定制全解析

声明:本文不对印刷机导致的任何结果承担责任,请谨慎尝试 想要研究一个新技术,最好的办法就是read the fuck source code,读源码时最直接高效的方式,当然,这很难啃,所以通常也可以配合网上一些教程来理解,但是通常,值钱的技术一般人是不会在网上发布的,因为技术的价值就…

大厂必备Stream流、方法引用的使用

大厂必备Stream流、方法引用的使用 1 Stream的基本使用 1.1 思想 当需要对多个元素进行操作(特别是多步操作)的时候,考虑到性能及便利性,我们应该首先拼好一个“模型”步骤方案,然后再按照方案去执行它。【流水线】 …

spring源码-容器refresh

spring源码 铺垫 1.xml信息封装 我们可以预测的大致顺序 xml里的bean 封装成对象定义信息更容易进一步的 创建 注入 BeanDefinition的属性:可以看出是对xml里信息的封装 public interface BeanDefinitionReader 定义规范2.使用反射 为什么不用new创建对象&#x…

NXP EMDA学习(1):TCD寄存器详解

eDMA(Enhanced DMA)即增强型DMA,它是NXP芯片中独有的功能,其最重要的一个特性也是eDMA的核心就是TCD(Transfer Control Descriptor)即传输控制描述符。所以,我们就来看一下这个结构体中各个字段的内容的含义,对这些字段有一个基础…

位置检测有哪些传感器可以用?(带磁编码器AS5600代码)

常见的有三种 编码器、霍尔传感器、磁传感器。 编码器一般指AB相正交脉冲的增量器件,有的还会有一个Z相信号,用来指示零位; 霍尔传感器一般是指ABC三个成120度角度间隔排列的器件,这种传感器一般集成在电机内部,电机…

[Amazon]人工智能入门学习笔记---AI-机器学习-深度学习

⬜⬜⬜ 🐰🟧🟨🟩🟦🟪 (*^▽^*)欢迎光临 🟧🟨🟩🟦🟪🐰⬜⬜⬜ ✏️write in front✏️ 📝个人主页:陈丹宇jmu &a…

基于模型预测控制的波浪能转换器(WEC)研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

Flink简介

Flink 系列教程传送门 第一章 Flink 简介 第二章 Flink 环境部署 第三章 Flink DataStream API 第四章 Flink 窗口和水位线 第五章 Flink Table API&SQL 第六章 新闻热搜实时分析系统 前言 流计算产品实时性有两个非常重要的实时性设计因素,一个是待计算…

基于 Docker 的 Neo4j 部署及数据备份与恢复

目录一、部署二、验证三、备份3.1 离线备份3.2 在线备份3.3 社区版备份一、部署 1、pull 镜像 docker pull neo4j:4.4.16-community2、创建目录 mkdir -p /home/data/neo4j/{data,logs,conf,import,db-backup}3、运行容器 docker run -itd \--name neo4j \--restart always…