导入
本课程涵盖哪些内容?
了解本课程涵盖的主题概览。
概述
数据处理是许多软件应用的核心组成部分。大多数工程师往往不会将其视为与编程分开的独立任务。然而,当我们以某种方式对信息进行转换时,例如生成报告、数据聚合或数据分析,实际上就是在进行数据处理。
得益于 Erlang 虚拟机(也称为 BEAM),所有使用 Elixir 的开发者都能享受到其卓越的并发模型,尤其适合长期运行的并发任务。因此,Elixir 提供了比其他语言更多样化的并发实现方式。
本课程旨在帮助你掌握 Elixir 生态系统中可用的各种并发工具。我们将学习最常用的模块和库,并快速上手使用。同时,你还将掌握一系列新技巧,帮助简化产品设计,提升代码性能,并增强应用在错误发生或负载增加时的容错能力。
课程结构
初识并发
让我们开启学习 Elixir 中并发机制的旅程。你将了解以下概念:
Task模块- 进程
- 超时机制
此外,我们还会介绍一些为后续章节打下基础的重要主题。
GenServer 与监督者
我们将深入学习 GenServer 和监督者:
- 通过构建一个简单的任务处理系统,学习如何创建和配置
GenServer进程。 - 介绍
Supervisor行为模式,探讨 Elixir 如何实现容错机制。
数据处理流水线
接下来进入数据处理流水线的学习:
- 学习背压机制,以及
GenStage的核心组件——生产者、消费者和生产者-消费者。 - 我们将动手实践,构建一个属于自己的网页爬虫。
使用 Flow 模块
我们可以用 Flow 实现多种操作:
- 在执行
map、filter、reduce等操作时,可以使用Flow替代GenStage。 - 学习如何在处理大规模数据集时使用
Flow,甚至将其集成到现有的GenStage数据处理流程中。
搭建数据摄入流水线
我们将使用 RabbitMQ 搭建一个数据摄入流水线,但这些技术同样适用于其他消息中间件,如 Amazon SQS、Apache Kafka 和 Google Cloud Pub/Sub。我们还将探讨 Broadway 提供的各种选项及其优势。
关于代码示例
要应用本课程中的所有技术,我们需要有可处理的数据或需要集成的服务。然而,下载大型数据集或注册第三方服务对于本课程来说既繁琐又不切实际。因此,所有项目都模拟真实场景,专注于实现细节,同时也便于复现和验证。