Apache Kafka 不仅仅是一个消息传递代理。它有一个由不同组件组成的丰富生态系统。有用于导入和导出数据的连接器、不同的流处理库、模式注册表等等。在本次演讲中,Red Hat Jakub Scholz的高级首席软件工程师展示了如何使用Kafka从 Twitter 等社交网络读取数据、处理它们,并使用机器学习来分析它们——一切都在 Kubernetes 之上运行。
雅库布·舒尔茨:
所以我的名字是Jakub Scholz,我在 Red Hat 工作。实际上,我大部分时间都在从事 CNCF 项目,名为Strimzi,这就是在 Kubernetes 上运行 Apache Kafka。当然,这也是我将在今天的演讲中使用的内容。我希望你们所有人都知道和听说过 Apache Kafka。但我认为理解它不仅仅是一个消息传递代理非常重要。它是一个均匀的流媒体平台,它是一个由不同组件和工具组成的伟大生态系统。其中一些是 Apache Kafka 项目本身的一部分。但其他是第一方组件、集成和连接器等,它们都与 Kafka 很好地打包在一起,并且都可以一起使用。所以总的来说,Kafka 可以很容易地处理三个不同的领域。在处理数据方面。
它可以完成传递消息的基本消息传递工作,但它也可以存储消息,包括将它们存储为长期存储,特别是如果您使用诸如事件溯源之类的模式,您知道可以存储如果您愿意,他们的活动会持续多年。
但它也可以处理集成。所以它有这个称为 Kafka Connect API 的组件,它真正专注于通过将来自其他系统的消息导入 Kafka 或将它们从 Kafka 导出到其他一些系统来与其他系统集成。它还有自己的流处理库,称为 Kafka 流 API。你可以在那里做流处理,包括有状态的、操作的、关节的等等。所以它真的是一个非常非常强大的库。
在我今天的演讲中,我们将使用这些东西是,我们将使用 Kafka Connect 部分,以及来自另一个 Apache 项目的连接器:Apache Commons,它也是众所周知的,并提供了数百种不同的集成。使用 Apache Commons 的一种方式也是作为 Kafka Connect 中的连接器。所以我们将使用这个连接器连接到 Twitter API 并在 Twitter 上搜索一些推文。当我们发现符合我们标准的推文时,我们将选取三个,然后将它们作为消息传递给我们的 Kafka 代理。从那里,我们将使用我们的流处理应用程序来获取它,该应用程序将读取推文并使用深度 JAVA 学习库对它们进行一些情绪分析. 所以基本上,应用机器学习来判断消息的情绪,然后判断情绪是正面还是负面,然后它基本上会识别这些消息,并通过将它们发送回 Kafka 代理来自动转发它们,再次, Kafka Connect 会将其拾取并导出回 Twitter API。您将能够将它们视为推文。当然,因为我们在 Kubernetes Day 上发布数据,所以所有这些都将在 Kubernetes 之上运行。它将使用 Strimzi 运算符。
那么让我们来看看它是如何工作的,以及我们如何让它运行起来。如果您想参加此演示,您可以阅读一些内容并使用此标签 #BYOSMA 来构建您自己的社交媒体分析。如果你使用这个标签,情绪分析应用程序应该会自动提取并分析它,你可能会在这个演示中看到你的推文。
因此,让我们首先切换到命令行并检查我们已经运行的内容。正如你所看到的,我已经部署了所有东西以节省下载容器映像和启动东西的时间,但是我在这里运行的是 Kafka 集群,我在这里运行的是 Zookeeper 集群。这里我也有我的 Kafka Connect 服务器,这里是情感分析应用程序,它将分析推文。这里重要的部分是 Strimzi 运算符,如果您遵循运算符的工作方式和运算符模式,那么这就是真正运行和管理所有这些组件的内容,并且插入前面的讨论,您当然可以安装它也使用 OLM 和operatorhub.io。
现在,简单介绍一下operator是如何工作的,你基本上是创建像这样的自定义资源,在这里你指定整个Kafka资源,包括资源、Java配置监听器、安全性,你可以看到只是我的一个小部署家庭集群在这里。我还可以以跟踪或 Prometheus 指标的形式配置授权、身份验证、存储、可观察性,当您部署它时,操作员会负责其余的工作。因为基本上,我在这里展示的所有内容都是以声明方式完成的,并且可以使用诸如 GitOps 之类的东西来完成。您也可以对 Kafka Connect 执行完全相同的操作,因为 Kafka Connect 作为外部义务连接到 Kafka 代理,所以我首先必须创建这个 Kafka 用户,您可以使用它来进行身份验证,我可以指定授权规则。然后我可以指定 Kafka Connect 部署本身,在其中指定哪些连接器插件应加载到我的连接部署中。记住生态的东西和下载第三方插件,运营商会自动为我和这些插件组合一个新的容器镜像并自动部署。
然后我也可以部署实际的连接器。所以我创建了一个名为 Twitter 收件箱的主题。然后我创建了这个 Kafka 连接器,它将使用凭据连接到 Twitter API,然后它将在 Twitter 上搜索我提到的主题标签。每当发布灾难消息时,它会自动从 Twitter API 中删除,并将其作为消息发送到 Kafka 代理。我也有类似的传出消息连接器。所以直接找到它找到的消息,最后一块,我需要建立自己的社交媒体分析,这里是情绪分析,我再次创建一个 Kafka 用户。然后它只是常规的部署绑定,这使得 Kafka 流 API 有点特别,因为它不是一些复杂的框架,有一些工作人员和一些服务器。但它实际上只是一个 Java 库,您可以将其包含在您的应用程序中。所以就我而言,我正在使用Quarkus框架,但您可以使用纯 Java 等,您只需构建并部署它。
现在当它运行时,你可以回到你的浏览器,这是我的 Twitter 帐户,或者我的一个 Twitter 帐户,我可以在推特上发布一些关于 Kubernetes 数据的好消息。他们开始得很好,日程安排上充满了精彩的演讲。希望这足以赶上情绪分析。现在我必须添加技术来构建你自己的社交媒体分析,我现在可以发推文了。现在这个Jakubobot帐户,这是我的机器人帐户,我用来转发内容,如果我在此处按刷新,您将无法在此处看到我的推文。但是你可以看到其他各种推文,“Ricard”,我希望我发音正确,发了一年关于它的推文,它被确定为负面的。哦,那不好。看起来机器学习库可以使用更多的训练,因为我没有看到任何负面的东西。但是你可以看到它是如何转发这些推文的,然后它赶上了,所以这个是积极的,很棒。所以我们可以看到它是如何赶上不同的推文的,以及它是如何进行社交媒体分析的。
现在。没有太多时间详细介绍 Java 应用程序、进行分析以及所有 YAML 文件等,但您可以在此找到所有这些文件,第一个链接将您带到 Github 存储库所有的来源。如果你愿意,你甚至可以在家里自己尝试。感谢收看!