2017-【数据工程和技术分会场】高可用数据服务交易系统架构实践_20页-7mb
报告摘要
文档总结:高可用数据服务交易系统架构实践
核心内容概述
本文档围绕高可用数据服务交易系统架构实践展开,主要介绍了TalkingData研发总监何坤分享的系统设计与优化经验。文档聚焦于如何构建一个高可用、高并发、低延迟的数据服务交易系统,涵盖服务调用逻辑、架构演进、Lambda架构、系统要求、资源限制、消息系统、监控与报警以及灰度发布等多个方面。
主要观点与关键信息
1. 服务调用基本业务逻辑
- 系统提供API服务、人群数据服务、异步服务等。
- 开放了Lookalike、情景感知、预测引擎、推荐引擎等人工智能服务。
- 降低数据应用场景的难度,帮助企业发现数据的深层价值。
2. 系统要求
- 计量最终误差要求:不高于 $0.01%$
- 交易系统可用性要求:不低于 $99.9%$(即每年不可用时间不超过9小时,每月不超过1小时)
- 关键要求:
- 计量准确无误
- 实现交易-计量闭环,支持高并发下实时计量
- 系统具备容错性
3. 异步计量
异步计量是系统架构中用于降低系统耦合、减轻数据库压力、应对高并发和实现扩展的重要手段。
- 优点包括:
- 减少系统耦合
- 降低数据库压力
- 应对高并发
- 易于扩展
4. 架构演进
系统架构经历了多个阶段的演进,以提高效率、增强可用性和降低复杂性。
- 初始架构:实现基本功能,如服务调用。
- 架构演进:引入服务降级与重算机制,提升系统鲁棒性。
5. Lambda架构
Lambda架构是一种典型的批处理与实时处理相结合的架构模型,适用于数据服务交易系统。
- 主数据集(不变层):使用ElasticSearch存储日志数据。
- 批处理层结果:使用MySQL按天存储用量数据。
- 速度层:使用Redis存储当天和昨天的实时视图数据。
- 服务层:按天进行预计算,提供服务。
- 查询服务:通过Metering模块实现数据查询。
6. 计算结果的开-闭原则
- 系统支持多种计量指标的计算,按需调用。
- 通过消息队列、调用日志、批处理层、主数据集、实时视图等模块实现灵活的计算与查询。
7. 系统可用性目标
系统需达到 $99.9%$ 的可用性,即每年不可用时间不超过9小时,每月不超过1小时。
- 事前:预防性措施,如资源限制、熔断机制等。
- 事中:自动化故障转移、故障感知。
- 事后:故障恢复机制。
8. 分布式部署与无状态设计
- 所有服务通过Nginx调用,采用多upstream和轮询机制。
- 服务无状态,状态信息保存在中央存储(如MySQL、Redis)中。
- 所有调用必须携带trackid,用于问题定位和故障恢复。
9. 降低关键路径复杂性与负载
- 关键路径是通过Gateway进行的服务调用。
- 系统设计应专注于核心业务,避免引入不必要的复杂逻辑与数据依赖。
- 所有调用需设置超时,防止外部服务故障影响整体系统。
10. 功能模块拆分与合并
- 拆分和合并功能模块有助于降低模块复杂度,明确部署边界。
- 提升系统的可维护性和可扩展性。
11. 资源限制机制
- 为防止资源耗尽,系统引入了多种资源限制机制。
- 包括:
- 熔断机制
- 限制用户处于pending状态的请求数
- 分服务SLA(服务等级协议)
- 独立适配器
12. 消息系统的选择
- 消息系统需满足以下要求:
- 数据可持久化
- 支持订阅和队列两种方式
- 高性能
- 具有水平扩展性
13. 监控与报警系统
- 白盒监控:
- 所有服务上线前必须配置基本监控与报警。
- 监控基础组件和业务指标。
- 使用调用追踪系统进行问题定位。
- 黑盒监控:
- Nginx监控与报警。
- 探针和心跳监控。
- 外部可用性(端到端)监控与报警。
14. 灰度发布与故障减少
- 通过灰度系统减少更新带来的故障。
- 使用基于用户标识和Lua的Nginx分流,配合SCM系统和探针,实现平滑过渡。
总结
本文档系统阐述了高可用数据服务交易系统的架构设计与优化策略,强调了异步处理、分布式部署、无状态服务、资源限制、监控报警等关键要素。通过Lambda架构、服务降级、灰度发布等手段,系统实现了高可用性、高并发处理能力和低延迟响应,为数据服务交易系统提供了可靠的实践参考。
展开完整摘要
试读结束,高清完整版pdf/doc/ppt,请点下载