解决方案背景
客户为中国Top3的手机厂商和互联网公司,海外业务全球分布(美洲、亚洲、欧洲、非洲等)。为满足各区域数据合规性要求,业务系统数据需在各洲独立存储,主要是结构化数据。业务场景需将海外业务数据与中国数据中心数据同步,不同场景实时性要求不同,主要为准实时(1分钟内)和每天或每月定期同步。具体场景包括国内售后CRM与海外售后CRM双向定时同步业务数据(订单、定价、促销策略等),以及国内服务CRM与海外服务CRM双向数据实时同步(订单数据实时或准实时同步)。
技术方案对比
对比了四种技术方案:云原生Serverless+消息服务、云原生数据ETL工具、云端VM/容器服务、数据库自带的数据同步功能。结论如下:
- 云原生Serverless(FaaS)+消息服务:实时或准实时,成本低,可靠性高,安全性高,性能/弹性强,运维成本低。
- 云原生数据ETL工具:以定时大批量数据同步为主,准实时,成本中等,可靠性、安全性、性能/弹性、运维成本中等。
- 云端VM或云原生容器服务:可实现实时或准实时,成本高,可靠性、安全性、性能/弹性、运维成本中等。
- 数据库自带的数据同步功能:实时或准实时,使用场景受限,成本低,可靠性、安全性、性能/弹性、运维成本中低。
技术挑战
- Serverless计算资源如何保证可靠扩展性和可靠性?
- Serverless冷启动问题:如何实现低延迟的计算实例启动?
- Serverless函数如何监控、诊断、链路追踪?
- 消息服务如何保障“高价值消息”不丢失不重复,先进先出?
- 消息队列异常消息如何处理?
- 消息队列如何实现并发处理机制?
消息服务特性使用场景
Azure提供多种消息服务:
- Azure Service Bus:支持多种消息传递模式(队列、主题和订阅),可靠性、安全性和可伸缩性高,适用于“高价值业务消息”传递场景。
- Azure Event Hub:大规模、高吞吐量,用于传输大量事件数据。
- Azure IoT Hub:专门为物联网应用程序设计的消息传递服务。
- HD Insight-Kafka:分布式流数据平台,适用于大规模流数据处理的场景。
方案架构设计
数据同步基于消息队列加Serverless架构实现准实时数据同步方案:
- 通过消息队列实现异步解耦。
- 基于Serverless FaaS架构,实现高可靠、高可扩展、低成本技术方案。
具体场景设计:
- 国内售后CRM - 海外售后CRM双向定时同步:使用Azure Data Factory(ETL工具)进行定时批量数据同步。
- 国内服务CRM - 海外服务CRM双向数据实时同步:使用Azure Functions + Azure Service Bus实现实时或准实时同步。
Function as a Service
- 让编写云应用变得简单,根据客户需求扩展功能。
- 使用C#、Node.js、F#、Python、Java等语言开发函数。
- 跨服务轻松安排事件驱动型任务,将函数公开为HTTP API端点。
- 无需基础架构管理,按实际使用量付费,自动缩放。
云原生消息服务Service Bus
- 高级功能:队列、主题、发布/订阅、HTTP、AMQP/WS。
- 架构目的:消息服务、应用解耦、负载均衡、发布订阅、安全控制、跨区federation、多可用区支持、异地灾备恢复、兼容行业标准、多语言SDK支持。
- 高级特性:会话支持、事务性支持、自动转发、死信队列(DLQ)、定时发送、消息延时、重复消息检测、消息过滤、出现空闲队列时自动删除。
消息服务特性
- 确保消息不丢失、不重复:Peek Lock方式确保消息不丢失,重复检测窗口机制确保消息不重复。
- 消息先进先出(FIFO):设置相同的Session ID实现FIFO特性。
- 通过死信队列处理异常消息:死信队列支持事务性操作。
- 消息并发处理机制:多种性能服务层级、Service Bus Partitioning、多客户端负载均衡、批量处理访问、消息预提取。
经验总结
- Serverless架构的优点:低成本、高可靠、高可扩展性。
- 云原生消息服务的优点:异步解耦、高并发、可靠性高。
- 设计全球数据同步方案时,需考虑业务场景的不同实时性要求,合理选择技术架构。
- 采用云原生Serverless和消息服务解决方案,可快速构建可靠的跨数据中心全球业务数据同步解决方案,具有高扩展性和高可靠性。
- 设计方案时,需考虑业务数据安全性和合规性,选择满足合规要求的云服务提供商。
- 实施方案时,需充分考虑监控、链路跟踪、异常数据处理机制,确保数据同步过程的可靠性。