欢迎来到天天文库
浏览记录
ID:5282936
大小:8.98 MB
页数:19页
时间:2017-12-07
《高可用数据服务交易系统架构实践-》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、高可用数据服务交易系统架构实践主讲人:TalkingData研发总监何坤SDMK=SmartDataMarketSDMK提供了API服务,人群数据服务,异步服务等内容;还开放了Lookalike,情景感知,预测引擎,推荐引擎等人工智能服务;降低数据应用场景的难度,帮助更多企业发现数据的深层价值。SDMK的功能模块BackEndPagePaymentWalletTDAccountReportAuditCenterConfig&AssistantHumanUIWebsiteChargingFrontEndPageLog(inElasticSearch
2、)OMCacheddataExternalAccount(inRedis)RelyAsyncConfig&GatewayCalculationStorageServiceMgmtFileServiceMessagePersistentdataQueueMetering(inMySQL)MachineUI(byKafka)ServiceGatewayAdaptor(TD&3rd)业务流程Ø服务调用基本业务逻辑用户GatewayAccountMeteringService验证身份和购买校验身份N鉴权通过检查配额查已用量调用N尚有余量调用服务数据服务推
3、送调用结果更新计量可用性挑战Ø要求•计量最终误差要求不高于0.01%•交易系统可用性要求不低于99.9%0.01%1%99.9%准确计量Ø要求1.计量准确无误2.交易-计量闭环,要求高并发下实时计量3.容错性故障恢复Ø异步计量1.减少系统耦合高并发2.降低数据库压力3.应对高并发4.易于扩展准确准确计量Ø初始架构:实现功能14UserGatewayService5LogStorage&2Calculation3Charging准确计量Ø架构演进:提高效率14UserGatewayService52LogStorage&MessagePermane
4、ntCalculationQueueStorage63MeteringCharging3Cache准确计量ØLambda消息队列调用日志•主数据集(不变层):ElasticSearch中的日志•批处理层结果:MySQL中按天存储的用量•速度层:Redis中的当天和昨天结果实时视图批处理层主数据集•服务层:按天进行预计算•查询服务:Metering模块实时视图速度层Ø计算结果的开-闭原则批处理批处理批处理视图视图视图实时视图多种计量指标同时计算,按需取用服务层用户X购买的Y服务还剩多少?准确计量Ø架构演进:服务降级与重算14UserGatewayS
5、ervice52LogStorageMessagePermanentQueueStorage63MeteringChargingCache3高可用性Ø挑战:可用性目标1级整体服务的高可用性,99.9%(不可用时间每年低于9个小时,每月低于1小时)1.【事前】预防2.【事中】自动化故障转移感知3.【事中】故障感知4.【事后】故障恢复故障转恢复移发生预防高可用性Ø分布式部署,无状态设计1.所有服务通过nginx调用,多upstream,轮询机制2.服务无状态,必要的状态保存在中央存储中(MySQL/Redis等)3.所有调用必须带trackid,以便
6、定位问题,缩短故障恢复时间Instance1NginxInstance2CallerNginxServiceInstancen高可用性Ø降低关键路径复杂性与负载对于SDMK来说,关键路径就是通过Gateway进行的服务调用1.专注于核心业务,尽量少加入无关的复杂逻辑与数据依赖2.调用其它服务均需设置超时,避免被外部服务故障影响Ø适时拆分和合并功能模块1.降低模块复杂度2.清晰部署边界高可用性Ø资源限制对资源的使用进行限制,避免无效或者故障调用耗尽资源1.熔断机制2.限制用户处于pending状态的请求数3.分服务SLA4.独立适配器用户A可服务S
7、1用资源服务S2SDMK可用资源用户B可用资源高可用性Ø使用消息系统消息系统的选择解耦1.数据可持久化2.支持订阅和队列两种方式3.高性能4.具有水平扩展性应用易Kafka缓冲扩展支持故障恢复高可用性Ø监控与报警白盒1.所有服务上线之前必须有基本监控与报警2.基础组件监控与报警3.业务指标监控与报警业务4.调用追踪系统追踪组件服务高可用性Ø监控与报警黑盒1.Nginx监控与报警2.探针和心跳监控3.外部可用性(端到端)监控与报警监控端到端SDMKNginx(内)用户服务探针Nginx(外)数据服务高可用性Ø减少更新带来的故障灰度系统的使用1.基于
8、用户标识和Lua的Nginx分流2.SCM系统的配合3.与探针结合使用灰度SDMK用户Nginx数据服务Lua探针SDMKTHANKS
此文档下载收益归作者所有