干货 | 携程机票数据仓库建设之路

干货 | 携程机票 React Native 整洁架构实践 作者简介任跃华, 携程机票前台软件工程师,从事机票android、react和react native技术栈相关研发工作。前言携程机票前台团队在使用 React Nati... 阅读详情

作者简介

 

华智,携程高级研发经理,现负责数据仓库技术架构、性能优化、数仓规范制定、数据模型设计以及数据应用开发。


一、前言

       

随着大数据技术的飞速发展,海量数据存储和计算的解决方案层出不穷,生产环境和大数据环境的交互日益密切。数据仓库作为海量数据落地和扭转的重要载体,承担着数据从生产环境到大数据环境、经由大数据环境计算处理回馈生产应用或支持决策的重要角色。

数据仓库的主题覆盖度、性能、易用性、可扩展性及数据质量都是衡量数据仓库解决方案好坏的重要指标。携程机票部门数据仓库也在不断摸索向着这些目标砥砺前行。

二、携程机票数据仓库技术栈

       

携程机票部门的数据仓库建设主要基于公司公共部门的大数据基础环境及数据调度平台,辅以部分自运维的开源存储引擎和基于开源组件二次开发的数据同步工具和运维工具。


2.1 数仓技术演进历史

机票部门的数据仓库源于2008年,当时生产环境数据落地主要使用SQLServer,数据仓库处理的目标数据体量不大,因此选择的SQLServer、Informaticas、Kettle这样的数据仓库方案,数据模型设计及报表定制使用SAP的商用平台BO。

随着机票业务系统的日益复杂,特别是生产环境引入消息中间件Kafka存储日志数据后,这套方案不可扩展性的缺点日趋明显,SQLServer的存储和计算能力很大程度上限制了数仓数据的主题覆盖度及性能。

       

在2014年,公司公共部门hadoop集群部署上线,并且引入了zeus调度平台及DataX同步工具,各个BU的数据仓库开始逐步转为基于Hive建设。

随着生产业务对实时监控、流量回放的需求增强,2016年机票部门部署了ElasticSearch,用以实时落地从Kafka同步的各个主流程服务日志,并通过统一的交易标识 (transactionID) 串联用户的一次完整的搜索、下单等行为,用于生产排障和流量回放。基于Hive的搜索性能一直被广泛诟病,特别是针对adhoc查询,机票部门在2016年调研并部署了Facebook开源的基于内存和Pipeline的查询引擎Presto,在没有享受到local数据获取的前提下,查询性能较原生的Hive引擎或者Spark引擎都有很大的提升。

在2018年,为了支持数仓数据的可视化运营平台,我们先后引入了ClickHouse和CrateDB作为后台的存储和查询引擎,特别是引入CrateDB以后,亿级体量的表四个维度的聚合耗时P90下降到了4秒。

实时数据处理技术也经过了Esper,Storm,Spark Streaming和Flink的迭代,并慢慢收敛到Flink。总体的技术演进历史如图1所示。

图1 数仓技术演进历史


2.2 当前技术栈

生产环境的数据可以大致分成三类:

1)业务数据,主要存储在MySQL和SQLServer,在这些关系型数据库里面有数以万计的表承接着各种生产服务的业务数据写入;

2)基础数据,也是存储在MySQL和SQLServer中,生产应用时一般会建立一层中心化缓存(如Redis)或者本地缓存;

3)日志数据,这类数据的特点是”append only”,对已经生成的数据不会有更新的操作,考虑到这类数据的高吞吐量,生产环境一般会用消息队列Kafka暂存;

数据仓库在实施数据同步时,会根据需求在实时、近实时以及T+1天等不同的频率执行数据同步,并且在大数据环境会用不同的载体承接不同频率同步过来的数据。在携程机票,实时同步的目标载体是ElasticSearch、CrateDB或者HBase,近实时(一般T+1小时)或者T+1天的目标载体是Hive。

