TiDB 在携程 | 实时标签处理平台优化实践
业务挑战
在国际业务上,由于面临的市场多,产品和业务复杂多样,投放渠道多,引流费用高,因此需要对业务和产品做出更精细化的管理和优化,满足市场投放和运营需要,降低整体成本,提高运营效率与转化率。为此,携程专门研发了国际业务动态实时标签化处理平台(以下简称 CDP )。
携程旅行的数据具有来源广泛、形式多样、离线数据处理与在线数据处理兼有等特点,如何通过系统对这些数据进行采集、管理、加工,形成满足业务系统、运营、市场需求的数据和标签。处理好的数据需要立刻运用到业务系统、EMD、PUSH 等使用场景中,对数据处理系统的时效性、准确性、稳定性以及灵活性提出了更高要求。
为了解决以上问题,CDP 系统必须提升数据处理能力。过去传统方案是通过数仓进行 T+1 计算,再导入 ES 集群存储,前端通过传入查询条件,组装 ES 查询条件查询符合条件的数据。携程已经上线的标签有上百个,有查询使用的超过 50% ,由于该方案是离线计算,所以数据时效性差,依赖底层离线平台计算和 ES 索引,查询响应速度较慢。
解决方案
CDP 希望在数据处理的过程中能提升数据处理时效性,同时满足业务灵活性的要求,对于数据处理逻辑、数据更新逻辑,可以通过系统动态配置规则的方式来消费消息数据(Kafka 或 QMQ)动态更新标签,业务层只需关心数据筛选逻辑及条件查询。 根据业务需求,业务数据标签筛选主要分为两大场景:
-
实时触发场景。根据业务需要,配置动态规则,实时订阅业务系统的变更消息,筛选出满足动态规则条件的数据,通过消息的方式推送到下游业务方;
-
标签持久化场景。将业务系统的实时业务变更消息按照业务需要,加工成业务相关的特征数据,持久化存储到存储引擎。业务根据需要组装查询条件查询引擎数据,主要有 OLAP (分析类)与 OLTP (在线查询)两大类查询。
基于以上需求,CDP 流式数据采用类 Kappa 架构,标签持久化采用类 Lambda 架构,如下图所示:
其中,标签持久化场景需要解决业务标签的持久化存储、更新、查询服务,携程采用了 TiDB 来存储业务持久化的标签,并采用实时触发场景中的动态规则配置方式消费业务系统数据变更消息,保证业务持久化标签的时效性,通过 TiDB 对 OLTP 和 OLAP 不同场景查询特性的支持,来满足不同业务场景中访问业务特征数据的需要。
系统借鉴了 Lambda 数据处理架构的思想,新增数据根据来源不同分别发送到不同的通道中,历史全量数据通过数据批处理引擎(如 Spark)转换完,批量写入到数据持久化存储引擎 TiDB 中。增量数据业务应用以消息形式发送到 Kafka 或 QMQ 消息队列,将数据按照标签持久化的逻辑规则处理完成,增量写入到持久化存储引擎 TiDB,以此解决数据的时效性问题。
TiDB 同时具有两大持久化存储方式,一种是行存 TiKV ,可以支持 OLTP 场景,另一种是列存 TiFlash ,可以支持 OLAP 场景。TiDB 数据存储内部自动解决这两个引擎的数据同步问题,客户端查询根据自身需要选择查询方式。同时,TiDB 还能保障两种方式有着良好的隔离性,并兼顾数据强一致性,出色地解决了 HTAP 场景的隔离性及列存同步问题。
目前,CDP 已经与携程各个业务系统进行深度整合打通,为国际业务增长提供业务特征标签库的数据与服务支持。
应用价值
-
HTAP 混合负载:完美支撑 OLTP + OLAP 混合负载,简化 IT 系统架构,大幅提升业务的实时查询性能。
-
水平弹性扩展:摆脱 MySQL 分库分表难题,帮助携程随时根据业务增长情况进行水平弹性扩展。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
教你VUE中的filters过滤器2种用法
摘要:Vue.js 允许我们自定义过滤器,可被用于一些常见的文本格式化。 本文分享自华为云社区《VUE中的filters过滤器用法》,作者:小小张自由--张有博。 前言 Vue.js 允许我们自定义过滤器,可被用于一些常见的文本格式化。过滤器可以用在两个地方:双花括号({undefined{ }})插值和 v-bind 表达式 (后者从 2.1.0+ 开始支持)。过滤器应该被添加在 JavaScript 表达式的尾部,由“管道”符号指示。 <!-- 在双花括号中 --> <div>{{ message | capitalize }}</div> <!-- 在 `v-bind` 中 --> <div v-bind:id="rawId | formatId"></div> 全局过滤器 定义一个全局过滤器很简单,只需要导出一个方法即可。 使用的时候很简单,只需要在入口文件全局引入此过滤器即可,使用 Vue.filter(key, value) 引入。 比如,Java后端返回的时间戳精确到秒,而JS中的时间戳是用...
- 下一篇
espnet中的transformer和LSTM语言模型对比实验
摘要:本文以aishell为例,通过对比实验为大家介绍transformer和LSTM语言模型。 本文分享自华为云社区《espnet中的transformer和LSTM语言模型对比---以aishell为例》,作者: 可爱又积极 。 NLP特征提取器简介 - RNN和Transformer 近年来,深度学习在各个NLP任务中都取得了SOTA结果,我们先了解一下现阶段在自然语言处理领域最常用的特征抽取结构。 长短期记忆网络(LSTM) 传统RNN的做法是将所有知识全部提取出来,不作任何处理的输入到下一个时间步进行迭代。就像参加考试一样,如果希望事先把书本上的所有知识都记住,到了考试的时候,早期的知识恐怕已经被近期的知识完全覆盖了,提取不到长远时间步的信息是很正常的。而人类是这样做的吗?显然不是的,我们通常的做法是对知识有一个理性判断,重要的知识给予更高的权重,重点记忆,不那么重要的可能没多久就忘了,这样,才能在面对考试的时候有较好的发挥。在我看来,LSTM的结构更类似于人类对于知识的记忆方式。理解LSTM的关键就在于理解两个状态ct和at和内部的三个门机制: 图中我们可以看见,LSTM ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS关闭SELinux安全模块
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Linux系统CentOS6、CentOS7手动修改IP地址