

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Managed Service for Apache Flink：工作方式
<a name="how-it-works"></a>

Managed Service for Apache Flink 是一项完全托管的 Amazon 服务，可让您使用 Apache Flink 应用程序来处理流数据。首先，您可以对 Apache Flink 应用程序进行编程，然后创建 Managed Service for Apache Flink 应用程序。

## 编程您的 Apache Flink 应用程序
<a name="how-it-works-programming"></a>

Apache Flink 应用程序是使用 Apache Flink 框架创建的 Java 或 Scala 应用程序。您可以在本地创作和构建 Apache Flink 应用程序。

应用程序主要使用 [DataStream API](https://nightlies.apache.org/flink/flink-docs-release-1.15/dev/datastream_api.html) 或[表 API](https://nightlies.apache.org/flink/flink-docs-release-1.15/dev/table/)。其他 Apache Flink 也 APIs 可供你使用，但它们在构建流媒体应用程序时不太常用。

两者的特点 APIs 如下：

### DataStream API
<a name="how-it-works-prog-datastream"></a>

Apache Flink DataStream API 编程模型基于两个组件：
+ **数据流：**连续数据记录流的结构化表示形式。
+ **转换操作符：**将一个或多个数据流作为输入，并生成一个或多个数据流以作为输出。

使用 DataStream API 创建的应用程序执行以下操作：
+ 从数据源（例如 Kinesis 流或 Amazon MSK 主题）读取数据。
+ 对数据进行转换，例如筛选、聚合或扩充。
+ 将转换后的数据写入数据接收器。

使用 DataStream API 的应用程序可以用 Java 或 Scala 编写，并且可以从 Kinesis 数据流、亚马逊 MSK 主题或自定义源中读取。

您的应用程序使用*连接器*处理数据。Apache Flink 使用以下连接器类型：
+ **来源**：用于读取外部数据的连接器。
+ **接收器**：用于写入外部位置的连接器。
+ **运算符**：用于处理应用程序内数据的连接器。

典型的应用程序包含至少一个具有源的数据流、一个具有一个或多个操作符的数据流以及至少一个数据接收器。

有关使用 DataStream API 的更多信息，请参阅[查看 DataStream API 组件](how-datastream.md)。

### 表 API
<a name="how-it-works-prog-table"></a>

Apache Flink DataStream 表 API 编程模型基于以下组件：
+ **表环境：**用于创建和托管一个或多个表的基础数据的接口。
+ **表：**提供对 SQL 表或视图的访问权限的对象。
+ **表来源：**用于从外部来源（例如 Amazon MSK 主题）读取数据。
+ **表函数：**用于转换数据的 SQL 查询或 API 调用。
+ **表接收器：**用于将数据写入 Amazon S3 桶等外部位置。

使用 DataStream 表 API 创建的应用程序执行以下操作：
+ 通过连接到 a `Table Source`来创建`TableEnvironment`。
+ 使用 SQL 查询或表 API 函数在`TableEnvironment`中创建表。
+ 使用表 API 或 SQL 对表运行查询
+ 使用表函数或 SQL 查询对查询结果进行转换。
+ 将查询或函数结果写入`Table Sink`.

使用表 API 的应用程序可以用 Java 或 Scala 编写，并且可以使用 API 调用或 SQL 查询来查询数据。

有关如何使用 表 API 的更多信息，请参阅[查看 Table API 组件](how-table.md)。

## 创建 Managed Service for Apache Flink 应用程序
<a name="how-it-works-app"></a>

适用于 Apache Flink 的托管 AWS 服务是一项服务，它可以创建用于托管 Apache Flink 应用程序的环境，并为其提供以下设置：
+ **[使用运行时属性](how-properties.md)：您可以为应用程序提供的**参数。无需重新编译应用程序代码即可更改这些参数。
+ **[实施容错能力](how-fault.md)**：您的应用程序如何从中断和重启中恢复。
+ **[Amazon Managed Service for Apache Flink 的日志记录和监控](monitoring-overview.md)**：您的应用程序如何将事件记录到 CloudWatch 日志。
+ **[实施应用程序扩展](how-scaling.md)**：您的应用程序如何配置计算资源。

您可以使用控制台或 AWS CLI创建和运行应用程序的 Managed Service for Apache Flink。要开始创建 Managed Service for Apache Flink 应用程序，请参阅[教程：开始使用 Apache Flink 托管服务中的 DataStream API](getting-started.md)。