从生产的数据载体来讲,主要包括DB和消息队列,他们的数据同步方案主要是:

1)生产DB到Hive的同步使用taobao开源的DataX,DataX由网站运营中心DP团队做了很多扩展开发,目前支持了多种数据源之间的数据同步。实时同步的场景主要在MySQL,使用DBA部门使用Canal解析并写入至消息队列的bin log。

2)从Kafka到Hive同步使用Camus,但是由于Camus的性能问题及消费记录和消费过期较难监控的问题,我们基于spark-sql-kafka开发了hamal,用于新建的Kafka到Hive的同步;Kafka实时同步的载体主要是ElasticSearch或者CrateDB,主要通过Flink实施。

生产数据被同步数据仓库后,会在数仓内完成数据清洗、信息整合、聚合计算等数据扭转流程,最终数据出仓导入到其它载体,这一系列的流程调度由公司DP团队运维的调度平台Zeus完成。

图2 携程机票数仓技术栈


2.3 实时 VS 离线

       

当前机票部门的数据仓库建设主要基于离线数据,一方面跟OTA销售产品不属于快消品相关,实时当前并不是刚需;另一方面实时处理场景下需要对计算资源、存储资源稳定性有更高的要求,保持数据一致性的代价很大。结合两方面,如果业务对实时需求不高就铺开做实时数仓,ROI很难达标。

当然,随着携程业务体量的增长,数据使用方对数据实时性要求日益增高,我们团队在2020年也会探索实时数据仓库的实施方案,并在一两个重要的数据主题域上先行试点。

三、数据仓库建设时涉及的共性问题


从团队职能上来讲,数据仓库团队需要负责从生产环境同步数据,在内部完成各层级的扭转计算,参与所有数仓流程及报表的运维,并基于数仓公共数据层和应用数据层数据开发相关应用。

3.1 数据同步

为了保持数仓数据主题覆盖足够全面,我们部门几乎将所有生产表和Kafka topics都同步到了Hive。以下会对同步最常见的两种场景DB->Hive和Kafka->Hive相关的实践做介绍。

3.1.1 DB同步到Hive

特别对生产表到Hive的同步,人工配置脚本的方式显然不能处理数以万计的表,因此需要一个自动化的同步方案。自动同步方案需要不仅仅要解决自动创建表脚本、创建对应的同步脚本问题,还需要在当表结构发生变更的时候,能够自动地感知表结构的变化,并且修改表结构和对应的同步脚本。

DB到Hive同步需要依赖两个数据源,1)Schema表的元数据信息,简单地包括各个字段信息、字段类型及主键定义;2)统计数据,它主要描述的是这个表在数据产生后有没有UPDATE和DELETE,这个决定着后续表的分区方式。

对业务型数据,一条数据生成后可能会有Update,因为在数仓里绝大部分场景需要用到数据的最新状态,所以我们会用一个分区存放所有历史数据的最新状态,这类表我们称之为历史切片表。对日志型数据,生产上数据产生后就不会有任何修改,我们会选择使用增量分区,每个分区会放当天的增量数据。对基础数据,整个表的数据增加、更新的频率都非常低,在ods层我们会每天全量同步一份到最新数据分区,并且会建立一个无分区的下游维表,将数据状态为有效的数据放到这张下游无分区维表中方便流程使用。

有了上述这两个数据源以后,我们会根据DBA Schema服务返回的元数据信息生成Hive表的脚本,并调度执行生成新的Hive表,再依据统计数据决定表的分区方式,进而生成对应新建表的同步脚本。当表创建或者表结构发生变更的时候,通过Schema服务两天输出的比对,我们会发现表结构的变更并映射到对应Hive表结构变更,同时可以改变对应的同步脚本。还有一种思路是可以通过DB发布系统的日志,获知每天DB创建、表创建以及表结构变化的增量。

图3 生产DB到Hive的同步

