All in ECP,转转一站式ES数据清洗解决方案

news2024/12/23 6:00:16

1. 业务背景

  转转作为国内头部的循环经济产业公司,目前业务架构是中台模式。中台负责提供通用的交易能力,灵活快速响应业务需求,业务方负责前台探索创新,为用户提供有价值的服务。

  转转交易中台目前分为基础服务、订单、促销、天路、支付等方向,每个方向都拥有各自业务所需的ES索引,索引量级20+,数据量十亿以上。

  随着转转业务的快速增长,目前研发对于ES类需求的手动支撑已无法满足业务的快速迭代诉求。目前不仅缺乏技术沉淀和数据积累,而且上手门槛高且效率低。为了解决痛点,ECP(Elasticsearch Chain Planning)系统应用而生。

2. 现状与问题

2.1 现状概述

根据历史经验,目前索引重建需要如下步骤:

  • 1、确定需求方使用的索引
  • 2、找到该索引最新一次使用的模板,编辑模板
  • 3、根据模板创建一个新的索引(indexName_vn),其中n代表版本号
  • 4、修改该索引的写逻辑handler
  • 5、上线索引写服务
  • 6、配置新老索引双写
  • 7、找到或编写导出ID数据的(Shell或Python)脚本,执行并导出存量ID源(沙箱已被限制MySQL命令)
  • 8、上传到清洗机上(沙箱或者线上),调用索引写服务的接口,触发数据清洗
  • 9、修改索引读服务配置,增加对新字段的查询配置
  • 10、切换索引别名,将流量指向新索引
  • 11、停止双写
  • 12、删除旧索引

2.2 存在的问题

  • 1、人工操作脚本(Shell或Python)导出所有待清洗ID数据;目前沙箱已禁用MySQL命令(出于安全考虑);文本比较大,经常遇到内存不足或磁盘不足的情况。
  • 2、重建索引成本高,步骤多且效率低,订单索引重建一次大概需要5~7天的时间(Bulk方式)。
  • 3、清洗进度无感知,无法预估完成时间。
  • 4、无法断点续刷,失败后需要人工介入找到临界点后手动触发,费时费力。
  • 5、索引存量清洗与增量清洗未隔离,可能会影响线上正常业务。正常渠道产生的增量数据和刷索引产生的存量会放置到同一个阻塞队列中,然后处理器读取该阻塞队列,进行数据处理,若处理失败,会将该条记录写入到Fail文件中,一分钟后读取该文件再次放置到阻塞队列中处理,如下图:

3. 解决思路

    1. 抽象流程步骤,将索引刷新流程标准化&自动化&可视化,以提高效率和准确性。
    1. 系统赋能,释放人力资源,提供完备的任务管理能力,包括中断恢复、进度可视化、QPS限流和心跳检测等功能。
    1. 存量与增量隔离,利用架构部提供基于标签的流量路由能力,实现数据清洗存量数据与增量数据的环境隔离。
    1. 权限控制与数据沉淀,接入公司统一权限管理系统,实现数据源与脚本管理、ES集群与索引管理(含模板管理)、任务管理,及操作日志记录等。

4. 实战揭秘

4.1 什么是ECP系统?

ECP(Elasticsearch Chain Planning)系统,即一个基于Elasticsearch的数据传输链路计划管理平台。在转转技术体系内,致力于协助研发运营人员高效管理ES的索引新建、数据清洗、索引重建等任务计划,并提供可靠的一站式任务流解决方案,提升ES类需求的响应效率。

4.2 ECP系统有哪些功能?

4.2.1 任务管理

任务管理包含ES索引新建、数据清洗、索引重建等任务流。它提供了多个独立模块,包括索引新建删除、别名切换、数据清洗、索引预热、双写管理等,同时还拥有任务进度可视化、暂停和恢复、QPS限流、中断自动恢复等能力,此外还留存了任务过程数据,方便日后复盘和查看。

4.2.2 数据源和脚本管理

主要管理数据库基本信息和获取源数据的SQL脚本,供任务获取源数据使用。它具有数据库连接检测、SQL语法校验及格式化等辅助功能。

4.2.3 集群和索引管理

主要管理索引的基本信息,如索引的名称、别名、磁盘占用、所属集群、分片数量、健康状态、部门归属等。

4.2.4 索引模板管理

主要针对索引模板进行集中管理,避免散落丢失,索引模板通常用于索引新建操作。

4.3 ECP系统解决了什么问题?

4.3.1 解决了ES索引重建数据清洗任务流程中的卡点和难点

例如原来刷ES索引需要从数据库手动导出一份ID文件,并传输至ES写服务的服务器上,然后远程RPC触发开始执行,过程中需要人工值守,中断手动重试。还有编写导ID的Shell或Python脚本、服务器之间文件上传下载、远程RPC端口转发、源索引模板缺失、进度不可见、中断无感知等重重难点。不但上手门槛高效率低,事倍功半;而且操作不规范,与公司日益规范化进程相悖。这次ECP解决了这些问题,使整个任务操作流程简单、顺畅、高效、规范。

