分布式技术概览
文章目录
- 分布式技术
- 1. 分布式数据库(Distributed Databases)
- 2. 分布式文件系统(Distributed File Systems)
- 3. 分布式哈希表(Distributed Hash Tables, DHTs)
- 4. 分布式缓存(Distributed Caching)
- 5. 消息队列和流处理(Message Queues and Stream Processing)
- 6. 微服务架构(Microservices Architecture)
- 7. 分布式版本控制系统(Distributed Version Control Systems)
- 8. 分布式协调服务(Distributed Coordination Services)
- 9. 分布式共识算法(Distributed Consensus Algorithms)
- 10. 事件驱动架构(Event-Driven Architecture, EDA)
- 11. 服务网格(Service Mesh)
- 12. 分布式锁机制(Distributed Locking Mechanisms)
- 13. 分布式计算框架(Distributed Computing Frameworks)
- 14. 区块链技术(Blockchain Technology)
- 15. 云原生技术(Cloud-Native Technologies)
- 什么是CAP理论?
- CAP理论的三个属性:
- CAP理论的分类:
- CAP理论的实际应用:
- 总结:
- 什么是BASE理论?
- BASE理论的核心概念:
- BASE理论的应用场景:
- BASE理论与CAP理论的关系:
- 总结:
- 什么是共识算法?
- 常见的共识算法:
- 共识算法的特点:
- 共识算法的选择:
- 实际应用:
- 总结
分布式技术
分布式技术涵盖了多种技术和方法,旨在构建和维护可以在多个计算机
之间协同工作
的系统。这些技术旨在解决分布式系统中常见的问题,如数据一致性、容错性、并发控制和通信效率等。下面是一些重要的分布式技术及其应用场景:
1. 分布式数据库(Distributed Databases)
- 关系型数据库(RDBMS):如 MySQL Cluster、Oracle RAC,支持分布式事务处理。
- NoSQL 数据库:如 MongoDB、Cassandra、Couchbase,适合处理非结构化数据,提供高可扩展性和容错性。
- NewSQL 数据库:如 Google Spanner、Amazon Aurora,结合了 SQL 的事务能力和 NoSQL 的可扩展性。
2. 分布式文件系统(Distributed File Systems)
- Hadoop Distributed File System (HDFS):用于存储大量数据,适用于批处理和分析。
- Google File System (GFS):专为大规模数据处理设计,支持高吞吐量。
3. 分布式哈希表(Distributed Hash Tables, DHTs)
- Chord:一种用于查找和存储键值对的分布式哈希表。
- Kademlia:改进版的 Chord,广泛应用于 P2P 文件共享网络。
4. 分布式缓存(Distributed Caching)
- Memcached:高速对象缓存系统,常用于加速动态 Web 应用程序。
- Redis:内存数据结构存储,可用于数据库、缓存和消息代理。
5. 消息队列和流处理(Message Queues and Stream Processing)
- Apache Kafka:用于构建实时流数据管道和应用程序的平台。
- RabbitMQ:开源消息代理软件,支持多种消息队列协议。
6. 微服务架构(Microservices Architecture)
- Spring Cloud:基于 Spring Boot 的微服务框架。
- Docker 和 Kubernetes:用于容器化微服务部署和管理。
7. 分布式版本控制系统(Distributed Version Control Systems)
- Git:广泛使用的分布式版本控制系统,支持并行开发和分支合并。
8. 分布式协调服务(Distributed Coordination Services)
- Apache ZooKeeper:用于分布式应用的协调服务。
- etcd:CoreOS 开发的分布式键值存储,用于服务配置和服务发现。
9. 分布式共识算法(Distributed Consensus Algorithms)
- Paxos:经典的分布式一致性算法。
- Raft:易于理解和实现的一致性算法。
10. 事件驱动架构(Event-Driven Architecture, EDA)
- Event Sourcing:将所有状态变更作为一系列事件记录下来,便于审计和恢复。
- Event Bus:用于解耦不同组件之间的通信。
11. 服务网格(Service Mesh)
- Envoy:高性能的代理,用于服务间通信。
- Istio:用于连接、保护、控制和观察服务间通信的平台。
12. 分布式锁机制(Distributed Locking Mechanisms)
- Redlock:使用 Redis 实现的分布式锁。
- ZooKeeper:提供分布式锁功能。
13. 分布式计算框架(Distributed Computing Frameworks)
- Apache Spark:快速通用的大规模数据处理引擎。
- Apache Flink:用于流处理和批处理的框架。
14. 区块链技术(Blockchain Technology)
- 比特币(Bitcoin):第一个去中心化的数字货币。
- 以太坊(Ethereum):支持智能合约的区块链平台。
15. 云原生技术(Cloud-Native Technologies)
- 容器编排(Container Orchestration):如 Kubernetes,用于管理容器化应用。
- 无服务器架构(Serverless Architecture):如 AWS Lambda,无需管理服务器即可运行代码。
这些技术共同构成了现代分布式系统的基石,帮助开发者构建高效、可靠和可扩展的应用程序。
什么是CAP理论?
CAP理论是分布式系统中一个非常重要的概念,它由加州大学伯克利分校的Eric Brewer教授在2000年提出,并在2002年由Seth Gilbert和Nancy Lynch正式证明。CAP理论阐述了分布式系统在面临网络分区(Partition)的情况下,只能同时满足一致性(Consistency)、可用性(Availability)和分区容忍性(Partition Tolerance)中的两个属性。
CAP理论的三个属性:
-
一致性(Consistency):
- 所有节点在同一时间看到相同的数据。这意味着在一次写入之后,所有后续的读取操作都会返回最新的更新结果,而不会返回旧的结果。一致性保证了全局视图的一致性。
-
可用性(Availability):
- 每次请求无论是否成功都要返回一个响应(不一定是成功的响应)。这意味着系统应该总是能够回应客户端的请求,即使这个响应表明请求由于某种原因没有成功处理。
-
分区容忍性(Partition Tolerance):
- 即使存在网络分区(即一部分节点无法与其他节点通信),系统仍能正确地运作。在分布式系统中,网络分区是一个常见现象,因此系统必须能够容忍这种状况而不崩溃。
CAP理论的分类:
根据CAP理论,分布式系统可以分为以下几种类型:
-
CA 系统:
- 强调一致性和可用性,但不支持分区容忍性。这样的系统在没有网络分区的情况下可以提供一致性和可用性的保证。然而,在实际的分布式环境中,由于网络分区的可能性,这类系统并不常见。
-
CP 系统:
- 强调一致性和分区容忍性,但牺牲了可用性。在这种系统中,当网络分区发生时,系统会选择一致性而非可用性。例如,在分布式数据库中,如果一个节点无法与另一个节点通信,则它可能会拒绝执行某些写入操作,直到通信恢复正常为止。
-
AP 系统:
- 强调可用性和分区容忍性,但牺牲了一致性。这类系统在面对网络分区时,优先保证系统的可用性,即使这样做会导致临时的一致性问题。例如,某些NoSQL数据库采用最终一致性(eventual consistency)策略,即在某些情况下,系统可能会返回旧的结果,但最终会达到一致状态。
示意图:
CAP理论的实际应用:
- 关系型数据库(RDBMS):通常倾向于 CA 系统,因为它们在没有网络分区的情况下提供了强一致性和高可用性。
- NoSQL 数据库:通常倾向于 AP 系统,因为它们强调高可用性和分区容忍性,可以容忍临时的一致性损失。
- 分布式键值存储:可以根据实际需求选择 CP 或 AP 系统,如 Amazon Dynamo 采用了 AP 系统,而 Google Spanner 更倾向于 CA 系统。
总结:
CAP理论为我们提供了一个理解分布式系统在面对网络分区时所作的权衡的基础。在实际设计分布式系统时,需要根据具体的应用场景和需求来决定是优先保证一致性、可用性还是分区容忍性。没有一个系统能够同时完美地满足这三个属性,因此在设计时需要根据实际情况进行取舍。
什么是BASE理论?
BASE理论是对CAP理论的一种补充和扩展,尤其适用于那些需要在分布式系统中实现高可用性和最终一致性的场景。BASE理论的全称是“Basically Available, Soft state, Eventually consistent”,即“基本上可用、软状态、最终一致性”。
BASE理论的核心概念:
-
基本上可用(Basically Available):
- 系统必须保证始终可用,即客户端的每个操作(读或写)都可以在有限的时间内得到响应。这里的“基本上可用”意味着系统不需要在任何时候都能提供完美的可用性,而是指在大多数情况下,系统应该能够正常工作。
-
软状态(Soft State):
- 允许系统中的状态随着时间的变化而变化,不必立即达到一致状态。软状态意味着系统中的状态不是固定不变的,而是可以随时间和操作而变化的。
-
最终一致性(Eventually Consistent):
- 系统中的所有数据最终会在没有其他操作干扰的情况下达到一致状态。这意味着在某些操作(如写入)之后,系统中的数据可能会有一段时间处于不一致的状态,但最终所有节点的数据将会同步并达到一致。
BASE理论的应用场景:
BASE理论主要适用于那些对可用性要求较高,但可以接受一定程度的一致性延迟的分布式系统。在这些系统中,系统的设计重点在于确保高可用性,而不是绝对的一致性。以下是一些常见的应用场景:
-
NoSQL 数据库:
- 许多NoSQL数据库(如MongoDB、Cassandra)设计时就考虑了最终一致性。这些数据库通常在写入数据时不会立即保证所有副本的一致性,但会在后续的操作中逐步同步数据,从而达到最终一致性。
-
消息队列和事件驱动系统:
- 在消息队列(如Apache Kafka、RabbitMQ)中,消息的传递和处理可以容忍一定的延迟,但最终所有消息会被正确处理并达到一致状态。
-
微服务架构:
- 在微服务架构中,各个服务之间通过API进行通信,允许一定程度的数据不一致,但最终会通过同步机制确保数据的一致性。
-
分布式缓存:
- 在分布式缓存系统(如Redis、Memcached)中,数据可能会在短时间内不一致,但最终会通过刷新或其他机制达到一致。
BASE理论与CAP理论的关系:
CAP理论关注的是分布式系统在面对网络分区时的一致性、可用性和分区容忍性之间的权衡。BASE理论则更多地关注在分布式系统设计中如何平衡高可用性和一致性的问题。实际上,BASE理论更多地适用于AP系统,即那些强调可用性和分区容忍性,但可以接受一定程度的一致性延迟的系统。
总结:
BASE理论为设计分布式系统提供了一种实用的方法论,尤其是在需要高可用性和可扩展性的场景下。通过接受最终一致性,系统可以在分布式环境中更好地应对网络延迟、分区等问题,同时保证系统的高可用性。
什么是共识算法?
共识算法是在分布式系统中用于确保多个节点之间就某个值达成一致的算法。这些算法的目标是在存在网络分区和节点故障的情况下,确保所有诚实的节点最终能够就同一个值达成一致。共识算法在分布式系统中非常重要,特别是在分布式数据库、区块链技术等领域有着广泛的应用。
常见的共识算法:
-
两阶段提交(Two-Phase Commit, 2PC):
- 准备阶段(Prepare Phase):协调者询问所有参与者是否准备好提交事务。
- 提交或回滚阶段(Commit or Rollback Phase):如果所有参与者都准备好了,协调者通知所有参与者提交;如果有任何一个参与者未准备好,协调者通知所有参与者回滚。
-
三阶段提交(Three-Phase Commit, 3PC):
- 在2PC的基础上增加了预表决阶段,提高了系统的容错能力。
- 预表决阶段(Pre-prepare Phase):协调者询问参与者是否准备好开始事务。
- 准备阶段(Prepare Phase):协调者询问参与者是否准备好提交事务。
- 提交或回滚阶段(Commit or Rollback Phase):协调者根据参与者的反馈决定提交或回滚事务。
-
Paxos:
- 基础Paxos:包括提案阶段和接受阶段,确保所有节点就某个值达成一致。
- Multi-Paxos:允许在稳定领导者的情况下连续提交多个提案,提高了效率。
-
Raft:
- 一种易于理解和实现的共识算法,旨在简化Paxos的复杂度。
- 选举阶段(Election Phase):确定领导者。
- 心跳机制(Heartbeat Mechanism):领导者定期向跟随者发送心跳信息。
- 日志复制(Log Replication):领导者将日志条目复制到其他节点。
- 安全性(Safety):确保不会出现两个不同的值被分配给相同的序号。
- liveness:确保所有提议最终都会被采纳。
-
拜占庭将军问题(Byzantine Generals Problem):
- 解决在存在恶意节点的情况下如何达成共识的问题。
- PBFT(Practical Byzantine Fault Tolerance):一种具体的拜占庭容错算法,适用于已知节点数目的场景。
- PoW(Proof of Work):常用于区块链中,通过计算难题来达成共识。
- PoS(Proof of Stake):另一种区块链共识机制,基于持有代币的数量来达成共识。
-
SAGA 事务:
- 一种用于分布式事务处理的方法,通过补偿操作来恢复事务的完整性。
-
区块链共识算法:
- PoW(Proof of Work):通过计算难题来达成共识,常用于比特币等加密货币。
- PoS(Proof of Stake):基于持有代币的数量来达成共识。
- DPoS(Delegated Proof of Stake):委托投票机制,提高共识效率。
共识算法的特点:
-
安全性(Safety):
- 确保不会有两个不同的值被接受为同一个决定。
-
活性(Liveness):
- 确保系统在没有故障的情况下能够持续作出决定。
-
容错性(Fault Tolerance):
- 系统能够在部分节点失败的情况下继续运作。
-
分区容忍性(Partition Tolerance):
- 在网络分区的情况下,系统仍能正确地运作。
共识算法的选择:
选择合适的共识算法取决于具体的应用场景和需求。例如,在金融交易中,可能更重视安全性,而在实时数据处理中,可能更注重系统的活性和响应速度。
实际应用:
-
分布式数据库:
- 使用共识算法确保数据在多个节点之间的一致性。
-
区块链:
- 使用共识算法(如PoW、PoS)确保区块的顺序和有效性。
-
分布式系统:
- 使用共识算法确保集群中各个节点之间的协调一致。
共识算法是分布式系统的核心技术之一,对于构建可靠、安全和高效的分布式系统至关重要。
总结
这篇文章仅做参考之用, 希望读者看到后能对分布式技术有一个大致的了解, 如果还有其他不足的地方,可以在评论区指出, 后续会继续补充。
相关文章:

