结语
Apache Doris 是这款开放源码的 MPP 预测型资料库商品,不但能在亚秒级响应时间即可获得查阅结果,有效的全力支持动态统计数据预测,而且全力支持10PB 以上的大容量的统计数据集。相较于其他业内比较火的 OLAP 资料库系统,Doris 的分布式系统构架非常简约,全力支持灵活性伸缩式,更易网络管理,节约大量物力和时间成本。目前国内街道社区火爆,也有携程、华为等小厂在采用。
责任编辑主要就讨论天猫客服人员在育苗进行咨询、客户事件单、售后农健专题讲座的动态液晶电视,在动态和app统计数据多维预测方面,如何利用 Doris 进行销售业务积极探索与课堂教学。近些年,随着信息量爆发式的增长,和海量文件共享预测市场需求的再次出现,MySQL、Oracle 等传统的关系型数据库在大信息量下遇到困局,而 Hive、Kylin 等资料库缺乏及时性。于是 Apache Doris、Apache Druid、ClickHouse 等动态预测型资料库开始再次出现,不但可以应对海量的秒级查阅,更满足动态、准动态的预测市场需求。app、动态计算发动机百家争鸣。但是针对相同的情景,面临相同的难题,没有哪一种发动机是LX1的。他们期望透过责任编辑,对天猫客服人员销售业务在app与动态预测的应用领域与课堂教学,能给到他们一些启迪,也期望他们喔交流,给他们提出可贵的建议。
天猫客服人员销售业务形态
天猫客服人员作为集团服务的出口处,为采用者和店家提供更多了高工作效率、可信的保障。天猫客服人员肩负及时解决采用者难题的重责,给采用者提供更多详细简练的说明与解释;为更快的了解采用者的意见反馈和商品的状况,需要动态的监视进行咨询量、接起率、交易额等一系列指标,透过环比和同比,及时处理存在的难题,以更快的适应采用者的网购形式,提升服务水平与工作效率,从而提升天猫品牌的影响力。
Easy OLAP 设计
01 EasyOLAP Doris 统计数据引入信道
EasyOLAP Doris 统计管理工具主要就是动态 Kafka 和app HDFS 文件。动态统计数据的引入倚赖 Routine Load 的形式;app统计数据主要就采用 Broker Load 和 Stream Load 的形式引入。
EasyOLAP Doris 统计数据引入信道
02 EasyOLAP Doris 全信道监视
目前 EasyOLAP Doris 项目的监视,采用的是 Prometheus + Grafana 框架。其中 nodeexporter 负责采集机器层面的指标,Doris 也会自动以 Prometheus 格式吐出 FE、BE 的服务层面的指标。另外,部署了 OLAP Exporter 服务用于采集 Routine Load 相关的指标,旨在第一时间发现动态统计数据流引入的情况,确保动态统计数据的及时性。
EasyOLAP Doris 监视信道
EasyOLAP Doris 监视面板展示
03 EasyOLAP Doris 主备双流设计
EasyOLAP Doris 为了保障0 级销售业务在大促期间服务的稳定性,采取了主备集群双写的形式。当其中一个集群再次出现抖动或者统计数据存在延迟的情况,采用者可以自主地快速切换到另一个集群,尽可能的减少集群抖动给销售业务带来的影响。
EasyOLAP Doris 主备双流设计
04 EasyOLAP Doris 动态分区管理
天猫 OLAP 团队预测市场需求之后,对 Doris 做了一定的定制化开发,其中就涉及到动态分区管理功能。尽管街道社区版本已经拥有动态分区的功能,但是该功能无法保留指定时间的分区。针对天猫集团的特点,他们对指定时间的历史统计数据进行了留存,比如618和 11.11期间的统计数据,不会因为动态分区而被删除。
动态分区管理功能能控制集群中存储的信息量,而且方便了销售业务方的采用,无需手动或采用额外代码来管理分区信息。
Doris 缓存机制
01市场需求情景
致力于不断提升采用者体验,天猫客服人员的统计数据预测追求极致的及时性。app统计数据预测情景是写少读多,统计数据写入一次,多次频繁读取;动态统计数据预测情景,一部分统计数据是不更新的历史分区,一部分统计数据是处于更新的分区。在大部分的预测应用领域中,存在下述几种情景:
高并发情景:Doris 较好的全力支持高并发,但是过高的 QPS 会引起集群抖动,且单个节点无法承载太高的 QPS ;复杂查阅:天猫客服人员动态运营平台监视根据销售业务情景需展示多维复杂指标,丰富指标展示对应多种相同的查阅,且统计管理工具来自于多张表,虽然单个查阅的响应时间在毫秒级别,但是整体的响应时间可能会到秒级别;重复查阅:如果没有防重刷机制,由于延迟或手误,重复刷新页面会导致提交大量重复的查阅;
针对上述情景,在应用领域层有解决方案——将查阅结果放入到 Redis 中,缓存会周期性的刷新或者由采用者手动刷新,但是也会存在一些难题:
统计数据不一致:无法立即对统计数据的更新作出响应,采用者接收到的结果可能是旧统计数据;命中率低:如果统计数据动态性强,缓存频繁失效,则缓存的命中率低且系统的负载无法得缓解;额外成本:引入外部组件,增加系统复杂度,增加额外成本。
02缓存机制简介
在 EasyOLAP Doris 中,一共有三种相同类型 Cache。根据适用情景的相同,分别为Result Cache、SQL Cache 和 Partition Cache 。三种缓存都可以透过 MySQL 客户端指令控制开关。
这三种缓存机制是可以共存的,即可以同时开启。查阅时,查阅预测器首先会判断是否开启了 Result Cache ,在 Result Cache 开启的情况下先从 Result Cache 中查找该查阅是否存在缓存,如果存在缓存,直接取缓存的值返回给客户端;如果缓存失效或者不存在,则直接进行查阅并将结果写入到缓存。缓存放在各个 FE 节点的内存中,以便快速读取。
本号变化,都会无法命中缓存。在多表 Join 的情况下,其中一张表的分区更新,也会导致无法命中缓存。SQL Cache 更适合 T+1更新的情景。
Partition Cache 是更细粒度的缓存机制。Partition Cache主要就是将一个查阅根据分区并行拆分,拆分为只读分区和可更新分区,只读分区缓存,更新分区不缓存,相应的结果集也会生成n个,然后再将各个拆分后的子查阅的结果合并。因此,如果查阅 N 天的统计数据,统计数据更新最近的 D 天,每天只是日期范围不一样但相似的查阅,就可以利用 Partition Cache ,只需要查阅 D 个分区即可,其他部分都来自缓存,可以有效降低集群负载,缩短查阅响应时间。
一个查阅进入到 Doris,系统先会处理查阅语句,并将该查阅语句作为 Key,在执行查阅语句之前,查阅预测器能自动选择最适合的缓存机制,以确保在最优的情况下,利用缓存机制来缩短查阅相应时间ache 可以在高并发情景下发挥其作用,也可以保护集群资源不受重复的大查阅的侵占。SQL Cache 更加适合T+1的情景,在分区更新不频繁和 SQL 语句重复的情况下,效果很好。Partition Cache 是粒度最小的缓存。在查阅语句查阅一个时间段的统计数据时,查阅语句会被拆分成多个子查阅。在统计数据只写一个分区或者部分分区的情况下,能缩短查阅时间,节约集群资源。
为了更快的观察缓存的效果,相关指e 的内存大小等指标。
03缓存机制效果
天猫客服人员 Doris 主集群,11.11期间在没有开启缓存时,部分销售业务就导致 CPU 的采用率达到100%;在开启 Result Cache 的情况下,CPU 使用率在30%-40%之间。缓存机制确保销售业务在高并发情景下,能快速的得到查阅结果,并很好的保护了集群资源。
Doris 在2020年 11.11大促期间的优化
01引入任务优化
动态统计数据的引入一直是一个挑战。其中,保证统计数据动态性和引入稳定性是最重要的。为了能更加直观的观察动态统计数据引入的情况,天猫 OLAP 团队自主开发了 OLAP Exporter ,用于采集动态统计数据引入相关的指标,如引入速度、引入积压和暂停的任务等。透过引入速度和引入积压,可以判断一个动态引入任务的状态,如发现任务有积压的趋势,可以采用自主开发的采样工具,对动态任务进行采样预测。动态任务主要就有三个阈值来控制任务的提交,分别是每批次最大处理时间间隔、每批次最大处理条数和每批次最大处理信息量,一个任务只要达到其中一个阈值,该任务就会被提交。透过增加日志,发现 FE 中的任务队列比较繁忙,所以,参数的调整主要就都是将每批次最大处理条数和每批次最大处理信息量调大,然后根据销售业务的市场需求,调整每批次最大处理时间间隔,以保证统计数据的延迟在每批次最大处理时间间隔的两倍之内。透过采样工具,预测任务,不但保证了统计数据的动态性,也保证了引入的稳定性。另外,他们也设置了告警,可和时处理动态引入任务的积压和引入任务的暂停等异常情况。
02监视指标优化
监视指标主要就分为两个部分,一个是机器层面指标部分,一个是销售业务层面指标部分。在整个监视面板里,详细的指99、QPS 等指标。指标数量不多,但是可以观测到所有集群的情况,这样可以免去在监视中频繁切换的麻烦。
03周边工具全力支持
除了上述说到的采样工具和 OLAP Exporter ,天猫 OLAP 团队还开发了一系列的 Doris 维护工具。
1.引入采样工具:引入采样工具不但可以采集动态引入的统计数据,而且还全力支持调整动态引入任务的参数,或者在动态引入任务暂停状态下,生成创建语句(包括最新的位点等信息)用于任务的迁移等操作。
2.大查阅工具:大查阅不但会造成集群 BE CPU 采用率的抖动,还会导致其他查阅响应时间变长。在有大查阅工具之前,发现集群 CPU 再次出现抖动,需要去检查所有 FE 上的审计日志,然后再做统计,不但浪费时间,而且不够直观。大查阅工具就是为了解决上述的难题。当监视侧发现集群有抖动,就可以采用大查阅工具,输入集群名和时间点,就可以得到该时间点下,相同销售业务的查阅总数,时间超过5 秒、10秒
3.降级与恢复工具:为了确保11.11大促期间,0 级销售业务的稳定性,在集群压力超过安全位的时候,需要对其他非0 级销售业务做降级处理,待度过高峰期后,再一键恢复到降级前的设置。降级主要就是降低销售业务的最大连接数、暂停非0 级的动态引入任务等。这大大增加了操作的便捷性,提升了工作效率。
4.集群巡检工具:在11.11期间,集群的健康巡检是极其重要的。常规巡检包括双流销售业务的主备集群一致性检查,为了确保销售业务在一个集群再次出现难题的时候可以快速切换到另一个集群,就需要保证两个集群上的库表一致、信息量差异不大等;检查库表的副本数是否为3 且检查集群是否存在不健康的 Tablet ;检查机器磁盘采用率、内存等机器层面的指标等。
总结与展望
天猫客服人员是在2020年年初开始引入 Doris 的,目前拥有一个独立集群,一个共享集群,是天猫 OLAP 的资深采用者。
在销售业务采用中也遇到了例如任务调度相关的、引入任务配置相关的和查阅相关等难题,这也在推动天猫 OLAP 团队更深入的了解 Doris 。他们计划推广采用物化视图来进一步提升查阅的工作效率;采用 Bitmap 来全力支持 UV 等指标的精确去重操作;采用审计日志,更方便的统计大查阅、慢查阅;解决动态引入任务的调度难题,使引入任务更加高工作效率稳定。除此之外,他们也计划优化建表、创建优质 Rollup 或物化视图以提升应用领域的流畅性,加速更多销售业务向 OLAP 平台靠拢,以提升应用领域的声望。
—— End ——