一篇文章带你了解分布式

什么是分布式?

分布式是指计算机系统中组件分布在不同的计算机或者节点上,通过网络进行通讯和协作,共同完成某项任务或提供某种服务的架构模式。

分布式系统的特点包括:

  • 可扩展性
  • 高可用性
  • 容错性

能够提供系统的性能和可靠性,适用于大规模的数据处理和高并发。

在分布式系统中,不同的计算机或节点可以承担不同的角色,列如客户端、服务器、中间件、存储节点。这些节点之间通过网络进行通信和协作,共同完成某项任务或提供某种服务。为了实现高性能和高可靠性,分布式系统通常使用负载均衡、故障转移、数据复制等技术来优化系统性能和可靠性。

分布式系统典型应用包括分布式计算、分布式缓存、分布式消息队列,分布式数据库、分布式文件系统等。

分布式计算:

将大规模的数据处理分解成多个子任务,并将子任务分配给不同的计算机或节点进行并行计算,以提高计算机速度和效率

例如:

  1. MapReduce 模型:由Google提出,用于处理大规模数据集的并行计算模型。MapReduce 模型包括两个阶段,Map阶段和Reduce阶段。在Map阶段中,将大规模的数据集分成多个小块,每个小块由一个计算节点处理,生成中间结果;在Reduce阶段中,将多个计算节点的中间结果进行合并,得到最终结果。
  2. SPMD 模型:SPMD (Single Program Multiple Data) 模型指的是多个计算节点执行相同的程序,但是每个节点处理的数据不同。SPMD 模型通常用于并行计算,可以将大规模的数据集分成多个小块,由不同的计算节点进行并行处理。
  3. BSP 模型:BSP (Bulk Synchronous Parallel) 模型将分布式计算任务分为多个超级步,每个超级步包含计算阶段和同步阶段。在计算阶段中,每个计算节点独立计算,并将计算结果发送给其他节点。在同步阶段中,节点将接收到的计算结果进行合并,并更新全局状态。

分布式缓存:

可以将数据缓存在多个节点上,以提供数据读取的速度和可靠性。

例如:

  1. Redis:Redis 是一个基于内存的键值存储系统,支持多种数据结构,并提供了丰富的操作命令和扩展功能。Redis 支持分布式部署,可以实现数据的高可用和容错,支持主从复制和集群部署。
  2. Memcached:Memcached 是一个高性能的分布式内存缓存系统,支持多种数据结构和操作命令,可以有效地减轻数据库的负载压力。Memcached主要用于缓存读取操作,对于写操作需要使用其他数据库系统进行持久化存储。

分布式数据库:

可以将数据分片存储在不同的节点上,以提高数据读写性能和可扩展性。

例如:

  1. MySQL Cluster:MySQL Cluster 是一个基于 MySQL 的分布式数据库系统,支持数据分片和高可用性,可以实现数据的水平扩展和容错。
  2. MongoDB:MongoDB 是一个基于文档存储的分布式数据库系统,支持数据分片和高可用性,可以存储大量的非结构化数据,并提供了丰富的查询和聚合功能。
  3. Cassandra:Cassandra 是一个基于列存储的分布式数据库系统,支持数据分片和高可用性,可以存储大量的结构化和半结构化数据,并提供了分布式事务和数据复制等功能。
  4. HBase:HBase 是一个基于Hadoop 的分布式数据库系统,支持数据分片和高可用性,可以存储大量的半结构化和非结构化数据,适用于大数据分析和实时查询。
  5. CockroachDB:CockroachDB 是一个基于分布式事务的分布式数据库系统,支持数据分片和高可用性,可以实现数据的水平扩展和容错,具有强一致性和高可靠性。 这些分布式数据库系统都有各自的特点和优势,可以根据实际的业务需求和性能要求来选择合适的系统。

分布式文件系统:

可以将文件分散存储在多个节点上,以提高文件的读写性能和可靠性。

例如:

  1. Hadoop Distributed File System (HDFS):HDFS 是Hadoop 的分布式文件系统,支持大规模数据的存储和处理,适用于大数据分析和处理任务。
  2. GlusterFS:GlusterFS 是一个基于用户空间的分布式文件系统,支持多种协议和数据存储方式,可以实现数据的水平扩展和容错。
  3. Ceph:Ceph 是一个基于对象存储的分布式文件系统,支持数据的分布式存储和访问,可以实现数据的高可用和容错。
  4. Lustre:Lustre 是一个高性能的分布式文件系统,适用于超级计算机和高性能计算领域,支持大规模数据的存储和处理。
  5. Alibaba Cloud Object Storage Service (OSS):OSS 是阿里云提供的分布式对象存储服务,支持多种数据存储方式和数据访问协议,可以实现数据的高可用和容错。 这些分布式文件系统都有各自的特点和优势,可以根据实际的业务需求和性能要求来选择合适的系统。

分布式消息队列:

可以将消息分发到多个节点上,以实现分布式消息传递和协作,提高消息处理便捷性。

例如:

  1. Apache Kafka:一款高吞吐、低延迟的分布式消息队列,适合处理大量的数据和实时流式数据。Kafka采用发布-订阅模式,支持多个消费者组进行消费,同时支持数据持久化和数据备份等功能。
  2. RabbitMQ:一款开源的分布式消息队列,支持多种消息协议和编程语言,具有高可靠性、高可用性和高吞吐量等优点。RabbitMQ采用AMQP(高级消息队列协议)作为消息传输协议,支持多种消息模式,例如点对点模式和发布-订阅模式。
  3. Apache ActiveMQ:一款开源的分布式消息队列,支持多种消息协议和编程语言,包括JMS(Java消息服务)、STOMP(简单文本协议)和AMQP等。ActiveMQ具有高可用性和高可靠性,支持多种消息模式,适合处理异步消息和事件驱动的应用场景。
  4. RocketMQ:由阿里巴巴开源的分布式消息队列,具有高可用性、高吞吐量和低延迟等特点。RocketMQ采用发布-订阅模式和点对点模式,支持多个消费者组进行消费,同时支持数据持久化和数据备份等功能。
  5. Apache Pulsar:一款适用于云原生应用的分布式消息系统,具有高可用性、高可靠性和高可扩展性等优点。Pulsar采用发布-订阅模式和点对点模式,支持多个消费者组进行消费,同时支持数据持久化和数据备份等功能。 以上是常用的分布式消息队列,每个消息队列都有其特点和适用场景,选择合适的消息队列需要根据具体的业务需求和技术架构进行评估和选择。

**总结:**简单来说就是把我们系统拆分开成不同的组件,这一块负责什么,另外一块负责什么,然后通过网络进行通信和协作。组成一个,高可用(多个服务承担多个访问需求)、可扩展(在原来不变的基础上,随意加入其他模块)、容错率高(修改 A ,不会动到 B)的系统。

后续还会更新分布式系列的文章,这里大概了解啥是分布式,
后续是 RPC框架 —>ZooKeeper、nacos、eureka —> redis —>RabbitMQ 和 Kafka 等等。也就是我们分布式系统常用到的中间件。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值