有一个坑点就是生产物理删除,如果出现了物理删除并且需要在Hive表里将删除数据识别并标记出来,当前可能需要通过全量同步的方法(考虑到从生产环境取数的代价,全量同步业务主键字段即可)解决,特别对SQLServer。因此可以跟生产的开发协商尽量使用逻辑删除,这样数仓对删除数据的感知代价会小很多。

3.1.2 Kafka同步到Hive

当前我们非实时同步主要在使用Linkedin很久以前的一个工具Camus,当然DP团队经过优化和企业本地化二次开发。但从使用感受来看,Camus会有如下可能不足的地方:

1)基于mapreduce,mapreduce在yarn集群上抢占资源的能力较弱,在资源竞争高峰会有同步变慢的情况发生;

2)消费记录存储在HDFS各个文件里,这样对消费记录的获取和针对消费过期的监控都很不方便;

3)Kafka Topic和Hive表的血缘关系获取不方便;

因此,我们基于spark-sql-kafka开发hamal,旨在解决如上痛点并且让配置更加的简洁。实现的过程大概包括,spark-sql-kafka会根据输入的任务从Kafka各个Partition消费出payload数据,对每条payload执行解编码、解压、magic code等操作,此时会将payload数据转化成json字符串,这个json字符串可以直接作为一个字段写入到Hive表里,也可以根据事先配置提取出对应的节点和值作为列和列值写入到Hive中,甚至可以通过Json的Schema推断出Hive表结构,并将Json各节点对应写到Hive表的各列中。

图4 转化为json字符串RDD代码示例

如果选择推断的模式,实现的时候可以使用sampling的方式,类似spark jsonRDD第二个参数,比如说0.001,Hamal可以直接指定采样数据条数,从Kafka topic中拉取出来,通过jsonRDD推断出StructType,并映射成Hive建表语句。对于建好的表,通过表的字段匹配获取数据,最终写入Hive表,最后会提交消费记录到一张Hive的ConsumerRecord表里面。这样其实基于这个表,我们既可以获取Kafka topic和Hive表的血缘,也可以方便地监控每次同步的数据量。

图5 Kafka同步至Hive Hamal设计

3.2 数仓分层

分层设计主要参考公司推行的数据规范,将数据仓库的流程分成了生产镜像层(ods)、中间层(edw)、公共数据层(cdm)及应用数据层(adm)。在中间层对ods表做异常数据剔除、NULL值处理、枚举值统一等数据清理和绑定维表信息工作,在公共数据层对中间层表进行进一步的整合,丰富表主题的维度和度量,一般以宽表的形式呈现,用以后续的adhoc取数、报表。

根据机票本身的业务特点,我们将数据划分成流量、产量、收益、生产KPI、业务考核等几大主题域,对数据表的业务分类和有效管理有重要意义。

图6 数仓分层设计


3.3 数据解析

数据在同步至数据ods层后,产品经常会提的一个需求是将ods层某个含报文字段的表按照字段设计展开,如果要支持此类需求,数据开发就需要了解生产上这个表各个字段含义及报文字段的契约定义,而这些对应表的写入开发非常熟悉。因此,为了提高整体的工作效率,我们开发了一套数据解析框架,对业务开发封装了大数据组件的API调用及相关参数调整,让业务开发更高效地完成熟悉的单条数据解析开发。

图7 数据解析框架


3.4 数仓运维工具

数据仓库拥有所有生产表的镜像表、数以万计的生产数据同步流程、数据扭转流程以及后续报表,对如此规模的数仓实体的管理和运维需要一个不断迭代的系统支持,从而可以大幅度提高数据工程师的效率。

我们根据数仓建设中遇到的一些费力度较高且需要重复做的操作,开发了一套运维工具集合,目前还在持续迭代中。运维工具集功能主要包括数据实体通用搜索,报表收件人批量变更,维表导入,Oncall录入,脚本模板生成,序列化与反序列化等等。工具开发难度不大,但对提高效率的帮助很大。


四、数据质量体系

