转转作为国内头部的循环经济产业公司,目前业务架构是中台模式。中台负责提供通用的交易能力,灵活快速响应业务需求,业务方负责前台探索创新,为用户提供有价值的服务。
转转交易中台目前分为基础服务、订单、促销、天路、支付等方向,每个方向都拥有各自业务所需的ES索引,索引量级20+,数据量十亿以上。
随着转转业务的快速增长,目前研发对于ES类需求的手动支撑已无法满足业务的快速迭代诉求。目前不仅缺乏技术沉淀和数据积累,而且上手门槛高且效率低。为了解决痛点,ECP(Elasticsearch Chain Planning)系统应用而生。
根据历史经验,目前索引重建需要如下步骤:
ECP(Elasticsearch Chain Planning)系统,即一个基于Elasticsearch的数据传输链路计划管理平台。在转转技术体系内,致力于协助研发运营人员高效管理ES的索引新建、数据清洗、索引重建等任务计划,并提供可靠的一站式任务流解决方案,提升ES类需求的响应效率。
任务管理包含ES索引新建、数据清洗、索引重建等任务流。它提供了多个独立模块,包括索引新建删除、别名切换、数据清洗、索引预热、双写管理等,同时还拥有任务进度可视化、暂停和恢复、QPS限流、中断自动恢复等能力,此外还留存了任务过程数据,方便日后复盘和查看。
主要管理数据库基本信息和获取源数据的SQL脚本,供任务获取源数据使用。它具有数据库连接检测、SQL语法校验及格式化等辅助功能。
主要管理索引的基本信息,如索引的名称、别名、磁盘占用、所属集群、分片数量、健康状态、部门归属等。
主要针对索引模板进行集中管理,避免散落丢失,索引模板通常用于索引新建操作。
例如原来刷ES索引需要从数据库手动导出一份ID文件,并传输至ES写服务的服务器上,然后远程RPC触发开始执行,过程中需要人工值守,中断手动重试。还有编写导ID的Shell或Python脚本、服务器之间文件上传下载、远程RPC端口转发、源索引模板缺失、进度不可见、中断无感知等重重难点。不但上手门槛高效率低,事倍功半;而且操作不规范,与公司日益规范化进程相悖。这次ECP解决了这些问题,使整个任务操作流程简单、顺畅、高效、规范。
原先ES索引存量数据清洗与线上增量数据共用同一队列,当清洗速率过大时,会影响线上正常数据的消费时效,影响用户体验,例如用户已经支付成功了,但是看到的仍是未支付等问题。本次ECP利用架构提供的基于标签的流量路由能力将存量与增量进行了机器隔离,彻底解决该痛点。理论上在下游服务承受范围内,只要增加ES写服务机器,即可提升存量数据清洗的速率。
原先的索引、模板、脚本散落在各个角落,每次需求过来需要翻找上次需求使用的脚本和模板,由于人员的流动,经常找不见旧的脚本或模板,而需要研发重新造轮子。这样不但耗费时间精力,需求响应慢,业务感知较差;而且没有技术和数据的沉淀,缺乏系统性的持续迭代,进而提高效率。本次ECP将这些收拢起来,便于日后持续提效。
任务指为了完成某个目标而建立的活动或工作。具有目标明确、时间限制、进度追踪等特性。ECP系统中的任务通常有存量ID清洗任务,存量文件清洗任务,索引构建任务等。
索引簇是索引的抽象,索引簇定义了索引的唯一标识、模板、属性等,但没有具体的实现,类似于Java中的接口或类;而索引是索引簇的实例。例如:在订单列表场景中,“我卖出的”订单列表索引簇(唯一标识是:order_list),实际索引实例为(order_list_v2),假设业务需要新增一个索引字段,那么我们会新建索引实例(order_list_v3),这里v2和v3索引都属于索引簇(order_list)的实例。
即数据的来源,在ECP中,分为ID源,文本源和MySQL源。
即MySQL源和SQL脚本的组合,可以从数据库中读取源数据。
总的来说,ECP系统是一个基于Elasticsearch的数据传输链路计划管理平台,致力于为用户提供更加高效、便捷的数据清洗解决方案。我们会持续迭代系统的功能,以满足不断变化的业务需求和用户期望。
目前ECP系统v1.0版本上线不久,仍处于团队内测阶段,索引刷新类需求提效已初露锋芒。接下来我们将持续完善和打磨,并计划在未来增加更多实用的功能。例如,清洗任务定时执行、reindex支持、别名切换回滚以及数据一致性校验等功能,这些功能将使日常的ES数据清洗工作更加高效便捷。我们非常感谢您的支持和关注,敬请期待!
在此感谢搭档@闫展同学的辛勤付出和不懈努力,也要感谢交易团队其它同学在此期间的任务分担,以及转转FE的低代码平台,ECP系统的顺利上线离不开团队成员间的密切合作和相互支持。期待未来我们能走得更远,推动ECP系统茁壮成长。
关于作者
郭世杰,转转交易营销技术部研发工程师,主要负责订单方向的研发工作。在代码和人生中,拥抱变化,勇于面对挑战,追求卓越。
转转研发中心及业界小伙伴们的技术学习交流平台,定期分享一线的实战经验及业界前沿的技术话题。
关注公众号「转转技术」(综合性)、「大转转FE」(专注于FE)、「转转QA」(专注于QA),更多干货实践,欢迎交流分享~