方案概述
在大数据 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 的性能压测?
云原生最佳实践系列 3:基于 SpringCloud 应用玩转 MSE
云原生最佳实践系列 4:基于 MSE 和 SAE 的微服务部署与压测
标签:函数,MongoDB,DML,Kafka,阿里,FC,VPC From: https://www.cnblogs.com/alisystemsoftware/p/18101855