对庞大的数据仓库实体建设完善的数据质量监控体系,光靠人工one by one设置检验规则是不够的,需要对几乎所有的实体建立相应的监控,并且不能给大数据集群带来很多额外的计算代价。当这样的覆盖面很广的监控完善后,配合着元数据信息,就有可能在故障的Root Cause点第一时间发现故障,并可以清晰地知晓故障的影响范围以及故障恢复的流程优先级调度。

因此,建立完善的数据质量体系需要完善元数据管理,建立轻量的覆盖面广的质量监控,并且对特别重要的流程,需要增加额外的业务相关校验。

4.1 元数据管理

在生产环境和大数据环境存在多种实体,这些实体包括应用、各类表(如SQLServer、MySQL、MongoDB的表等)、消息队列topic、ElasticSearch的index、Hive的表等等,这些实体相互关联,共同支撑着线上的系统,线下的分析。对这些信息的治理,实体的元数据管理至关重要。

在数仓体系中,元数据主要包含基础信息、血缘关系以及标签。基础信息跟数据表相关,具体包括表的字段、存储、分区类型等;血缘会涉及到各类的实体,表、流程、报表、邮件推送等,这些实体之间存在着上下游调用与被调用关系,成体系地管理好这些实体之间的关系,可以清晰地了解到数仓边界,使得对故障的Root Cause追溯以及该Root Cause带来的影响面评估非常便捷。标签是对实体的分类描述,如层级是属于哪一层,安全是否有涉密,重要等级,是否有非常重要的流程在上面,业务标签是属于订单、前端还是订后。


4.2 数据质量相关因素

数据质量的问题其实一般可以在流程执行的日志中看出端倪,因为人工排查故障的时候,除了常规通过SQL查询验证表的增量、业务主键、某些字段值是否正常,另外一个有效手段就是分析运行日志。

从运行日志中可以获取以下信息,流程的开始时间、截止时间流程执行时间、完成状态、每天增量的字节数、增量条数,引擎执行的参数,在用Spark或者MapReduce执行时消耗资源的情况等等一系列特征。通过对各类计算引擎产生日志的分析,可以获得各类引擎下记录日志数据的pattern,从而提取出相关的特征信息。遇到特殊的流程或者引擎,可以借用其他手段补齐特征数据,如用SQL,用Hadoop的命令。

图8 数据质量相关特征

这是我们简单的一个日志输出,第一张是Spark的执行日志,下面一张是MapReduce的执行日志。

图9 MR和Spark引擎执行日志示例

有了数据质量特征提取的逻辑,实时流程异常发现可以如下实施:我们可以将质量特征数据计算分成两块,一块是实时的针对单个流程日志的解析出相关特征,一块是离线的基于历史特征数据的统计。我们从消息队列中消费实时获取执行完成的流程id和actionid,通过运维团队提供的详情日志查询接口获取完整日志,通过特征解析逻辑,解析出实时的流程质量相关特征,匹配历史数据,应用规则。当满足异常规则,可以通过元数据信息中的血缘判断影响的范围,推送告警信息。

图10 实时流程异常监控实施方案

 

五、应用案例

 

携程作为平台方,对机票价格没有定价权,价格由产品提供方来提供。在每年航班计划换季的时候,产品提供方会有一小部分概率将价格录入错。错误的运价,特别是很低的错误运价会让航司或供应商蒙受超大的损失。本着公平交易的原则,携程作为销售平台,做了机票价格监控系统。上线至今,发现了数十起价格异常事件。

 

在生产的消息队列中,我们落地了用户查询返回的所有航班组合和价格信息,数据仓库完成近实时同步,将数据解析处理成异常价格相关特征集,每天的增量在百亿级别。我们从Kafka实时消费两类日志数据,一类是查询日志,一类是下单日志,建立匹配,建立规则集发现可疑的低价交易标识,并且进一步监控跟交易标识是否进入下单流程。当某个疑似异常特征带来的订单超过一定阈值时,系统会对这疑似异常特征对应的查询进行自动禁售。

