如何开始使用MongoDB Atlas和Confluent Cloud(附实例)

384 阅读9分钟

每年都有越来越多的应用程序利用公共云,并获得弹性规模和快速配置的好处。MongoDB和Confluent等有远见的公司已经接受了这一趋势,建立了基于云的解决方案,如MongoDB Atlas和Confluent Cloud,可以在所有三个主要的云提供商之间运行。

多年来,许多行业的公司都在利用Confluent和MongoDB来推动其业务发展。从保险业者获得客户360视图以获得个性化体验,到全球零售连锁店通过实时供应链应用优化物流,这些互联技术使建立具有事件驱动数据要求的应用变得更加容易。这种技术合作关系的最新迭代简化了以云为先的起步,最终提高了开发者在用运动中的数据构建现代云端应用时的生产力。

今天,MongoDB Atlas源和汇连接器在Confluent云中普遍可用。有了Confluent为Apache Kafka®提供的云原生服务和这些完全管理的连接器,设置你的MongoDB Atlas集成是很简单的。不需要安装Kafka Connect或Apache Kafka的MongoDB连接器,也不需要担心部署的扩展问题。所有的基础设施配置和管理都为你解决了,使你能够专注于为你带来最大价值的事情--快速开发和发布你的应用程序。

让我们通过一个简单的例子,从弗吉尼亚州的MongoDB集群中获取数据并将其写入爱尔兰的MongoDB集群中。我们将使用一个python应用程序将虚构的数据写入我们的源集群中。

第一步:设置Confluent云

首先,如果你还没有这样做,注册一个Confluent Cloud的免费试用版。然后,你可以使用《使用Confluent Cloud的Apache Kafka快速入门》教程来创建一个新的Kafka集群。一旦集群创建完毕,你需要启用出口IP,并复制IP地址列表。这个IP列表将被用作MongoDB Atlas的IP允许列表。要找到这个列表,选择 "Custer设置",然后选择 "网络 "标签。

保持这个选项卡的打开,以便将来参考:你将需要在步骤2中把这些IP地址复制到Atlas集群中。

第2步:设置源MongoDB Atlas集群

关于创建自己的MongoDB Atlas集群的详细指南,请参见Atlas入门教程。在本文中,我们使用us-east-1(弗吉尼亚)数据中心的AWS云创建了一个M10 MongoDB Atlas集群作为源,使用eu-west-1(爱尔兰)数据中心的AWS云创建一个M10 MongoDB Atlas集群作为汇。

一旦你的集群被创建,你将需要配置两个设置,以便进行连接:数据库访问和网络访问。

网络访问

你有两个选择,允许从Confluent Cloud到MongoDB Atlas的安全网络访问。你可以使用AWS PrivateLink,或者你可以通过只允许从Confluent Cloud到Atlas集群的特定IP连接来保证连接的安全性。在这篇文章中,我们涵盖了通过IP的安全保护。关于使用PrivateLink进行设置的信息,请阅读文章《在安全环境中使用完全管理的MongoDB Atlas连接器》。

要在MongoDB Atlas中接受通过特定IP地址的外部连接,请在网络访问菜单下启动 "IP访问列表 "条目对话框。在这里,你可以添加所有在步骤1中列出的Confluent Cloud的IP地址。

一旦所有来自Confluent Cloud的出口IP被添加,你就可以配置用于从Confluent Cloud连接到MongoDB Atlas的用户账户。在数据库访问菜单中配置用户认证。

数据库访问

您可以使用用户名/密码、证书或AWS身份和访问管理(IAM)认证方法对MongoDB Atlas进行认证。要创建一个将用于从Confluent Cloud连接的用户名和密码,请从数据库访问菜单中选择 "+添加新的数据库用户 "选项。

提供一个用户名和密码,并记下这个凭证,因为当你在Confluent Cloud中配置MongoDB Atlas源和汇连接器时,你将在步骤3和步骤4中需要它。

注意:在本文中,我们将创建一个凭证,并将其用于MongoDB Atlas源和MongoDB汇连接器。这是因为本文中使用的两个集群都来自同一个Atlas项目。

现在Atlas集群已经创建,Confluent Cloud的出口IP被添加到MongoDB Atlas允许列表中,并且数据库访问凭证已经定义,你可以在Confluent Cloud中配置MongoDB Atlas源和MongoDB Atlas汇连接器了。

第3步:配置Atlas源

现在你已经有两个集群在运行,你可以在Confluent Cloud中配置MongoDB Atlas连接器。要做到这一点,从菜单中选择 "连接器",并在过滤器文本框中输入 "MongoDB Atlas"。

