⾼高性能,⾼高可⽤用,可扩展 在途⽜牛旅游⽹网的实际经验2014.4.26•⼤大数据!•搜索!•价格计算途⽜牛⼤大数据模型架构途⽜牛业务特点:变化⾮非常迅速,对数据的需求变化也⾮非常快;途⽜牛模型架构:数据驱动的模型架构,⾮非需求驱动的模型架构;源表1过渡表1多维模型1源表2过渡表2多维模型2•需求驱动模型架构:随需求变化快,模型的重构性低,⼤大数据的处理和计算差性能传统数据模型架构:需求驱动途⽜牛⼤大数据模型架构途⽜牛数据模型架构:数据驱动业务流数据流原始数据系统多维模型途⽜牛核⼼心数据模型特点:•途⽜牛核⼼心层是基于公司的业务流设计的,不随需求的变动⽽而变动;•需求的变动仅仅影响多维层模型;•模型架构复杂性低,重构性强;途⽜牛⼤大数据模型架构业务流落地成数据流案例途⽜牛⼤大数据平台演变!!!SQLSERVERBI订单系统⽤用户⾏行为系统产品系统……评论系统•数据架构:服务器架构伸缩性差,1+1的服务器搭建模式(1台数据仓库服务器+1台报表服务器);•数据存储:数据量不到1T,没有包含⽤用户⾏行为数据;•系统并发:并发⽐比较差,⼏几⼗十个⼈人的并发,系统就会卡;•数据处理:处理时间⻓长,每天数据处理需要8-10个⼩小时;•数据运⾏行:系统负荷⾼高,系统异常频发;⽼老数据平台SSRSSSASSSIS离线架构–物理架构Mysql集群⼤大数据查询服务群⾮非关系型数据源⾮非关系型数据源其他数据源数据源NameNodeNameNodeDataNodeDataNodeDataNode………DataNodeDataNodeRack1DataNodeDataNode……Rack2DataNodeDataNode……RackN⼤大数据处理集群•数据架构:可伸缩性的服务器架构,⽀支持多台服务器扩充,⺫⽬目前20多台服务器,集群可以扩张到上千台以上;!•数据存储:包含了⽤用户⾏行为数据,上百T的数据容量;!•数据并发:⽀支持上百⼈人同时在线并发;!•数据处理:离线数据处理时⻓长控制在5⼩小时以内,实时数据处理达到5秒以内;!•数据运⾏行:充分利⽤用各台服务器资源,每台服务器负荷均匀;离线架构-处理架构⾮非结构化数据结构化数据其他数据源数据层数据采集引擎数据检错引擎采集层调度HDFS分布式存储存储层Map/Reduce处理计算层ETL访问接⼝口推送接⼝口Oracle访问库访问层流量监控系统⽤用户分析系统精准营销系统BI分析系统其他数据应⽤用应⽤用层元数据管理•数据逻辑层次分明,控制系统的⾼高可⽤用性和⼤大数据处理能⼒力;•降低系统的数据耦合性,降低数据出错⻛风险,提供数据的可⽤用性;•结构化和⾮非结构化数据进⾏行⼤大数据平台,进⾏行快速的批量处理;离线架构-数据处理1.数据源系统繁多:由于各种历史缘故,途⽜牛底层数据系统繁多,共达60多个;!2.数据源跨平台:数据源系统分部在各不同的平台,linux、windows等;!3.数据源格式多样:有⽂文本数据、有各种关系型数据库(Oracle、Mysql、Sqlserver等);多数据系统采集处理能⼒力:通过跨平台的数据采集服务引擎海量数据计算能⼒力:1.⼤大数据平台拥有处理百T级别数据的能⼒力;!2.Hadoop分布式处理能⼒力,各个数据节点并发处理海量数据;实时架构•软硬件设计时避免SPOF;!•⾃自动化监控系统数据平台⾼高可⽤用性•采⽤用双NameNode,共享元数据库,当Active的NameNode异常后,系统能快速切换到Standby的NameNode,使得Standby的NameNode成Active,系统可以正常运⾏行;!•多硬盘的DataNode,每个DataBlock有三份,当数据损坏(⽐比如模块硬盘坏了或者某台服务器挂了),集群可以从同个Rack或者最近的Rack中拷⻉贝数据Block,系统可以正常运⾏行•从机制上保证系统的可⽤用性,尽量降低系统不可⽤用的时⻓长和损失;!•建⽴立Ganglia监控中⼼心,建⽴立实时报警机制,通过短信和邮件及时通知;◆Ganglia监控系统:Ganglia监控短信系统邮件系统数据平台⾼高可⽤用性搜索搜索⾼高频局部更新–现象•产品属性构成复杂!•数据来源众多•⼤大批量更新请求!•⽣生产使⽤用低版本Solr⽅方案⾼高频局部更新–⽅方案•根源:低版本Solr(4.0)不⽀支持局部更新!•原⽅方案!•查询Solr获得需更新的产品的完整copy•更新相应字段后重新提交新的copy!•改进⽅方案!•在⾼高性能KV存储中保存产品信息!•产品信息局部更新时从KV中获得当前完整产品数据!•更新相应字段后提交给Solr并更新KV!•优缺点!•优:每次更新减少⼀一次Solr查询,⼤大幅性能提升!•弱:⾮非Solr原⽣生⽀支持,在KV失效后仍会对Solr产⽣生压⼒力⾼高频局部更新–⽰示意图搜索前置解析–现象•搜索框仅⽀支持关键词查询!•重度依赖分词和关键词匹配!•相关性较差搜索前置解析–⽅方案•⺫⽬目的!•“⻢马尔代夫”仅呈现相关⺫⽬目的地产品!•前置解析!•分词优化!•实体识别!•词性分类!!•⾹香港杜莎夫⼈人蜡像馆-[⺫⽬目的地]⾹香港+[景点]杜莎夫⼈人蜡像馆搜索前置解析–⽰示意图索引数据缓冲–现象•到达即消费,⽆无记录!•数据来源多•推送频率⾼高•监控能⼒力弱•问题定位难度⼤大索引数据缓冲–⽅方案&⽰示意图•⽀支持Failover修复!•⽅方便定位!•合并后更新起价计算•内容1•内容2起价计算架构演进—V1价格变化主动计算推送搜索AppMQMasterPrice!!计算线程池Price!!计算线程池Price!!计算线程池Price!!计算线程池SlaverMQ搜索全程异步化使⽤用MQ事务机制主动计算多线程计算读写分离起价计算-我们需要更快响应•运维:你们的机器,经常CPU⾼高负载!!•业务:下周要引⼊入新的业务,价格计算没有问题吧?!•产品:调整价格都半天了,⺴⽹网站显⽰示的还是⽼老价格!!•DBA:你们单个表达到2亿级别了!!起价计算架构演进—V2价格变化被动并⾏行计算推送搜索AppMQMaster!!消息处理层!!SlaverMQ搜索!计算优先级!!Gearman并⾏行计算框架!!!MasterSlaver计算价格计算的优先级Gearman计算框架分库分表起价计算–经验教训•⽔水平扩展:系统在设计阶段就要考虑如何扩展!•容量规划:系统在设计阶段对⾃自⾝身服务能⼒力的规划!•监控报警:完善的监控报警机制,提前补漏!•系统解耦:不要在⾼高并发下压垮依赖系统谢谢!