【T112017-数据工程和技术分会场】高可用数据服务交易系统架构实践_19页_6mb
报告摘要
高可用数据服务交易系统架构实践总结
核心内容概述
本文档介绍了TalkingData研发总监何坤分享的高可用数据服务交易系统架构设计与实践,重点围绕服务调用、计量准确性、系统可用性、分布式部署、消息系统、监控与报警等核心内容展开,旨在通过架构优化提升系统的稳定性、效率与可扩展性。
主要观点与关键信息
1. 服务调用与业务逻辑
- 服务调用基本业务逻辑:系统通过Gateway进行服务调用,涉及API服务、人群数据服务、异步服务等。
- 计量要求:确保计量最终误差不高于0.01%,交易系统可用性不低于99.9%。
- 交易-计量闭环:支持高并发下的实时计量,确保数据准确性与一致性。
2. 异步计量机制
- 目的:减少系统耦合、降低数据库压力、应对高并发、易于扩展。
- 实现方式:通过消息队列与调用日志实现异步处理,将计算任务分层处理。
3. 架构演进
- 初始架构:实现基本功能,包括主数据集(ElasticSearch日志)、批处理层(MySQL按天存储)、速度层(Redis存储当天和昨天结果)等。
- 架构优化:提高效率,采用Lambda架构,将数据处理分为速度层、批处理层和服务层,支持多种计量指标按需取用。
- 服务降级与重算:在系统故障时,具备自动化故障转移与故障恢复机制,保障服务连续性。
4. 系统可用性目标
- 可用性要求:整体服务可用性不低于99.9%(每年不可用时间不超过9小时,每月不超过1小时)。
- 可用性保障策略:
- 事前:预防性设计,如资源限制、熔断机制等。
- 事中:自动化故障转移与故障感知,确保系统在异常时快速响应。
- 事后:故障恢复机制,减少系统停机时间。
5. 分布式部署与无状态设计
- 部署方式:所有服务通过Nginx调用,采用多upstream和轮询机制。
- 无状态设计:服务本身不保存状态,所有状态信息集中存储于MySQL、Redis等中央存储中。
- 跟踪机制:所有调用必须携带trackid,便于问题定位与故障恢复。
6. 降低关键路径复杂性与负载
- 关键路径:通过Gateway进行的服务调用。
- 优化策略:
- 专注于核心业务,减少复杂逻辑与数据依赖。
- 设置服务调用超时,避免外部服务故障影响整体系统。
7. 功能模块拆分与合并
- 目的:降低模块复杂度,清晰部署边界。
- 策略:根据实际需求适时拆分或合并功能模块,提升系统灵活性与可维护性。
8. 资源限制与容错机制
- 资源限制:避免无效或故障调用耗尽系统资源。
- 容错策略:
- 熔断机制:防止服务雪崩。
- 限制用户pending状态的请求数。
- 分服务SLA:为不同服务设定不同的服务等级协议。
- 独立适配器:提升系统的模块化与解耦能力。
9. 消息系统选择
- 关键需求:
- 数据可持久化。
- 支持订阅和队列两种方式。
- 高性能与水平扩展性。
- 推荐方案:选择符合上述需求的消息系统,以支持异步处理与系统扩展。
10. 监控与报警体系
- 监控体系分为白盒与黑盒:
- 白盒监控:
- 所有服务上线前必须具备基本监控与报警。
- 基础组件监控。
- 业务指标监控。
- 调用追踪系统。
- 黑盒监控:
- Nginx监控与报警。
- 探针与心跳监控。
- 外部可用性(端到端)监控与报警。
- 白盒监控:
11. 灰度发布与故障减少
- 灰度系统:用于减少更新带来的故障。
- 实现方式:
- 基于用户标识和Lua的Nginx分流。
- 与SCM系统配合,实现逐步上线。
- 与探针结合使用,监控新版本的稳定性。
总结
该架构实践围绕高可用性、高准确性、可扩展性和容错性展开,通过Lambda架构实现异步计量,利用消息系统与监控报警体系保障系统稳定性,结合灰度发布降低更新风险。整体设计强调模块化、解耦与自动化,为数据服务交易系统提供了可落地、可优化的架构方案。
展开完整摘要
试读结束,高清完整版pdf/doc/ppt,请点下载