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

分布式网络

分布式网络(Distributed Network)指的是一种计算机网络架构,其中计算资源(计算、存储、数据处理等)分布在多个物理或逻辑上的节点上,而不是集中在单一的服务器或数据中心中。这种架构的主要目标是提高系统的可靠性、可扩展性和性能

1. 分布式网络的特点

去中心化(Decentralization)

  • 传统的 集中式网络(如单台服务器)会有单点故障(SPOF,Single Point of Failure)。
  • 分布式网络没有单一的控制中心,多个节点可以协作完成任务。

高可用性(High Availability)

  • 多个副本(如数据库的主从复制、数据分片)保证系统在部分节点失效时仍能运行。
  • 容错机制(如Leader选举、心跳检测)提高网络稳定性。

可扩展性(Scalability)

  • 通过 增加节点(横向扩展,scale-out)提升计算能力,而不是仅依赖于单个服务器的升级(纵向扩展,scale-up)。

数据一致性(Consistency)

  • CAP 定理(一致性 Consistency、可用性 Availability、分区容忍性 Partition Tolerance)在分布式网络设计中非常重要,通常需要权衡。

异地容灾(Disaster Recovery)

  • 分布式架构通常会在多个数据中心部署,防止某个区域的故障影响整个系统。

2. 分布式网络 vs. 其他网络架构

架构类型特点示例
集中式网络(Centralized Network)由单个服务器或数据中心管理所有流量传统数据库、单机应用
分布式网络(Distributed Network)计算、存储资源分布在多个节点上Hadoop、Spark、分布式数据库
对等网络(Peer-to-Peer, P2P)没有固定的服务器,所有节点都对等

BitTorrent、区块链

3. 分布式网络的关键技术

(1) 分布式存储

分布式存储系统能够跨多个服务器存储数据,保证数据冗余,提高读写性能:

  • HDFS(Hadoop Distributed File System):大数据存储
  • Ceph、GlusterFS:对象存储
  • Amazon S3、腾讯云 COS:云存储

(2) 分布式计算

  • MapReduce(Hadoop 生态):将计算任务拆分成多个任务并行执行。
  • Spark:基于内存的分布式计算引擎,比 MapReduce 更快。
  • Flink:专注于实时流计算。

(3) 分布式数据库

  • OLTP(事务型数据库):MySQL + 分片(Sharding)、TiDB、CockroachDB
  • OLAP(分析型数据库):ClickHouse、Druid、Presto
  • NoSQL 数据库:HBase(列存储)、Cassandra(分布式 KV 存储)

(4) 分布式消息队列

  • Kafka:高吞吐日志收集、数据流处理
  • RabbitMQ、RocketMQ:事件驱动架构

(5) 分布式协调 & 负载均衡

  • Zookeeper:管理分布式系统中的 leader 选举、配置管理
  • Nginx、Envoy:负载均衡,均衡分发流量
  • Kubernetes(K8S):容器编排,自动伸缩服务

4. 分布式网络的典型应用场景

大数据处理:Hadoop、Spark 处理海量数据
云计算:腾讯云、阿里云、AWS 等提供的云存储、云计算服务
区块链:比特币、以太坊等采用 P2P 分布式网络
CDN(内容分发网络):加速网站访问,如 Cloudflare、腾讯 CDN
微服务架构:多个服务部署在不同机器上,使用 gRPC、HTTP 进行通信

分布式存储原理

分布式存储(Distributed Storage)是一种数据存储架构,它将数据分布在多个物理或逻辑服务器上,而不是集中在单台机器上。这样可以提高数据可用性、扩展性、容错能力,适用于大规模数据存储需求。


1. 分布式存储的核心概念

数据分片(Sharding)
将大规模数据拆分成小块(Shard/Chunk),分布到不同的存储节点上,提高存储性能和扩展性。

数据副本(Replication)
同一份数据存储多个副本,保证在部分节点故障时,数据仍然可用,提高数据可靠性。

