实时用户行为服务系统架构-日处理20亿数据

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

实时用户行为服务系统架构携程基础业务研发部陈清渠2017.03AGENDA•项目背景•挑战•架构•实时性保障•可用性保障•性能•部署保障2AGENDA•项目背景•挑战•架构•实时性保障•可用性保障•性能•部署保障3项目背景4场景:酒店有机票酒店的埋点数据,但同时想要火车票的,火车票想要酒店机票的内部多业务线没完全打通(?)Webservice处理流,存在天然缺陷数据格式杂乱潜在需求…5猜你喜欢动态广告用户画像用户意图浏览历史业务要求6实时请求粒度跨端AGENDA•项目背景•挑战•架构•实时性保障•可用性保障•性能•部署保障7挑战•大数据(日均BILLION级)•实时(毫秒级响应)•高可用•多BU(接入沟通成本高)•多数据格式(兼容/维护成本)8AGENDA•项目背景•挑战•架构•实时性保障•可用性保障•性能•部署保障9LOGICVIEW10APPH5OnlineClientDistributedMQStreamComputingDistributedCacheDBClusterServiceServerDataRTUBNon-RTUBCollectorServiceTECHSTACK11JavaKafkaStormRedisMysqlTomcatSpringAGENDA•项目背景•挑战•架构•实时性保障•可用性保障•性能•部署保障1213实时性保障问题:14•突发流量洪峰,怎么应对•出现失败数据,如何重试同时保证新数据处理•程序问题导致数据积压,如何快速消解•出现BUG,旧数据需要重处理,怎么快速修复同时保证新鲜数据STORM•STREAMCOMPUTING•SCALEOUT•ACK/FAIL,RETRY,IDEMPOTENT•RELEASE:UPLOAD,STOP,START(WITHOUTABTESTSUPPORT)15STORMARCHITECTURE16NimbusZookeeperZookeeperZookeeperSupervisorSupervisorSupervisorSupervisorSupervisorWorkerWorkerWorker[主控节点,用于提交任务、分配集群任务、集群监控][Nimbus和Supervisor的桥梁,公有数据的存放(心跳信息、集群状态、配置信息)。Nimbus将分配给supervisor的任务写入zk]负责接收Nimbus分配的任务、管理自己的Worker进程运行具体处理组件逻辑的进程STORM开发模型17TopologySpoutBoltABoltBBoltC1、Topology:整个业务逻辑2、Spout:数据流的入口3、Bolt:数据流的计算节点4、Tuple:数据流中的基本处理单元Tuple1Tuple2Tuple3PRODUCER-CONSUMER双队列设计18ProducerQueue1Queue2ConsumerPC-双队列设计--切换19ProducerQueue1Queue2Consumer20ProducerQueue1(fresh)Queue2(failed)WorkerconsumeerrorRetryWorkerretry实时行为双队列设计补偿重试策略21AckfailfailTimestamp5s*2(retry-1)retry=3retry++;failTimestamp=nownextstepNYNYRetrytopic22Producer积压数据消解backupWorkerMakeupWorkerconsumeAGENDA•项目背景•挑战•架构•实时性保障•可用性保障•性能•部署保障2324可用性保障问题:•系统是否有单点?•DB扩容/维护/故障怎么办?•REDIS维护升级补丁怎么办?•服务挂了如何快速恢复?如何尽量不影响下游应用?25全栈集群化26可用性取舍•CAPTHEOREM•CONSISTENCY•AVAILABILITY•PARTITIONTOLERANCE•BASE•BASICAVAILABLE•SOFTSTATE•EVENTUALCONSISTENCY27ConsistencyAvailabilityPartitiontolerance正常数据流程28StormkafkaMysqlRedisServiceClient系统降级--DB29StormkafkaMysqlRedisServiceClientKafkaretry系统降级--REDIS30StormkafkaMysqlRedisServiceClientKafkaretry服务可用性提升•服务熔断–NETFLIXHYSTRIX•CIRCUITBREAKERPATTERN•FALLBACK•限流•调用方ID•IP限流•服务限流•接口限流31CIRCUITBREAKERPATTERN32HalfOpenClosedOpenFailResetTimeoutSuccessSuccess||Fail(underthreshold)Fail(thresholdreached)FastfailingServiceCircuitBreakerBusinessProcessorRequestFallbackResponseOpen&!TimeoutFastfailingWorkflowStateDiagramAGENDA•项目背景•挑战•架构•实时性保障•可用性保障•性能•部署保障3334性能问题:•系统初始容量是1BITEMS/DAY,变成10B/DAY是否能扛住•作为基础服务如何保障性能,不拖后腿35DB分片&扩容36其它优化•REDIS二级缓存•并行处理37AGENDA•项目背景•挑战•架构•实时性保障•可用性保障•性能•部署保障38部署保障•KAFKAINDEX:STORM不支持灰度发布,通过记录KAFKA处理位置,恢复处理•BACKUPJOB3940谢谢携程基础业务研发部陈清渠联系邮箱:qq_chen@ctrip.com

1 / 41
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功