4.3.2 解决ES索引数据清洗环境耦合及速率问题

原先ES索引存量数据清洗与线上增量数据共用同一队列,当清洗速率过大时,会影响线上正常数据的消费时效,影响用户体验,例如用户已经支付成功了,但是看到的仍是未支付等问题。本次ECP利用架构提供的基于标签的流量路由能力将存量与增量进行了机器隔离,彻底解决该痛点。理论上在下游服务承受范围内,只要增加ES写服务机器,即可提升存量数据清洗的速率。

4.3.3 解决索引、模板、脚本分散导致的需求响应低效问题

原先的索引、模板、脚本散落在各个角落,每次需求过来需要翻找上次需求使用的脚本和模板,由于人员的流动,经常找不见旧的脚本或模板,而需要研发重新造轮子。这样不但耗费时间精力,需求响应慢,业务感知较差;而且没有技术和数据的沉淀,缺乏系统性的持续迭代,进而提高效率。本次ECP将这些收拢起来,便于日后持续提效。

4.4 名词解释

4.4.1 任务

任务指为了完成某个目标而建立的活动或工作。具有目标明确、时间限制、进度追踪等特性。ECP系统中的任务通常有存量ID清洗任务,存量文件清洗任务,索引构建任务等。

4.4.2 索引簇()和索引

索引簇是索引的抽象,索引簇定义了索引的唯一标识、模板、属性等,但没有具体的实现,类似于Java中的接口或类;而索引是索引簇的实例。例如:在订单列表场景中,“我卖出的”订单列表索引簇(唯一标识是:order_list),实际索引实例为(order_list_v2),假设业务需要新增一个索引字段,那么我们会新建索引实例(order_list_v3),这里v2和v3索引都属于索引簇(order_list)的实例。

4.4.3 数据源

即数据的来源,在ECP中,分为ID源文本源MySQL源

4.4.4 脚本

即MySQL源和SQL脚本的组合,可以从数据库中读取源数据。

4.5 整体设计

4.6 系统演示

4.6.1 新建任务

4.6.2 任务执行

5. 结语

5.1 总结

总的来说,ECP系统是一个基于Elasticsearch的数据传输链路计划管理平台,致力于为用户提供更加高效、便捷的数据清洗解决方案。我们会持续迭代系统的功能,以满足不断变化的业务需求和用户期望。

5.2 规划

目前ECP系统v1.0版本上线不久,仍处于团队内测阶段,索引刷新类需求提效已初露锋芒。接下来我们将持续完善和打磨,并计划在未来增加更多实用的功能。例如,清洗任务定时执行、reindex支持、别名切换回滚以及数据一致性校验等功能,这些功能将使日常的ES数据清洗工作更加高效便捷。我们非常感谢您的支持和关注,敬请期待!

5.3 致谢

在此感谢搭档@闫展同学的辛勤付出和不懈努力,也要感谢交易团队其它同学在此期间的任务分担,以及转转FE的低代码平台,ECP系统的顺利上线离不开团队成员间的密切合作和相互支持。期待未来我们能走得更远,推动ECP系统茁壮成长。


关于作者

郭世杰,转转交易营销技术部研发工程师,主要负责订单方向的研发工作。在代码和人生中,拥抱变化,勇于面对挑战,追求卓越。


转转研发中心及业界小伙伴们的技术学习交流平台,定期分享一线的实战经验及业界前沿的技术话题。

关注公众号「转转技术」(综合性)、「大转转FE」(专注于FE)、「转转QA」(专注于QA),更多干货实践,欢迎交流分享~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/571103.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《深度思维》跨越式*

参考: https://www.zhihu.com/tardis/zm/art/410244111?source_id1005 从思维的技术到思维的格局,再到专注努力与漫长人生中坚忍的精神图腾,作者通过方法理论与案例相结合,介绍了深度思思维的学习方法。 深度思维简介 拥有较长的…

手机一开,说办就办!指尖上的“数字江西”

数字江西科技有限公司(下简称“数字江西”)是经省委省政府同意,由江西省信息中心(大数据中心)管理的国有控股合资公司,于2020年3月2日成立,是江西省人民政府的重要实践,也是江西省委…

opencv_c++学习(二十三)

一、点拟合操作 拟合含义如上图,即为通过已知点去拟合一条直线或者一个多边形。 直线拟合函数: fitLine(lnputArray points, OutputArray line, int distType, double param, double reps, double aeps)points:输入待拟合直线的2D或者3D点集。 line:输…

【2023 · CANN训练营第一季】MindSpore模型快速调优攻略 第二章——MindSpore调试调优

1.生态迁移 生态迁移工具使用示例 生态迁移工具技术方案 不同框架间模型定义前端表达差别巨大(相同算子的API技术难点 、 算子功能、模型构建方式差别较大); 对于同一框架,不管前端表达差异如何,最终对应的计算 图是相似的。因此提出&#x…