一致性(Consistency)
分布式存储系统需要确保多副本之间的数据一致性,常见策略:

  • 强一致性(Strong Consistency):所有副本必须同步,保证最新数据(如分布式事务)。
  • 最终一致性(Eventual Consistency):允许短时间的数据不一致,最终会同步(如 DNS、Cassandra)。

CAP 定理(Consistency、Availability、Partition Tolerance)

  • 一致性(C):所有副本的数据相同
  • 可用性(A):即使部分节点故障,系统仍然可以读写
  • 分区容忍性(P):即使网络分区(节点之间网络断开),系统仍能运行

CAP 定理告诉我们:分布式存储系统不能同时保证 C、A、P,只能二者兼得。
例如:

  • HDFS、BigTable 偏向 CP(强一致性 + 分区容忍性)
  • Cassandra、DynamoDB 偏向 AP(高可用 + 分区容忍性)

2. 分布式存储架构

(1) 主从架构(Master-Slave)

  • 数据存储在 主节点(Master),从节点(Slave)同步数据
  • 适用于 数据库读多写少的场景
  • 例如 MySQL 主从复制

优点

  • 读写分离,提高读取性能
  • 主节点崩溃后,可以手动或自动选举新的主节点

缺点

  • 主节点负载大,写入性能有限
  • 主从同步可能存在数据延迟

(2) 去中心化架构(P2P / Shared-Nothing)

  • 无中心化主节点,每个节点都有独立的存储和计算能力
  • 采用 一致性哈希(Consistent Hashing) 进行数据分布
  • 适用于 海量数据存储 & 分布式文件系统
  • 例如 Cassandra、Ceph

优点

  • 易于扩展,动态增加节点
  • 容错能力强,某些节点失效不影响整体

缺点

  • 复杂的路由机制
  • 需要高效的副本同步和负载均衡

(3) 分布式文件系统

  • 数据切片存储到多个存储节点,并生成多个副本
  • 适用于 大规模非结构化数据
  • 例如 HDFS(Hadoop Distributed File System)

优点

  • 支持超大规模存储(如 PB 级数据)
  • 适用于 流式读取 场景(如大数据分析)

缺点

  • 不适合低延迟场景
  • 写入吞吐量有限

3. 常见的分布式存储系统

存储类型典型系统应用场景
分布式文件系统(DFS)HDFS、Ceph大数据分析、日志存储
分布式对象存储Amazon S3、腾讯云 COS云存储、图片/视频存储
分布式数据库TiDB、Cassandra、CockroachDB事务型数据库(OLTP)
分布式KV存储Redis Cluster、Etcd高性能键值存储
分布式表存储HBase、BigtableOLAP 分析,时间序列存储

4. 分布式存储的关键技术

(1) 数据分片(Sharding)

  • Hash 分片:使用 Hash 函数分配数据,如 key % num_shards
  • 范围分片(Range Partitioning):按数据范围分片,如 user_id < 1000 -> shard_1
  • 一致性哈希(Consistent Hashing):减少数据迁移,提高扩展性(如 Cassandra)

(2) 数据副本(Replication)

  • 同步复制(Strong Consistency):主节点写入数据,立即同步到从节点(如 MySQL)
  • 异步复制(Eventually Consistent):主节点写入数据,从节点异步更新(如 Cassandra)
  • 多主复制(Multi-Master):多个节点可同时写入,提高吞吐量(如 TiDB)

(3) 数据一致性

  • Paxos / Raft 共识协议:保证数据一致性(如 Etcd、ZooKeeper)
  • Quorum 机制:确保多数派副本更新后才确认写入(如 Cassandra)

(4) 负载均衡 & 容灾

  • 负载均衡(Load Balancing):均衡多个存储节点的压力,如 Nginx + LVS
  • 数据修复(Self-Healing):检测数据丢失并自动恢复,如 HDFS DataNode 检测

5. 分布式存储的应用场景

大数据分析(HDFS、Hive):存储 TB 级数据,支持并行计算
日志存储(Kafka + S3):存储百万 TPS 的日志数据
社交平台(Cassandra + Redis):支持亿级用户的点赞、评论
金融系统(TiDB、CockroachDB):高可用的事务性数据库