图11 价格监控系统


六、小结

       

一套完整的数据仓库实施方案应该包括但不局限于上面介绍的数据同步方案、数据存储方案、数据规范、元数据建设、数据质量体系、运维工具等,每个实施团队应该根据面临的实际情况选择针对每个点的具体技术方案。

携程机票数据仓库团队也正朝着建设全面、规范、易用、高效、精准的数仓路上探索前行,当前在数据同步、数仓数据扭转以及出仓应用方面的实践方案还在随着需求的变化而迭代。接下来,我们团队会着重在数据仓库规范彻底落地以及实时数仓实施这些方向上努力。

致谢

数据仓库建设离不开各兄弟团队的大力支持和配合,感谢机票大数据基础架构团队和公司DP团队在机票数仓实践过程中提供的平台、工具、运维、接口方面的支持。

注:“携程技术”公众号后台回复“数据仓库”,可下载讲师分享PPT。

【推荐阅读】

 “携程技术”公众号

  分享,交流,成长

如何把DeepSeek这个奈斯工具接入到Pycharm里 DeepSeek接入到Pycharm中,提高编程效率,以及帮助解决遇到的问题。 阅读详情

相关推荐

Zynq 【SDK裸机开发之PS】——DDR的内存分配使用详解

Zynq如果跑操作系统的话,内存管理的工作都会交给系统来操作,但是如果是裸机的话,则需要自己对DDR3的内存进行管理。

shizhibuyi1234的博客 7376

【最佳实践】ClickHouse在携程酒店数仓的实践

一、背景 随着时间推移和业务的快速发展,携程酒店数据累积越来越多。目前流量日数据在3T左右,再加上各种订单、价、量、态等数据更是庞大。现有Hive(Spark引擎)执行速度虽然相对较快,但在国际化发展背景下,一些海外业务由于时差问题,数据需要比国内提前数小时完成,性能提升迫在眉睫。2020年初,我们开始研究ClickHouse在数据仓库领域应用。 本文将从技术方案选型、集成开发环境封装、ClickHouse代码优化技巧、异常问题处理、服务器故障处理五个方面分享ClickHouse实践,希望给关注同样问题

天天新知 4519

PWM调光原理详解:为什么你的LED灯会闪烁?从硬件到软件的避坑指南

本文深入解析PWM调光原理,揭示LED灯闪烁的根本原因,并提供从硬件设计到软件算法的全面解决方案。通过分析人眼视觉暂留机制和PWM参数设置,帮助开发者避免频闪问题,提升照明质量。特别适合电子工程师和智能家居开发者参考。

weixin_29189363的博客 291

干货 | 携程风控数据仓库实践

作者简介K.Y.Xing,携程高级开发经理,对高并发数据处理,流式数据处理,风控大数据处理,用户行为分析有浓厚兴趣。一、引言携程风控包括了酒店,机票,度假,火车票等所有携程产线的支付风...

携程技术 4438

h5支付不能打开支付宝 ios_iOS支付宝H5支付无法返回APP解决方案

本文前大段在讲楼主是如何解决这个问题的,以及中间遇到的麻烦。赶时间的同学可以直接看最后的 最终解决方案。在讨论之前,我们先看看官方文档上的一句话:注意:在iOS系统中,唤起支付宝App支付完成后,不会自动回到浏览器或商户APP。用户可手工切回到浏览器或商户APP;支付宝H5收银台会自动跳转回商户return_url指定的页面。what? 官方直接跟我们说GG了?楼主不甘心,还是想尝试一下。借鉴之前...

weixin_39864101的博客 854

实战指南:如何用Kamailio+FreeSWITCH搭建高并发企业通信系统(附配置模板)