分布式技术概览
文章目录 分布式技术1. 分布式数据库(Distributed Databases)2. 分布式文件系统(Distributed File Systems)3. 分布式哈希表(Distributed Hash Tables, DHTs)4. 分布式缓存(Distributed Caching…...

动手学习RAG: moka-ai/m3e 模型微调deepspeed与对比学习
动手学习RAG: 向量模型动手学习RAG: moka-ai/m3e 模型微调deepspeed与对比学习动手学习RAG:迟交互模型colbert微调实践 bge-m3 1. 环境准备 pip install transformers pip install open-retrievals注意安装时是pip install open-retrievals,但调用时只…...

Nacos rce-0day漏洞复现(nacos 2.3.2)
Nacos rce-0day漏洞复现(nacos 2.3.2) NACOS是 一个开源的服务发现、配置管理和服务治理平台,属于阿里巴巴的一款开源产品。影像版本:nacos2.3.2或2.4.0版本指纹:fofa:app“NACOS” 从 Github 官方介绍文档可以看出国…...

yjs04——matplotlib的使用(多个坐标图)
1.多个坐标图与一个图的折线对比 1.引入包;字体(同) import matplotlib.pyplot as plt import random plt.rcParams[font.family] [SimHei] plt.rcParams[axes.unicode_minus] False 2.创建幕布 2.1建立图层幕布 一个图:plt.fig…...

MOS管和三极管有什么区别?
MOS管是基于金属-氧化物-半导体结构的场效应晶体管,它的控制电压作用于氧化物层,通过调节栅极电势来控制源漏电流。MOS管是FET中的一种,现主要用增强型MOS管,分为PMOS和NMOS。 MOS管的三个极分别是G(栅极),D(漏极)&…...

医院多参数空气质量监控和压差监测系统简介@卓振思众
在现代医院管理中,确保患者和医疗人员的健康与安全是首要任务。为实现这一目标,医院需要依赖高科技设施来维持最佳的环境条件。特别是,多参数空气质量监测系统和压差监测系统在这一方面发挥了不可替代的作用。【卓振思众】多参数空气质量监测…...

[项目实战]EOS多节点部署
文章总览:YuanDaiMa2048博客文章总览 EOS多节点部署 (一)环境设计(二)节点配置(三)区块信息同步(四)启动节点并验证同步EOS单节点的环境如何配置 (一…...

setImmediate() vs setTimeout() 在 JavaScript 中的区别
setImmediate() vs setTimeout() 在 JavaScript 中的区别 在 JavaScript 中,setImmediate() 和 setTimeout() 都用于调度任务,但它们的工作方式不同。 JavaScript 的异步特性 JavaScript 以其非阻塞、异步行为而闻名,尤其是在 Node.js 环境…...

【Java文件操作】文件系统操作文件内容操作
文件系统操作 常见API 在Java中,File类是用于文件和目录路径名的抽象表示。以下是一些常见的方法: 构造方法: File(String pathname):根据给定的路径创建一个File对象。File(String parent, String child):根据父路径…...

关于若依flowable的安装
有个项目要使用工作流功能,在网上看了flowable的各种资料,最后选择用若依RuoYi-Vue-Flowable这个项目来迁移整合。 一、下载项目代码: 官方项目地址:https://gitee.com/shenzhanwang/Ruoyi-flowable/ 二、新建数据库ÿ…...

猜数字困难版(1-10000)
小游戏,通过提示每次猜高或猜低以及每次猜中的位数,10次内猜中1-10000的一个数。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthde…...

ASPICE术语表
术语来源描述活动Automotive SPICE V4.0由利益相关方或参与方执行的任务用参数Automotive SPICE V4.0应用参数是包含了在系统或软件层级可被更改的数据的软件变量,他们影响系统或软件的行为和属性。应用参数的概念有两种表达方式:规范(分别包括变量名称、值域范围、…...

Knife4j:打造优雅的SpringBoot API文档
1. 为什么需要API文档? 在现代软件开发中,API文档的重要性不言而喻。一份清晰、准确、易于理解的API文档不仅能够提高开发效率,还能降低前后端沟通成本。今天,我们要介绍的Knife4j正是这样一款强大的API文档生成工具,它专为Spring Boot项目量身打造,让API文档的生成…...

数学建模笔记—— 多目标规划
数学建模笔记—— 多目标规划 多目标规划1. 模型原理1.1 多目标规划的一般形式1.2 多目标规划的解1.3 多目标规划的求解 2. 典型例题3. matlab代码实现 多目标规划 多目标规划是数学规划的一个分支。研究多于一个的目标函数在给定区域上的最优化。又称多目标最优化。通常记为 …...

【鸿蒙HarmonyOS NEXT】页面之间相互传递参数
【鸿蒙HarmonyOS NEXT】页面之间相互传递参数 一、环境说明二、页面之间相互传参 一、环境说明 DevEco Studio 版本: API版本:以12为主 二、页面之间相互传参 说明: 页面间的导航可以通过页面路由router模块来实现。页面路由模块根据页…...

SonicWall SSL VPN曝出高危漏洞,可能导致防火墙崩溃
近日,有黑客利用 SonicWall SonicOS 防火墙设备中的一个关键安全漏洞入侵受害者的网络。 这个不当访问控制漏洞被追踪为 CVE-2024-40766,影响到第 5 代、第 6 代和第 7 代防火墙。SonicWall于8月22日对其进行了修补,并警告称其只影响防火墙的…...

关于SAP标准委外(带料外协)采购订单信息
业务背景: 业务部门提出需要将售料外协方式变更为带料外协,带料外协实际业务存在一个委外订单存在多次发料,且每次发票需要进行齐套发料,不同批次的发料涉及物料替代。在半成品收货时需要进行对发料的组件进行扣料。 需求分析&a…...

SpringBoot整合WebSocket实现消息推送或聊天功能示例
最近在做一个功能,就是需要实时给用户推送消息,所以就需要用到 websocket springboot 接入 websocket 非常简单,只需要下面几个配置即可 pom 文件 <!-- spring-boot-web启动器 --><dependency><groupId>org.springframewo…...

使用 QEMU 模拟器运行 FreeRTOS 实时操作系统
文章目录 QEMU 官网QEMU 文档QEMU 简介QEMU 安装QEMU 命令启动虚拟机串口控制台监控命令行 FreeRTOS安装编译工具FreeRTOS 源码RISC-V-Qemu-virt_GCC 示例编译 RISC-V-Qemu-virt_GCC启动虚拟机运行 FreeRTOS QEMU 官网 https://www.qemu.org/ QEMU 文档 https://www.qemu.or…...

Oracle EBS中AR模块的财务流程概览
应收账款 (AR) 模块是Oracle E-Business Suite (EBS) 中另一个重要的财务管理模块,主要用于管理企业销售过程中的账款回收。下面是AR模块中的一些关键财务流程及其详细说明: 1. 销售订单管理 创建销售订单:当客户下单时,销售人员…...

Minitab 的直方图结果分析解释
Minitab 的直方图结果分析解释 步骤 1:评估关键特征 检查分布的尖峰和散布。评估样本数量对直方图外观的影响。 标识尖峰(即,条的最高聚类): 尖峰表示样本中最常见的值。评估样本的散布以了解数据的变异程度。例如…...

AgentRE:用智能体框架提升知识图谱构建效果,重点是开源!
发布时间:2024 年 09 月 13 日 Agent应用 AgentRE: An Agent-Based Framework for Navigating Complex Information Landscapes in Relation Extraction 在复杂场景中,关系抽取 (RE) 因关系类型多样和实体间关系模糊而挑战重重,影响了传统 “…...

力扣题解2390
大家好,欢迎来到无限大的频道。 今日继续给大家带来力扣题解。 题目描述(中等): 从字符串中移除星号 给你一个包含若干星号 * 的字符串 s 。 在一步操作中,你可以: 选中 s 中的一个星号。 移除星号…...

用Python获取PDF页面的大小、方向和旋转角度
在文档管理和自动化领域,了解PDF文档的内在属性(如页面大小、方向和旋转角度)对于确保一致的文档处理和布局保真度至关重要。这些属性在内容重用、归档以及PDF无缝集成到网络环境或其他数字工作流程中起着关键作用,因为它们直接影…...

【即时通讯】轮询方式实现
技术栈 LayUI、jQuery实现前端效果。django4.2、django-ninja实现后端接口。 代码仓 - 后端 代码仓 - 前端 实现功能 首次访问页面并发送消息时需要设置昵称发送内容为空时要提示用户不能发送空消息前端定时获取消息,然后展示在页面上。 效果展示 首次发送需要…...

Flock 明牌空投教程
FLock 旨在为人工智能构建一个去中心化的隐私保护解决方案。FLock提出了一项名为联合学习区块(简称 FLocks)的研究计划,该计划使用区块链作为数据持有者之间的协调平台来进行机器学习,同时数据保持本地和隐私。通过用区块链取代收…...

项目内部调用的远程接口开发
编写一个项目内部调用的远程接口通常是为了在分布式系统或者微服务架构中,实现各个服务之间的通信和数据交换。这样的远程接口专门用于服务之间的调用,而不是直接暴露给外部用户或前端。 项目内部的远程接口统一放在api工程 首先进入api编写接口&#x…...

影响IP代理池稳定性的因素有哪些?
IP代理池在提供网络服务时,稳定性是一项决定性指标。多个外部和内部因素可能会影响这个稳定性,因此深入理解这些影响因素,可以帮助优化IP代理池的性能与服务质量。 1. IP来源质量 纯净度与使用频次:优质的IP来源常常被描述为纯净…...

基于Prometheus和Grafana的现代服务器监控体系构建
构建一个基于 Prometheus 和 Grafana 的现代服务器监控体系涉及多个步骤。以下是大体的流程和步骤说明: 1. Prometheus 监控系统 Prometheus 是一个开源的系统监控和报警工具,专门设计用于抓取时间序列数据。 1.1 Prometheus 的安装 Docker 安装 Prom…...

原生 input 中的 “type=file“ 上传文件
目标:实现文件上传功能 原型图: HTML部分: <div class"invoice-item"><div class"invoice-title">增值税专用发票</div><div class"invoice-box"><el-form-item label"标准…...