注意:在配置MongoDB Atlas源和MongoDB Atlas汇时,你将需要Atlas集群的连接主机名。你可以从MongoDB连接字符串中获得这个主机名。一个简单的方法是,点击集群的 "连接 "按钮。

这将启动 "连接 "对话框。你可以选择任何一个连接选项。为了说明问题,如果你点击 "使用MongoDB Compass连接",你会看到以下内容。

上图中突出显示的部分是您在Confluent Cloud中配置源和汇连接器时将使用的连接主机名。

配置MongoDB Atlas源连接器

从Confluent Cloud连接器列表中选择 "MongoDbAtlasSource",会有几个配置选项。

"Kafka Cluster credentials "选择是基于API的认证,连接器将使用该认证与Kafka代理进行认证。你可以通过使用超链接生成一个新的API密钥和秘密。

回顾一下,连接主机是从MongoDB的连接字符串中获得的。关于如何找到它的细节在本节开头有描述。

"复制现有数据 "选择告诉连接器在初始启动时将源集合中的所有现有数据复制到所需主题中。在复制过程中发生的对数据的任何改变都会在复制完成后应用。

默认情况下,来自MongoDB源的消息会以字符串的形式发送到Kafka主题。该连接器支持以JSON和AVRO等格式输出消息。

回顾一下,MongoDB源连接器将变化流数据作为事件读取。变化流事件元数据被包裹在发送到Kafka主题的消息中。如果你只想要消息内容,你可以将 "仅发布完整的文件 "输出消息设置为 "true"。

注意:对于源连接器,任务的数量将总是 "1":否则你会有重复的数据被写入主题的风险,因为多个工作者将有效地从同一个变化流事件流中读取。为了扩展源,你可以创建多个源连接器,并定义一个流水线,只看集合的一部分。目前,Confluent Cloud中还没有这种定义管道的能力。

第四步:生成测试数据

在这一点上,你可以运行你的Python数据生成器应用程序,并开始在你的源头将数据插入到Stocks.StockData集合。这将导致连接器自动创建主题 "demo.Stocks.StockData"。要使用生成器,git-clone上述资源库中的stockgenmongo文件夹,并按如下方式启动数据生成。

python stockgen.py -c "<>"

其中,MongoDB连接的URL为从Atlas源集群中获得的完整连接字符串。一个连接字符串的例子如下:mongodb+srv://kafkauser:kafkapassword123@democluster.lkyil.mongodb.net

注意:你可能需要先用管道安装pymongo和dnspython。

如果你不希望使用这个数据生成器,你需要在配置MongoDB Atlas水槽之前先创建Kafka主题。您可以通过使用Confluent Cloud管理门户的 "主题 "选项卡中的 "添加主题 "对话框来完成此操作。

第5步:配置MongoDB Atlas水槽

从Confluent Cloud连接器列表中选择 "MongoDB Atlas Sink "将为您提供几个配置选项。

在你选择了从Kafka获取数据的主题后,你将会看到额外的配置选项。

因为你选择使用JSON在源中写入数据,你需要在输入消息格式中选择 "JSON"。Kafka API密钥是用于与Confluent Cloud进行连接器认证的API密钥和秘密。

回顾一下,你从MongoDB的连接字符串中获取连接主机。关于如何找到这个的细节,之前在第3步的开头有描述。

连接细节 "部分允许你定义行为,例如为每个主题消息创建一个新的文档,或根据消息中的一个值更新一个现有的文档。这些行为被称为文档ID和写模式策略。欲了解更多信息,请查看MongoDB Connector for Apache Kafka sink文档

如果水槽集合中的数据顺序并不重要,你可以旋转多个任务以获得写入性能的提高。

第6步:验证你的数据是否到达了汇点

您可以通过Atlas网络界面验证数据是否已经到达汇入点。通过 "收集 "按钮导航到收集的数据。

现在你的数据已经在Atlas中了,你可以利用Atlas平台的许多功能,如Atlas搜索、Atlas在线存档,以方便将数据转移到低成本的存储中,以及MongoDB图表,以实现点选式数据可视化。下面是使用从水槽集群产生的数据在大约一分钟内创建的图表。

总结

Apache Kafka和MongoDB有助于为许多战略业务用例提供动力,例如使传统的单体系统现代化、单一视图、批处理和事件驱动架构等,仅此而已。今天,Confluent和MongoDB Cloud以及MongoDB Atlas提供了完全可管理的解决方案,使你能够专注于你试图解决的业务问题,而不是在基础设施的配置和维护上打转。