
分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。
困难:
Kafka**:** 用于构建实时数据流应用程序,支持高吞吐量的分布式发布-订阅消息系统。
RabbitMQ**:** 开源的消息代理软件,实现了高级消息队列协议(AMQP),支持多种消息传递模式。
Redis**:** 高性能的键值存储系统,可用于缓存、消息队列等场景。
Hadoop:用于处理大规模数据的存储和分析。适用于离线批处理任务,适合处理大规模的静态数据
Spark:是一个快速、通用的大数据处理引擎,提供了高级的数据处理接口和支持多种计算模型。适用于迭代算法和复杂的数据处理任务
Flink:分布式流处理引擎,支持事件时间处理、状态管理等特性。
Impala:提供在 Hadoop 上进行交互式查询的能力
HDFS、hbase、kudu: 提供分布式文件系统支持,用于大规模数据存储、容错、可扩展性和高可用性
分布式事务管理
Atomikos、Seata:解决分布式系统中的事务问题,确保跨多个数据库、服务之间的事务一致性。
大数据存储技术:包括分布式文件系统(如 HDFS)、分布式数据库(如 Cassandra、HBase)和 NoSQL 数据库(如 MongoDB、Redis)等。
大数据处理技术:包括分布式计算框架(如 MapReduce、Spark)、流处理框架(如 Storm、Flink)和图处理框架(如 Giraph)等。
大数据分析技术:包括数据挖掘、机器学习、统计分析等方法,以及可视化工具(如 Tableau、PowerBI)等。
大数据采集技术:包括数据抓取技术、数据清洗技术、数据集成技术等。
大数据安全技术:包括数据加密、数据备份、数据恢复等,保证数据的安全性和可靠性。
分布式哈希表算法允许在节点之间分布存储和查找键值对,基本思想是将节点 ID 和键值对的键映射到一个相同的哈希空间中,基本目标是实现高效的键值对查找和存储,同时保证负载均衡和节点的动态加入和离开。
一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项。
一致性:所有节点在同一时间的数据完全一致。
可用性:服务在正常响应时间内一直可用
分区容错性:分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性或可用性的服务。
Raft 算法主要解决了分布式系统中领导者选举、日志复制、安全性和容错性等问题,为构建高可用性、一致性和容错性的分布式系统提供了一种可行的解决方案。