【T112017-数据工程和技术分会场】高可用数据服务交易系统架构实践_20页_7mb
报告摘要
文档总结:高可用数据服务交易系统架构实践
核心内容
本文档围绕高可用数据服务交易系统架构实践展开,主要介绍了TalkingData研发总监何坤在构建数据服务交易系统过程中所采用的技术架构、设计原则和运维策略。系统目标是实现高可用性(不低于99.9%)和高计量准确性(最终误差不高于0.01%),以支持企业高效利用数据资源。
主要观点
- 服务调用与计量:系统支持多种计量指标的计算,按需取用,确保服务调用的准确性和实时性。
- 异步计量:通过异步处理机制,降低系统耦合、减轻数据库压力、应对高并发场景,并提高系统可扩展性。
- 架构演进:系统架构不断优化,从初始架构到更高效的版本,强调服务降级与重算机制,提升系统的稳定性和容错性。
- Lambda架构:系统采用Lambda架构,分为主数据集、批处理层、速度层和查询服务层,确保数据处理的实时性和准确性。
- 无状态设计:所有服务采用无状态设计,状态信息存储于中央存储(如MySQL、Redis),便于分布式部署和负载均衡。
- 关键路径优化:通过Gateway进行的服务调用是关键路径,需减少复杂逻辑和数据依赖,设置超时机制以防止外部服务故障影响系统。
- 资源限制与熔断机制:系统通过熔断机制、限制pending请求数、分服务SLA等方式控制资源使用,避免故障扩散。
- 消息系统:系统采用高性能、可扩展的消息系统,支持订阅和队列两种模式,实现数据的高效传递和处理。
- 监控与报警:系统采用白盒和黑盒监控方式,确保服务稳定性。所有服务上线前必须具备监控和报警机制,涵盖基础组件、业务指标、调用追踪和外部可用性监控。
- 灰度发布:通过灰度系统实现功能更新的平滑过渡,使用Nginx分流和SCM系统配合,结合探针实现故障快速定位与恢复。
关键信息
架构分层
- 主数据集:Elastic Search中的日志
- 批处理层结果:MySQL中按天存储的用量
- 速度层:Redis中的当天和昨天结果
- 服务层:按天进行预计算
- 查询服务:Metering模块
服务调用逻辑
- 所有调用必须携带
trackid,以便故障定位与问题追踪。 - 降低关键路径复杂性,专注于核心业务逻辑,减少不必要的依赖。
可用性与容错性
- 系统目标为99.9%可用性,即每年不可用时间不超过9小时,每月不超过1小时。
- 实现可用性的三个阶段:
- 事前:预防故障
- 事中:自动化故障转移、故障感知
- 事后:故障恢复机制
系统设计原则
- 分布式部署:通过Nginx多upstream和轮询机制实现负载均衡。
- 模块化设计:适时拆分和合并功能模块,降低模块复杂度,明确部署边界。
- 服务降级:在系统负载过高或部分服务不可用时,系统能够自动降级,确保核心服务正常运行。
技术选型与实践
- 消息系统:选择支持数据持久化、订阅与队列、高性能和水平扩展的消息系统。
- 监控体系:
- 白盒监控:包括服务上线前的监控、基础组件监控、业务指标监控、调用追踪系统。
- 黑盒监控:包括Nginx、探针、心跳和外部可用性监控。
- 灰度发布:通过基于用户标识和Lua的Nginx分流,结合SCM系统和探针,实现更新过程中的故障隔离与快速恢复。
总结
本文档系统地介绍了TalkingData在构建高可用数据服务交易系统过程中所采用的架构设计与实践。通过异步计量、Lambda架构、无状态服务、分布式部署、模块化设计、资源限制和灰度发布等策略,系统实现了高可用性和高计量准确性。同时,完善的监控与报警机制确保了系统的稳定运行,而服务调用的开-闭原则则增强了系统的灵活性和可维护性。这些实践为数据服务交易系统的构建提供了宝贵的参考。
展开完整摘要
试读结束,高清完整版pdf/doc/ppt,请点下载