6. 总结

  1. 分布式存储的核心思想:通过 数据分片 + 副本同步 提高可扩展性、可用性和容错能力。
  2. 关键技术
    • Sharding(分片)
    • Replication(数据副本)
    • Consistency(数据一致性)
    • CAP 定理(一致性、可用性、分区容忍性)
  3. 主流存储系统:HDFS、Ceph、TiDB、Cassandra、Redis Cluster

相关文章:

分布式网络

分布式网络&#xff08;Distributed Network&#xff09;指的是一种计算机网络架构&#xff0c;其中计算资源&#xff08;计算、存储、数据处理等&#xff09;分布在多个物理或逻辑上的节点上&#xff0c;而不是集中在单一的服务器或数据中心中。这种架构的主要目标是提高系统的…...

【招聘精英】

我们公司是一个位于石家庄的一个科技型新型技术公司。主要做人力资源、用工、科技等方面。 有意向回石家庄的或者已经在石家庄的技术大咖、软件大牛、产品大佬、UI大神可以来了解一下。 现在招聘 高级前端开发 高级java开发 其他岗位也可以联系。 有意向的朋友可以私信我。 -…...

ESP8266 NodeMCU 与 Atmega16 微控制器连接以发送电子邮件

NodeMCU ESP8266 AVR 微控制器 ATmega16 的接口 Atmega16 是一款低成本的 8 位微控制器,比以前版本的微控制器具有更多的 GPIO。它具有所有常用的通信协议,如 UART、USART、SPI 和 I2C。由于其广泛的社区支持和简单性,它在机器人、汽车和自动化行业有广泛的应用。 Atmega1…...

MongoDB用户管理和复制组

用户管理 1、建用户时&#xff0c;use到的库就是此用户的验证库 2、登录时必须明确指定验证库才能登录 3、通常管理员用的验证库是admin&#xff0c;普通用户的验证库一般是所管理的库设置为验证库 4、如果直接登录到数据库&#xff0c;不进行use&#xff08;示例&#xff…...

GoLang的select是什么?在什么时候场景下用

在 Go 语言中&#xff0c;select 是专门用于处理通道&#xff08;Channel&#xff09;多路复用的关键字&#xff0c;它可以同时监听多个通道的读写操作&#xff0c;并根据就绪的通道执行对应的逻辑。以下是 select 的用法和典型应用场景&#xff1a; 一、基本用法 select 语法…...

SQLAlchemy系列教程:集成Pydantic增强数据处理能力

本教程介绍如何将Pydantic用于数据验证&#xff0c;SQLAlchemy用于数据库操作&#xff0c;从而通过强大的数据处理能力增强Python应用程序。 介绍 在现代web开发中&#xff0c;确保数据的有效性和完整性至关重要。Pydantic和SQLAlchemy是两个功能强大的Python库&#xff0c;可…...

【数据结构初阶】---堆的实现、堆排序以及文件中的TopK问题

1.树的概念及结构 1.1树的概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;而叶朝下的。 有一个特殊的结点&…...

python中httpx库的详细使用及案例

文章目录 1. 安装 httpx2. 同步请求3. 异步请求4. 高级功能5. 错误处理6. 配置客户端7. 结合 Beautiful Soup 使用8. 示例:抓取并解析网页9. 注意事项httpx 是一个现代化的 Python HTTP 客户端库,支持同步和异步请求,功能强大且易于使用。它比 requests 更高效,支持 HTTP/2…...

IP,MAC,ARP 笔记

1.什么是IP地址 IP 地址是一串由句点分隔的数字。IP 地址表示为一组四个数字&#xff0c;比如 192.158.1.38 就是一个例子。该组合中的每个数字都可以在 0 到 255 的范围内。因此&#xff0c;完整的 IP 寻址范围从 0.0.0.0 到 255.255.255.255。 IP 地址不是随机的。它们由互…...