node.js+vue房屋租赁管理系统z0g8w

本系统主要包括以下功能模块:租户、出租人、房源信息、预约看房、合同信息等模块。 其中设计的主要功能如下: (1)用户的注册和登录本系统,登录到系统的首页。 (2)用户可以发布自己的房源信息…

快速了解iptables

初识 iptables是什么? iptables是一个在Linux操作系统上使用的防火墙工具,它可以用于配置和管理网络数据包的过滤、转发和修改等操作。 过滤数据包:iptables可以根据不同的规则过滤网络数据包,例如根据源IP地址、目标IP地址、端…

如何在华为OD机试中获得满分?Java实现【不含101的数】一文详解!

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: Java华为OD机试真题(2022&2023) 文章目录 1. 题目描述2. 输入描述3. 输出描述…

开源开放 生态共建 | openKylin社区单位会员突破200家!

当前,开放、协作、共享的开源模式已成为全球软件技术和产业创新的主导,也为信息技术国产自主化提供了强大助力。openKylin作为中国桌面操作系统开源社区,以聚焦桌面操作系统根技术为核心、以孵化相关领域关键项目为目标、以布道开源文化为抓手…

堪称「史上最详细」的整车信息安全强标将发布!释放了哪些信号?

确保汽车整车信息安全,或成为车企们继智能化竞争的下一个竞争焦点。 可以说,在智能化、网联化的驱动下,智能汽车成为了数据收集、数据传输、数据处理的关键节点,消费者在享受汽车智能化带来便利的同时,也逐渐重视智能…

【操作系统复习】第8章 文件管理

数据项、记录和文件 数据项 ➢ 基本数据项:描述一个对象的某种属性,又称字段 ➢ 组合数据项:由若干个基本数据项组成记录 ➢ 记录是一组相关数据项的集合,用于描述一个对象在某方面的属性。 ➢ 关键字:唯一能…

04_GC垃圾回收

面试题: JVM内存模型以及分区,需要详细到每个区放什么 堆里面的分区:Eden,survival from to,老年代,各自的特点。 GC的三种收集方法:标记清除、标记整理、复制算法的原理与特点,分…

python+vue高校网上跳蚤二手市场的设计与实现

商品信息是卖家供应用户必不可少的一个部分。在跳蚤市场发展的整个过程中,商品担负着最重要的角色。为满足如今日益复杂的管理需求,各类管理系统程序也在不断改进。本课题所设计的普通高校网上跳蚤市场,使用Django框架,Python语言…

【2023年电工杯数学建模竞赛】选题分析+A题B题完整思路+代码分享

思路和代码会第一时间分享出来,可以先关注博主 1.竞赛介绍 2.本次大赛选题分析 首先大家要清楚获奖只和比例有关,和具体题目关系不大,不会出现选难题就比简单题获奖率高很多的情况出现,这是一个选拔性质的比赛是按照比例来的 2…

(5.19-5.25)【大数据新闻速递】

关 注gzh“大数据食铁兽”,了解更多大数据快讯 【第八届亚太银行数字化创新峰会圆满落幕】 第八届亚太银行数字化创新峰会在2023年5月18日举行,邀请了30名大咖和超过300位行业顶尖人士参加。金融数据港和中银协中西部培训机构提供特别支持。峰会围绕银行…

Kafka实时数据即席查询应用与实践

作者:vivo 互联网搜索团队- Deng Jie Kafka中的实时数据是以Topic的概念进行分类存储,而Topic的数据是有一定时效性的,比如保存24小时、36小时、48小时等。而在定位一些实时数据的Case时,如果没有对实时数据进行历史归档&#xff…

list的基本介绍

list的基本信息: list是一个带头双向链表的结构。constant,常数、常量,constant time 即O(1)时间复杂度。 先来简单认识一下list list支持尾插,尾删,头插,头删 都是一些已知的内容。 和vector的区别就是支…

Java货运物流园管理系统源码

技术架构:spring boot、mybatis、redis、vue、element-ui 开发语言:java、vue、uniapp 开发工具:idea、vscode、hbuilder 前端框架:vue 后端框架:spring boot 数 据 库:mysql 移 动 端: …

vue vant 登录增加图片验证码显示

<!-- 登录表单 --><van-form submit"onLogin" :show-error"false":show-error-message"false"ref"login-form"failed"onFailed"> <van-fieldv-model"user.account"icon-prefix"toutiao"…

如何借助spire.doc,在 Word 中插入 OLE 对象

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下&#xff0c;轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具&#xff0c;专注于创建、编辑、转…

AI的发展将会产生一个新的阶层

随着AI的发展将会产生一个新的阶层&#xff0c;那就是无用阶层&#xff0c;而且我们很多人都处在这个阶层。自今年以来&#xff0c;AI技术的发展所带来的应用&#xff0c;给我们的除了震撼还是震撼。Open AI的GPT4模型不但能够写出媲美专家发表的论文&#xff0c;还能通过各类专…