本文提供了一份实战指南,详细介绍了如何利用Kamailio与FreeSWITCH构建高并发企业通信系统。通过将Kamailio作为高性能SIP信令平面处理路由与负载均衡,FreeSWITCH作为媒体与应用平面负责通话与业务逻辑,实现信令与媒体分离的电信级架构。文章深入解析了架构设计、核心配置、集群部署与性能优化,并附有配置模板,旨在帮助企业构建可水平扩展、高可用的通信解决方案。

dell8的博客 364

携程旅游数据采集

关注微信公众号:八爪鱼大数据(bazhauyudata) 携程网:携程是一个在线票务服务公司,创立于1999年,总部设在中国上海。携程旅行网拥有国内外六十余万家会员酒店可供预订,是中国领先的酒店预订服务中心。 数据说明:本文进行了携程网-深圳周末游-深圳周末短途游报价列表下的所有旅游信息采集。本文仅以“携程网-深圳周末游-深圳周末短途游报价列表下的所有旅游信息采集”为例。大家在实操...

网页爬虫与数据采集 · 八爪鱼 1万+

BOM 数据模型设计

字段名数据类型必填说明物料编码 (Part Number)字符串是唯一标识,主键。建议包含分类前缀(如STD-GEN-CUS-物料名称 (Part Name)字符串是版本 (Revision)字符串是如AB1.0,与编码组合构成唯一实例。状态 (Status)枚举是设计中(Draft)已发布(Released)已归档(Archived)已作废(Obsoleted)类型 (Type)枚举是专用件(Custom)借用件(Borrowed)通用件(Generic)标准件(Standard)

Davina_yu的博客 1756

干货 | StarRocks在携程大住宿智能数据平台的应用

作者简介Wenjun,携程资深软件工程师,负责大住宿数据智能平台的研发与维护,对于大数据领域技术有浓厚兴趣。一、平台现状大住宿数据智能平台(简称HData)是一个为携程大住宿业务提供数据...

携程技术 1639

Spring Authorization Server自定义密码模式:突破标准OAuth2限制,实现MFA与复杂业务集成

OAuth 2.0授权框架是构建现代应用安全体系的基石,其密码模式(Resource Owner Password Credentials Grant)提供了一种直接的资源所有者凭证交换令牌的机制。该模式的核心原理是客户端收集用户密码并直接向授权服务器请求访问令牌,适用于受信任的客户端场景。在技术价值上,它简化了某些传统应用的OAuth集成流程。然而,标准实现往往难以满足复杂的现实业务需求,例如需要集成多因素认证(MFA)、对接外部LDAP目录服务或执行自定义密码加密校验等场景。Spring Authori

weixin_34302561的博客 437

73、结合无人机进行rk3588oak-lite跟踪目标物体进行识别、跟踪

搭建仿真转换模型环境,主要python版本和我下载的rknn2的版本。截取shape节点,输出模型。so库也要对应转模型的whl。其中安装的whl版本。

sxj731533730 1623

干货 | 数据库压力降低90%,携程机票订单缓存系统实践

比如订单详情服务输出机票订单的状态、价格、航班、乘客等各类基本信息,同时依赖于机票的改签业务、退票业务、航变业务,支付业务等提供的查询服务,而这些独立的子业务与订单详情服务本身一样需要订单基本信息数据作为业务支撑。基于这种对用户行为的预测,我们考虑了在前一天的凌晨业务低峰阶段,将第二天业务高峰时间段内起飞的订单数据,提前加载到缓存中预热,将高峰时间段的一部分缓存构建压力,转移到了低峰时间段,既提高了低峰时间段的系统资源利用,也缓解了高峰时间段数据库的压力。缓存数据的总量保持平稳,同时避免了老旧数据的清理。

程序员高级码农的博客 1361

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

干货 | 为业务系统赋能,携程机票最终行程系统架构演进之路

作者简介Stephen,携程资深后端开发工程师,专注新技术挖掘,持续推动业务创新Scott ,携程资深研发经理,负责订单系统架构升级和优化一、背景携程机票订单系统是由多个业务子系统组成,包括出票、改签、航变等等,获取订单行程信息复杂度较高。例如:用户预订了一个包含了2个乘客的机票订单,该订单发生了航变,其中用户A选择了退票,用户B选择了改签。业务系统需要获得该订单最新的行程信息以及行程变化轨迹,以...

携程技术 1827

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

干货 | 高效联动,携程机票IVR可视化的探索和实践

作者简介Michael,携程全栈开发专家,追求以技术手段解决业务上的共性问题,构建灵活可配置且可视化的系统,提高生产力,降低沟通成本。CunShun,携程后端开发工程师,专注系统架构、稳定性、低代码等领域。一、引言IVR(交互式语音应答,Interactive Voice Response)系统,是指用户通过拨打指定号码后可以根据语音提示,收听和点送所需语音信息,并且协助完成自助服务。通过不断完善...

携程技术 2402

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

干货 | 支持10X增长,携程机票订单库Sharding实践

作者简介初八,携程资深研发经理,专注于订单后台系统架构优化工作;JefferyXin,携程高级后端开发专家,专注系统性能、业务架构等领域。一、背景随着机票订单业务的不断增长,当前订单处理系统的架构已经不能满足日益增长的业务需求,系统性能捉襟见肘,主要体现在以下方面:数据库CPU资源在业务高峰期经常达到50%以上,运行状况亮起了黄灯磁盘存储空间严重不足,需要经常清理磁盘...

携程技术 1691

干货 | CrateDb在携程机票BI的实践

作者简介Loredp,携程数据分析经理,关注大数据存储、大数据处理以及linux等领域。一、前言随着整个互联网流量红利进入末期,各大厂在着力吸引新客的同时,在既有客户群体的运营上也是煞...

携程技术 684

携程T7用637页PDF,解读十余热门技术领域,八场携程技术沙龙干货

前言 首先介绍一下携程的职级和薪资待遇 职类:T(技术)、P(业务)、M(市场) 等级划分: tips: 1.最近⼏年携程股票涨了很多倍,很多⽼员⼯股票都有⼏百万,不考虑在内。2.携程⼊职时可以⾃⼰选择股票和现⾦哪个更多,越晚进去的⼈股票越少。 ⽐如Q1拿 300股,Q2只能拿到 240股。 3.携程没有那么规范,会根据当前的股票价格去给股数,携程很多⽼员⼯出不来,就是因为⼿上股票太多了。 年终奖:12薪+2-4个⽉年终奖(普遍 1.5个⽉),年中+年末各发⼀次 绩效 5分制:a(4.2+

程序员高级码农 5059

干货 | 携程机票前台Trace系统的演进之路

作者简介Devin,携程资深后端开发工程师,专注 Java相关领域以及自动化相关的研究Hank,携程资深后端开发工程师,专注 java以及.net技术领域的研究一、前言随着微服务架构的普及,这些微服务构成了复杂的分布式网络,在支撑我们海量查询的同时,也带来了一些问题。机票前台预订主流程服务现在有若干个系统,每个系统部署了多个服务,每个服务又依赖多个API,用户通过终端设备...

携程技术 2407

干货 | 携程国际机票基础数据中台化:构建高效的数据管理和应用平台

作者简介空歌白石,携程资深研发经理,关注性能和效率提升、架构优化。团队热招岗位:后端开发本文概述了携程机票在基础数据处理所做的中台化设计方案。第一部分阐述了中台化的背景和面临的挑战,第二部分介绍了中台化设计的原则以及目标,第三部分详细介绍了中台化架构的关键技术实践,涉及数据一致性、数据时效性、系统健壮性、系统自动化等方面的探索和尝试,最后是整体的技术架构概览以及线上运行效果。希望以上内容能够对大家...

携程技术 1424
上一篇: 干货 | 携程无线APM升级实践
下一篇: 干货 | 携程机票RN复杂交互实践
携程技术
博客等级 码龄10年 3715粉丝 324原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值