方案概述
在大数据 etl 场景,将 kafka 中的消息流转到其他下游服务是很常见的场景,除了常规的消息流转外,很多场景还需要基于消息体内容做判断,然后决定下游服务做何种操作。
该方案实现了通过 kafka 中消息 key 的内容来判断应该对 mongodb 做增、删、改的哪种 dml 操作。
当 kafka 收到消息后,会自动触发函数计算中的函数,接收到消息,对消息内容做判断,然后再操作 mongodb。用户可以对提供的默认函数代码做修改,来满足更复杂的逻辑。
整体方案通过 cadt 可以一键拉起依赖的产品,并完成了大多数的配置,用户只需要到函数计算和 mongodb 控制台做少量配置即可。
方案优势
- 可以实现根据 kafka 消息的具体内容判断,该对 mongodb 做哪种 dml 操作,灵活性和可扩展性极高。
- 函数计算具有完善的日志系统、容错机制。可以清晰的看到对每条消息的处理日志,如果逻辑执行失败,也有重试机制和函数失败补偿机制,保证业务数据的完整性和一致性。
详情可参见文档:
https://help.aliyun.com/zh/fc/user-guide/retry-policy
https://help.aliyun.com/zh/fc/result-callback
方案限制: 目前源 kafka 只支持阿里云 kafka。
部署架构
架构说明
该架构图直观的表现出了该方案中使用到的网络(vpc,交换机,安全组)、kafka、函数计算 fc、mongodb 之间的关系。
网络架构:
- 整个方案会在某个 region 下,该示例使用的是北京 region
- 在 region 下会创建一个 vpc
- 在该 vpc 下会创建一个某可用区的交换机,该示例使用的是 g 可用区
- 在该 vpc 下会创建一个安全组
- kafka,fc,mongodb 都在该 vpc 的 g 可用区的交换机下
- fc 在与 vpc 其他资源互通时会使用到 vpc 下的安全组
产品介绍
专有网络 vpc(virtual private cloud): 是用户基于阿里云创建的自定义私有网络, 不同的专有网络之间二层逻辑隔离,用户可以在自己创建的专有网络内创建和管理云产品实例,比如 ecs、负载均衡、rds 等。
函数计算 fc(function compute): 函数计算是事件驱动的全托管计算服务。使用函数计算,您无需采购与管理服务器等基础设施,只需编写并上传代码或镜像。函数计算为您准备好计算资源,弹性地、可靠地运行任务,并提供日志查询、性能监控和报警等功能。
云消息队列 kafka 版: 云消息队列 kafka 版是阿里云提供的分布式、高吞吐、可扩展的消息队列服务。云消息队列 kafka 版广泛用于日志收集、监控数据聚合、流式数据处理、在线和离线分析等大数据领域,已成为大数据生态中不可或缺的部分。
云数据库 mongodb 版(apsaradb for mongodb): 完全兼容 mongodb 协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份恢复、性能优化等功能。
云速搭 cadt(cloud architect design tools): 是一款为上云应用提供自助式云架构管理的产品,显著地降低应用云上管理的难度和时间成本。本产品提供丰富的预制应用架构模板,同时也支持自助拖拽方式定义应用云上架构;支持较多阿里云服务的配置和管理。用户可以方便的对云上架构方案的成本、部署、运维、回收进行全生命周期的管理。
前置条件
在进行本文操作之前,您需要完成以下准备工作:
1)注册阿里云账号,并完成实名认证。您可以登录阿里云控制台,并前往实名认证页面 (https://account.console.aliyun.com/v2/#/authc/home) 查看是否完成实名认证。
2)购买按量付费资源,阿里云账户余额需要大于 100 元。考虑到部署后每小时会产生费用,建议账号内余额或者代金卷金额大于 200 元。您可以登录阿里云控制台,前往账户总览页面 (https://usercenter2.aliyun.com/home) 查看账户余额。
操作步骤
本实践可通过 cadt 官方模板快速拉起演示环境。
-
基础环境搭建
-
配置 mongodb
2.1. 设置白名单
2.2. 记录 mongodb 连接地址
2.3. 创建 mongodb 库和集合
2.4. 查询 mongodb 中的数据
-
配置函数计算 fc
3.1. 登录函数计算 fc 控制台
3.2. 配置函数环境变量
3.3. 配置函数实例生命周期回调
3.4. 配置函数的层
3.5. 配置函数代码
-
场景验证
4.1. 阿里云 kafka 模拟发送消息
4.2. 查询 mongodb 数据
4.3. 验证更多场景
-
一键释放资源
最佳实践全部内容,请点击此处查看。对方案和产品感兴趣的朋友,可以加入钉钉群交流(群号:31852400)。
往期文章:
云原生最佳实践系列 1:借助云速搭 cadt 如何实现 kafka 的性能压测?
发表评论