分布式网络
分布式网络(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、Bigtable | OLAP 分析,时间序列存储 |
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. 总结
- 分布式存储的核心思想:通过 数据分片 + 副本同步 提高可扩展性、可用性和容错能力。
- 关键技术:
- Sharding(分片)
- Replication(数据副本)
- Consistency(数据一致性)
- CAP 定理(一致性、可用性、分区容忍性)
- 主流存储系统:HDFS、Ceph、TiDB、Cassandra、Redis Cluster
相关文章:
分布式网络
分布式网络(Distributed Network)指的是一种计算机网络架构,其中计算资源(计算、存储、数据处理等)分布在多个物理或逻辑上的节点上,而不是集中在单一的服务器或数据中心中。这种架构的主要目标是提高系统的…...
【招聘精英】
我们公司是一个位于石家庄的一个科技型新型技术公司。主要做人力资源、用工、科技等方面。 有意向回石家庄的或者已经在石家庄的技术大咖、软件大牛、产品大佬、UI大神可以来了解一下。 现在招聘 高级前端开发 高级java开发 其他岗位也可以联系。 有意向的朋友可以私信我。 -…...
ESP8266 NodeMCU 与 Atmega16 微控制器连接以发送电子邮件
NodeMCU ESP8266 AVR 微控制器 ATmega16 的接口 Atmega16 是一款低成本的 8 位微控制器,比以前版本的微控制器具有更多的 GPIO。它具有所有常用的通信协议,如 UART、USART、SPI 和 I2C。由于其广泛的社区支持和简单性,它在机器人、汽车和自动化行业有广泛的应用。 Atmega1…...
MongoDB用户管理和复制组
用户管理 1、建用户时,use到的库就是此用户的验证库 2、登录时必须明确指定验证库才能登录 3、通常管理员用的验证库是admin,普通用户的验证库一般是所管理的库设置为验证库 4、如果直接登录到数据库,不进行use(示例ÿ…...
GoLang的select是什么?在什么时候场景下用
在 Go 语言中,select 是专门用于处理通道(Channel)多路复用的关键字,它可以同时监听多个通道的读写操作,并根据就绪的通道执行对应的逻辑。以下是 select 的用法和典型应用场景: 一、基本用法 select 语法…...
SQLAlchemy系列教程:集成Pydantic增强数据处理能力
本教程介绍如何将Pydantic用于数据验证,SQLAlchemy用于数据库操作,从而通过强大的数据处理能力增强Python应用程序。 介绍 在现代web开发中,确保数据的有效性和完整性至关重要。Pydantic和SQLAlchemy是两个功能强大的Python库,可…...
【数据结构初阶】---堆的实现、堆排序以及文件中的TopK问题
1.树的概念及结构 1.1树的概念 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。 有一个特殊的结点&…...
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 地址表示为一组四个数字,比如 192.158.1.38 就是一个例子。该组合中的每个数字都可以在 0 到 255 的范围内。因此,完整的 IP 寻址范围从 0.0.0.0 到 255.255.255.255。 IP 地址不是随机的。它们由互…...
【记录】Python3|Linux下安装Virtualenv和virtualenvwrapper用于处理虚拟环境
之前写过一篇Anaconda的:【安装】Python3|Windows下安装Anaconda、pytorch,以及修改pip默认安装路径_anaconda pip修改安装的包路径-CSDN博客 还写过一篇专门讲所有虚拟环境的:【记录】环境|Ubuntu18.04 Python 开发环…...
VSTO(C#)Excel开发3:Range对象 处理列宽和行高
初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 源码指引:github源…...
Selenium库打开指定端口(9222、9333等)浏览器【已解决!!!】
就是在写动态爬虫爬取数据的过程中,如果用selenium的话,有一个缺点,就是当我们去测试一个网站能不能爬取,它都会重新换端口打开一个浏览器,不会使用上一次使用的浏览器,在实际使用过程中这样调试很烦&#…...
Redis在人员管理系统中的应用示例
用户会话管理 场景:用户登录后存储会话信息,支持多服务器共享 实现: 用户登录成功后,生成唯一Token(如JWT),作为Redis的Key Value存储用户ID、角色、权限等信息,设置过期时间&…...
蓝桥杯备考:倍增算法详解
如果我们想暴力求解的话,我们的时间复杂度是O(N)b最大是10的9次方,这时候我们一定会超时 #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 信息编码与数据表示;数制及其转换方法;算术运算和逻辑运算的过程 第一部分 计算机科学技术基础 第一章 计算机及其应用基础知识 1.1 计算机…...
PostgreSQL、SQL Server和MySQL数据库性能调优与故障排除技术
通过结合具体技术特性与工具链的深度使用,可系统化提升数据库性能和稳定性。建议根据实际负载特征制定监控-分析-优化的闭环管理流程。 数据库技术: PostgreSQL 13:逻辑复制、分区表、并行查询、监控工具(如pg_stat_statements、…...
【贪心算法2】
力扣122.买卖股票最佳时机Ⅱ 链接: link 思路 要求最大利润,可以分解成子问题求解,在最低价格买入,最高价格卖出。 假如第0天价格最低,第3天价格最高,利润prices[3] - pricnes[0], 可以将利润公式拆解成 (prices[3]…...
SQL经典查询
查询不在表里的数据,一张学生表,一张学生的选课表,要求查出没有选课的学生? select students.student_name from students left join course_selection on students.student_idcourse_selection.student_id where course_selecti…...
## DeepSeek写水果记忆配对手机小游戏
DeepSeek写水果记忆配对手机小游戏 提问 根据提的要求,让DeepSeek整理的需求,进行提问,内容如下: 请生成一个包含以下功能的可运行移动端水果记忆配对小游戏H5文件: 要求 可以重新开始游戏 可以暂停游戏 卡片里的水果…...
Flask 框架简介
Flask 框架简介 Flask 框架简介 Flask 框架简介 Flask 是一个 Python 微型网页开发框架。微型指明了 Flash 的核心是轻量级的,但是可以灵活扩展。下面的简单的例子要和一个数据库系统交互。Django附带了与最常见的数据库交互所需的库。另一方面,Flask允…...
【GoTeams】-5:引入Docker
本文目录 1. Dokcer-compose回顾下Docker知识编写docker-compose.yaml运行docker 2. 部署go服务编写dockerfile 1. Dokcer-compose 这里简单先用一下win版本的Docker,后期开发好了部署的时候再移植到服务器下进行docker部署。 输入命令docker-compose version 就可…...
将自定义vue组件加载在Mapbox或Maplibre的marker和popup上
1. 使用场景 在开发WebGIS应用时,我们常需要将自定义UI组件与地图元素结合。本文介绍如何将Vue组件集成到Mapbox/Maplibre的Marker标记点和Popup弹窗中,实现动态交互式的地图功能。 2. 为什么需要特殊处理? 在常规开发中我们大多的处理是 …...
定时任务和分布式任务框架
文章目录 一 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, webrtc流播放端口区间默认是UDP的30250-30500区间。有些网络环境不方便开放这么大的端口区间,下面介绍下如何修改配置这个区间。 从页面上修改这个区间,端口区间尽量设置大…...
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登录服务器: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:革新自动驾驶仿真场景重建的关键技术
随着自动驾驶技术的迅猛发展,构建高保真、动态的仿真场景成为了行业的迫切需求。传统的三维重建方法在处理复杂场景时常常面临效率和精度的挑战。在此背景下,3D高斯点阵渲染(3DGS)技术应运而生,成为自动驾驶仿真场景重…...
【够用就好008】开新坑自学esb32烧录进军物联网和嵌入式
见字如面,这里是AKA AIGC创意人竹相左边。 学习使用了三年的AI工具,现在最大的自信就是业余时间可以学习任何自己感兴趣的事,感觉手搓火箭也不是梦。 今天开个新坑,也是逐步探索想要进入的新世界。物联网(IoT&#…...
大白话JavaScript实现一个函数,将字符串中的每个单词首字母大写。
大白话JavaScript实现一个函数,将字符串中的每个单词首字母大写。 答题思路 理解需求:要写一个函数,它能接收一个字符串,然后把这个字符串里每个单词的第一个字母变成大写。分解步骤 拆分单词:一般单词之间是用空格隔…...
