摘要
当今许多云原生应用程序中,都会生成海量数据,这些数据用于链接高度分散的服务。Apache Kafka 提供的系统可流送大量消息,但接收这些消息的系统必须同样能够逐条处理记录并执行操作。
利用基于 OpenWhisk 而构建的事件驱动型架构,您可以编写相关功能来响应队列中的消息和执行逻辑以处理数据,或将数据发送至分布式架构中的其他系统。您只需为运行分析函数期间所使用的资源付费。此方法可使所处理的事务与使用的云资源密切匹配。
此方法可确保将事件驱动型无服务器架构应用于新的云原生应用程序,例如,那些支持海量数据流的消息处理的应用程序。您可即时开始处理大量消息,而无需担心是否有足够的服务器来管理大量数据。
概览
本 Code Pattern 举例说明了如何通过 Cloud Functions 来部署参考架构,执行代码以响应消息或处理数据记录流。当消息通过 Event Streams 服务(由 Apache Kafka 支持)到达后才会运行代码。运行代码后,函数实例将启动,并自动伸缩以匹配处理消息流所需的负载。
您可通过 Cloud Functions 用户界面或者使用自有系统上的命令行工具来部署此参考架构。
如果尚未注册 IBM Cloud 帐户,应进行注册,并访问 Cloud Functions 仪表板,浏览其他参考架构模板,根据需要下载命令行工具。
本 Code Pattern 中使用了以下组件:
- IBM Cloud Functions(由 Apache OpenWhisk 支持)
- IBM Event Streams(由 Apache Kafka 支持)
此应用程序会部署两个 IBM Cloud Functions(基于 Apache OpenWhisk),用于在 IBM Event Streams(基于 Apache Kafka)上读取和写入消息。此用例演示了如何处理数据服务和执行逻辑来响应消息事件。
含一条或多条数据记录的消息流会触发一个函数或操作。这些记录会按顺序传送到序列中的另一项操作,这种方法以声明方式将链中的操作链接在一起。第二项操作会对消息加以聚合,并向另一个主题发布转换后的汇总消息。
通过使用本 Code Pattern,您将学会如下技能:
- 无服务器计算:利用 Cloud Functions 部署参考架构,运行代码以响应消息。
- Kafka:处理数据服务和执行逻辑以响应消息事件。
流程
- 开发者模拟客户端发布应用程序,将新的 JSON 对象数组放置到 Apache Kafka 主题上。
- 此消息会触发一个触发器事件,用于侦听发送到该主题的消息。
- 此触发器通过规则映射到第一项操作,以便下载并解析消息数组。
- 随后,消息数组会被发送到序列中的另一项操作,以将数据聚合或缩减为一条消息。
- 第二项操作会向另一个 Event Streams 队列发布新消息,供其他应用程序处理。
操作说明
可以在 GitHub 存储库的 README.md 文件中找到本 Code Pattern 的详细技术步骤。
- 通过 Cloud Functions 控制台用户界面进行部署。
- 使用 wskdeploy 命令行工具进行部署。
- 使用其他部署方法。
本文翻译自:Deploy serverless functions that respond to messages and handle streams(2018-12-13)