Logo
☆☆☆☆☆
0.0
Beginner
14h

分布式系统入门指南

单体应用的时代已经一去不复返。如今我们使用的大多数应用程序都过于复杂,无法采用这种架构。相反,那些看似单一整体的应用程序,实际上是由一系列相互协作但彼此独立的计算组件构成的。开发者不仅需要精通一两种编程语言,还应掌握分布式系统的基础知识,才能在这一领域取得成功。 本课程将带你了解什么是分布式系统,并深入探讨分布式系统特有的挑战。你将学习实现复制和分片等目标的常见架构模式。最后,你将研究两个流行的分布式系统:Apache Spark 和 Apache Druid。 通过本课程的学习,你将具备设计和开发分布式系统的能力,并能根据应用需求做出最优的设计与架构决策。

9 Lessons
Included in Subscription Plan
Personalized Learning
Powered by AI
分布式系统入门指南
单体应用的时代已经一去不复返。如今我们使用的大多数应用程序都过于复杂,无法采用这种架构。相反,那些看似单一整体的应用程序,实际上是由一系列相互协作但彼此独立的计算组件构成的。开发者不仅需要精通一两种编程语言,还应掌握分布式系统的基础知识,才能在这一领域取得成功。 本课程将带你了解什么是分布式系统,...

WHAT YOU'LL LEARN

掌握分布式系统的基本特性及其必要性

Content

9 Lessons • 0 Quizzes • 0 Challenges

简介
  1. 1

    欢迎来到本课程

  2. 2

    什么是分布式系统?

  3. 3

    从零开始的一个示例

  4. 4

    分布式系统的原理

  5. 5

    快速测验 #1:分布式系统的概念与意义

分布式系统为我们带来了哪些优势?
  1. 1

    容错性

  2. 2

    可靠性

  3. 3

    处理硬件和软件故障

  4. 4

    快速测验 #2:容错性与可靠性

  5. 5

    可用性

  6. 6

    实现可用性

  7. 7

    快速测验 #3:分布式系统中的可用性

  8. 8

    可扩展性

  9. 9

    分布式系统中的负载均衡

  10. 10

    负载均衡算法

  11. 11

    衡量负载和性能

  12. 12

    快速测验 #4:可扩展性与负载均衡器

  13. 13

    可维护性

  14. 14

    快速测验 #5:可维护性

分布式系统中的数据
  1. 1

    数据的崛起

  2. 2

    复制

  3. 3

    复制技术

  4. 4

    复制类型与节点故障

  5. 5

    快速测验 #6:复制

  6. 6

    数据分区

  7. 7

    分区技术

  8. 8

    一致性哈希

  9. 9

    快速测验 #7:分区

  10. 10

    一致性

  11. 11

    可调一致性

  12. 12

    快速测验 #8:一致性

  13. 13

    缓存

  14. 14

    缓存中的过期与驱逐策略

  15. 15

    缓存写入策略(concept)

  16. 16

    快速测验 #9:缓存

节点之间的通信
  1. 1

    通过数据库进行通信

  2. 2

    服务中的通信

  3. 3

    通过异步消息进行通信

  4. 4

    快速测验:节点之间的通信

大规模数据处理
  1. 1

    批处理

  2. 2

    MapReduce 在批处理中的应用

  3. 3

    流处理

  4. 4

    快速测验:大规模数据处理

分布式系统架构模式
  1. 1

    复制的负载均衡服务

  2. 2

    分片服务

  3. 3

    Lambda 架构

  4. 4

    命令查询职责分离(CQRS)

  5. 5

    快速测验:分布式系统架构模式

案例研究 1:Apache Spark
  1. 1

    大数据与Apache Spark

  2. 2

    Apache Spark 的架构 Apache Spark 是一个分布式计算框架,旨在高效处理大规模数据。其核心架构基于弹性分布式数据集(RDD,Resilient Distributed Dataset)模型,并支持多种计算模式,包括批处理、流处理、机器学习和图计算。 Spark 架构主要由以下几个关键组件构成: 1. **Driver Program(驱动程序)** 驱动程序是用户编写的 Spark 应用的入口点,负责将用户代码转换为任务(Tasks),并协调整个应用程序的执行。它包含以下功能: - 创建 SparkContext(用于与集群通信) - 将应用程序逻辑划分为阶段(Stages) - 调度任务到工作节点 - 监控执行状态并返回结果 2. **Cluster Manager(集群管理器)** 负责资源分配和调度,管理集群中的计算资源。Spark 支持多种集群管理器: - Standalone:Spark 自带的简单集群管理器 - Apache Mesos:通用资源管理框架 - YARN(Yet Another Resource Negotiator):Hadoop 生态中的资源管理器 - Kubernetes:容器化部署环境下的资源管理平台 3. **Worker Node(工作节点)** 工作节点是集群中的计算节点,运行在物理或虚拟机上。每个工作节点上启动一个 Executor 进程,负责执行具体的任务。 4. **Executor(执行器)** 每个工作节点上的执行器进程负责执行分配给它的任务。它具备以下功能: - 在内存中存储数据(如 RDD 分区) - 执行计算任务 - 向 Driver 报告状态和结果 - 通过本地缓存提高性能 5. **Spark Context(Spark 上下文)** 是 Spark 应用程序与集群交互的核心接口。它负责连接到集群管理器,获取资源,并创建 RDD、DataFrame 和 Dataset 等数据结构。 6. **RDD(弹性分布式数据集)** RDD 是 Spark 的基本数据抽象,代表一个不可变的、分区的数据集合。具有容错性,可通过血统(Lineage)信息重新计算丢失的数据。 7. **DAG Scheduler(有向无环图调度器)** 将用户提交的作业分解为多个阶段(Stages),根据依赖关系构建 DAG 图,然后将阶段划分成任务组(Task Sets)发送给 Executor 执行。 8. **Task Scheduler(任务调度器)** 负责将任务分发到各个 Executor 上执行,确保任务在合适的节点上运行。 9. **Storage Module(存储模块)** 管理数据的缓存和持久化,支持将 RDD 或 DataFrame 缓存在内存、磁盘或两者中,以提升后续访问效率。 10. **SQL and Streaming Engine(SQL 与流处理引擎)** Spark SQL 提供对结构化数据的查询能力;Structured Streaming 提供基于微批处理的流式数据处理机制。 整体架构特点: - **内存计算**:数据优先存储在内存中,显著提升性能。 - **容错性**:通过 RDD 的血统机制实现自动恢复。 - **统一编程模型**:支持多种计算范式(批处理、流处理、机器学习、图计算)共用同一套 API。 - **可扩展性**:可在数千个节点的集群上运行。 该架构使得 Spark 成为大数据处理领域广泛采用的主流框架。

案例研究 2:Apache Druid
  1. 1

    OLTP 和 OLAP 数据库

  2. 2

    Apache Druid 的高层架构

结论
  1. 1

    总结!

Certificate of Completion

Showcase your accomplishment by sharing your certificate of completion.

Course Author:Anonymous User

Reviews

Read reviews from students who have taken this course and share your own experience.

Reviews & Comments (0)