【记录】Python3|Linux下安装Virtualenv和virtualenvwrapper用于处理虚拟环境

之前写过一篇Anaconda的&#xff1a;【安装】Python3&#xff5c;Windows下安装Anaconda、pytorch&#xff0c;以及修改pip默认安装路径_anaconda pip修改安装的包路径-CSDN博客 还写过一篇专门讲所有虚拟环境的&#xff1a;【记录】环境&#xff5c;Ubuntu18.04 Python 开发环…...

VSTO(C#)Excel开发3:Range对象 处理列宽和行高

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…...

Selenium库打开指定端口(9222、9333等)浏览器【已解决!!!】

就是在写动态爬虫爬取数据的过程中&#xff0c;如果用selenium的话&#xff0c;有一个缺点&#xff0c;就是当我们去测试一个网站能不能爬取&#xff0c;它都会重新换端口打开一个浏览器&#xff0c;不会使用上一次使用的浏览器&#xff0c;在实际使用过程中这样调试很烦&#…...

Redis在人员管理系统中的应用示例

用户会话管理 场景&#xff1a;用户登录后存储会话信息&#xff0c;支持多服务器共享 实现&#xff1a; 用户登录成功后&#xff0c;生成唯一Token&#xff08;如JWT&#xff09;&#xff0c;作为Redis的Key Value存储用户ID、角色、权限等信息&#xff0c;设置过期时间&…...

蓝桥杯备考:倍增算法详解

如果我们想暴力求解的话&#xff0c;我们的时间复杂度是O&#xff08;N&#xff09;b最大是10的9次方&#xff0c;这时候我们一定会超时 #include <iostream> using namespace std;typedef long long LL; LL a,b,p;LL ret 1; int main() {cin >> a >> b &g…...

安徽省考计算机专业科目2025(持续更新)

目录 第一部分 计算机科学技术基础 第一章 计算机及其应用基础知识 1.1 计算机的特点、分类及其应用 1.2 信息编码与数据表示&#xff1b;数制及其转换方法&#xff1b;算术运算和逻辑运算的过程 第一部分 计算机科学技术基础 第一章 计算机及其应用基础知识 1.1 计算机…...

PostgreSQL、SQL Server和MySQL数据库性能调优与故障排除技术

通过结合具体技术特性与工具链的深度使用&#xff0c;可系统化提升数据库性能和稳定性。建议根据实际负载特征制定监控-分析-优化的闭环管理流程。 数据库技术&#xff1a; PostgreSQL 13&#xff1a;逻辑复制、分区表、并行查询、监控工具&#xff08;如pg_stat_statements、…...

【贪心算法2】

力扣122.买卖股票最佳时机Ⅱ 链接: link 思路 要求最大利润&#xff0c;可以分解成子问题求解&#xff0c;在最低价格买入&#xff0c;最高价格卖出。 假如第0天价格最低&#xff0c;第3天价格最高&#xff0c;利润prices[3] - pricnes[0], 可以将利润公式拆解成 (prices[3]…...

SQL经典查询

查询不在表里的数据&#xff0c;一张学生表&#xff0c;一张学生的选课表&#xff0c;要求查出没有选课的学生&#xff1f; select students.student_name from students left join course_selection on students.student_idcourse_selection.student_id where course_selecti…...

## DeepSeek写水果记忆配对手机小游戏

DeepSeek写水果记忆配对手机小游戏 提问 根据提的要求&#xff0c;让DeepSeek整理的需求&#xff0c;进行提问&#xff0c;内容如下&#xff1a; 请生成一个包含以下功能的可运行移动端水果记忆配对小游戏H5文件&#xff1a; 要求 可以重新开始游戏 可以暂停游戏 卡片里的水果…...

Flask 框架简介

Flask 框架简介 Flask 框架简介 Flask 框架简介 Flask 是一个 Python 微型网页开发框架。微型指明了 Flash 的核心是轻量级的&#xff0c;但是可以灵活扩展。下面的简单的例子要和一个数据库系统交互。Django附带了与最常见的数据库交互所需的库。另一方面&#xff0c;Flask允…...

【GoTeams】-5:引入Docker

本文目录 1. Dokcer-compose回顾下Docker知识编写docker-compose.yaml运行docker 2. 部署go服务编写dockerfile 1. Dokcer-compose 这里简单先用一下win版本的Docker&#xff0c;后期开发好了部署的时候再移植到服务器下进行docker部署。 输入命令docker-compose version 就可…...

将自定义vue组件加载在Mapbox或Maplibre的marker和popup上

1. 使用场景 在开发WebGIS应用时&#xff0c;我们常需要将自定义UI组件与地图元素结合。本文介绍如何将Vue组件集成到Mapbox/Maplibre的Marker标记点和Popup弹窗中&#xff0c;实现动态交互式的地图功能。 2. 为什么需要特殊处理&#xff1f; 在常规开发中我们大多的处理是 …...

定时任务和分布式任务框架

文章目录 一 Spring Task1.@Scheduled注解介绍2 基本用法(1)使用@EnableScheduling修饰启动类(2)创建定时任务的类(3)fixedDelay(4)fixedRate(5)cron3 执行多个任务4 设置异步执行5 @Async使用自定义线程池6 缺点二 xxl-job介绍架构图与其他任务调度平台的比较运行调…...

GB28181视频监控流媒体平台LiveGBS如何自定义收流端口区间以便减少收流端口数或解决端口冲突问题

LiveGBS GB28181流媒体服务在接收视频的时候默认是使用30000-30249&#xff0c; webrtc流播放端口区间默认是UDP的30250-30500区间。有些网络环境不方便开放这么大的端口区间&#xff0c;下面介绍下如何修改配置这个区间。 从页面上修改这个区间&#xff0c;端口区间尽量设置大…...

rabbitmq-amqp事务消息+消费失败重试机制+prefetch限流

1. 安装和配置 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency><dependency> <groupId>com.fasterxml.jackson.core</groupId> <arti…...

Mac服务器上创建Docker并安装宝塔环境

1. 远程ssh登录服务器&#xff1a;ssh -o ProxyCommand"nc -X 5 -x 127.0.0.1:7890 %h %p" -i fenfaqianming.pem ec2-user54.254.XXX.XXX 2. mac服务器上需要安装Colima 3. brew install colima 4. colima start 5. colima autostart 创建mac服务器安装docker &…...

golang 从零单排 (一) 安装环境

1.下载安装 打开网址The Go Programming Language 直接点击下载go1.24.1.windows-amd64.msi 下载完成 直接双击下一步 下一步 安装完成 环境变量自动设置不必配置 2.验证 win r 输入cmd 打开命令行 输入go version...

康谋分享 | 3DGS:革新自动驾驶仿真场景重建的关键技术

随着自动驾驶技术的迅猛发展&#xff0c;构建高保真、动态的仿真场景成为了行业的迫切需求。传统的三维重建方法在处理复杂场景时常常面临效率和精度的挑战。在此背景下&#xff0c;3D高斯点阵渲染&#xff08;3DGS&#xff09;技术应运而生&#xff0c;成为自动驾驶仿真场景重…...

【够用就好008】开新坑自学esb32烧录进军物联网和嵌入式

见字如面&#xff0c;这里是AKA AIGC创意人竹相左边。 学习使用了三年的AI工具&#xff0c;现在最大的自信就是业余时间可以学习任何自己感兴趣的事&#xff0c;感觉手搓火箭也不是梦。 今天开个新坑&#xff0c;也是逐步探索想要进入的新世界。物联网&#xff08;IoT&#…...

大白话JavaScript实现一个函数,将字符串中的每个单词首字母大写。

大白话JavaScript实现一个函数&#xff0c;将字符串中的每个单词首字母大写。 答题思路 理解需求&#xff1a;要写一个函数&#xff0c;它能接收一个字符串&#xff0c;然后把这个字符串里每个单词的第一个字母变成大写。分解步骤 拆分单词&#xff1a;一般单词之间是用空格隔…...