0
166
0
0
首页/专栏/ 客户案例/ 查看内容

易点天下基于 ClickHouse 企业版的广告投放平台建设实践

 admin   发表于  2024-10-15 15:07
专栏 客户案例

易点天下是一家技术驱动发展的企业国际化智能营销服务公司,作为全球领先的第三方独立广告服务商,易点天下拥有丰富的全球媒体资源,平台数据覆盖全球 200 多个国家和地区,客户涵盖跨境电商、工具应用、内容分发和游戏等行业。目前累计服务客户超过 2,000 家,其中包括阿里巴巴、腾讯、网易、字节跳动、快手、爱奇艺、SHEIN、Lazada 等国内外知名企业。
02

业务及平台介绍

1. 业务简介
广告投放平台依托各渠道流量,完成对实时/离线流量统计分析、花费/ADX/成本分摊等报表生成,广告投放决策推荐,媒体及 DSP 管理等,对运营部门提供数据支持。

2. 现有数据架构

这是一个直观的数据流示意图,详细展示了服务在多边境环境下的部署情况。数据通过 Kafka 作为高效的数据流管道进行传输,确保数据的实时性和可靠性。随后,利用 Kafka 的 MirrorMaker 功能,数据从新加坡节点被无缝汇总至美国中部的工作中心。在美国中部工作中心的 Kafka 集群中,数据经历了进一步的分流处理:一部分数据被高效传输至阿里云的 OSS(对象存储服务),以满足长期存储和归档的需求;另一部分数据则流入高性能的 OLAP(联机分析处理)引擎 Druid,以支持复杂的数据分析和报表生成。当 Druid 的数据出现不准确的情况时,我们会借助 Lambda 架构,如使用 Spark 从 OSS 中清洗数据,并重新加载到 Druid 中。
3. Druid 存在的问题

首先,维护管理复杂。因为涉及对 Druid 的多个组件如 Overload、Coordinator、Broker 以及 History 等进行处理,并且依赖较多,因此整个操作过程会比较复杂。
第二,查询不友好。Druid 的低版本不直接支持 SQL 查询,仅提供基于 DSL(领域特定语言)的查询方式。当前版本支持 JSON 和 SQL 级别的查询,但仅限于汇总数据,不支持明细数据的查询。
第三,数据接入受限。数据接入 Druid 时,需要预先定义数据模型,包括数据模板、维度定义和指标定义等,这增加了数据接入的复杂性。在数据处理上,Druid 还受到窗口限制,这意味着数据延迟问题可能较为严重,严重的情况下,数据甚至可能不会被接受。最后,扩缩难。由于 Druid 的组件和节点类型众多,每次进行扩容或缩容时,数据平衡所需的时间较长。
4. ClickHouse 相比 Druid 的优势

(1)存储引擎
ClickHouse 以其多样化的存储引擎而著称,这些引擎能够灵活地满足复杂的业务分析需求。此外,它还支持物化视图(Materialized Views),这一特性能够显著提升数据的处理性能,使得数据查询和分析更加高效。
(2)查询性能
因为 ClickHouse 针对 OLAP 场景进行了大量的优化,支持列式存储,因此在处理大量数据时查询性能远超 Druid。另外,针对复杂的数据查询,ClickHouse 可以借助向量化、并行处理来提高性能。
(3)数据压缩
ClickHouse 提供了非常高效的数据压缩能力,可以减少存储空间,降低 I/O 成本。
(4)高并发写入
大量数据实时写入时,ClickHouse 可以提供很好的性能。
03

企业版 CK 架构和优势

1. 企业版 CK:云原生存算分离架构

由于 ClickHouse 企业版采用原始的存算分离架构,所以在数据的一致性和集群的扩展性,尤其是水平扩容的效率上,都具有得天独厚的优势。所有的计算节点对全量存储数据都是可见的,数据变更节点自动感知,相比社区版的 ReplicatedMergeTree,具有更强的数据一致性。
同时由于数据不再和计算资源绑定,企业版新增节点的操作也比社区版更快更简单,不再需要将业务停写后做数据的 reshard 和迁移,大大降低了运维的难度。
除此之外,基于对象存储 OSS 的共享存储,企业版拥有更高的吞吐量和更高的 merge 处理效率。
2. 企业版 serverless 能力:资源基于负载的弹性变配

企业版具有 serverless 的能力,支持资源基于负载的自动升配和降配,在业务高峰期自动升配,提升处理能力;在业务低谷期自动降配,减少成本开销。
并且能通过增加节点数线性的增加集群的性能。上图右侧展示了社区版和企业版在不同节点数下 merge 的执行时间,橙色的是企业版,红色的是社区版,可以看到企业版的执行时间是随着节点数量的增加线性降低的,但是社区版很难通过简单的增加节点来大幅提升 merge 的性能。
04

企业版 CK 性能测试

1. OSS 数据导入企业级 CK 测试

首先是 OSS 数据导入企业级 CK 的测试。主要测试了不同数量、不同大小的文件对导入速度的影响。
从上图中的数据可以看出,文件导入速度随着文件个数的增多而不断提升,最终维持在每秒 200 万条左右的速度。后续我们会采用多客户端并行导入的方式,最大化利用内网带宽,提升导入性能。
2. Spark vs 企业版 CK

第二个测试是 CK 企业版和 Spark 的比较。测试中将同样的一份数据,分别用企业版 CK 和 Spark 去计算,对数据进行维度集合统计,聚合维度 10 个,其中包含一个 Json 字段解析,数据总数 60 亿条。可以看到,在计算相同等级数据量的时候,CK 企业版相对于 Spark 所耗费的资源更少。
同时,从企业版 CK 的资源消耗情况可以看到,集群资源随着业务高峰的结束而缓慢降低,完成了动态的资源变化。不过目前看资源弹缩的速度相比真实的业务资源使用变化来说,存在一些延迟,在计算稀疏环境下可能会有部分的资源浪费,希望后续能够缩得更快一些。
此外,会受到 Json 字段键值对多少的影响,键值对越多,速度越慢(数据解析后需要落盘,IO 瓶颈),所以可以根据实际情况用企业级 CK 代替部分 Spark 任务。比如,当数据量在百亿以下的时候,可以用企业版 CK 来代替 Spark;而当数据量在百亿以上且需要解析 Json 这种相对比较复杂的数据时,Spark 还是有一定优势的。
3. 社区版 CK vs 企业版 CK

第三个测试对比了社区版 CK 和企业版 CK。测试将同份数据分别用企业版 CK 和社区版 CK 去计算,数据总量 50+亿条。主要从单位度聚合、单位度聚合去重、多维度聚合去重 3 个角度去做测试。从测试数据可以看到,企业版和社区版相比,在 3 个场景下,企业版 CK 的执行效率基本都在社区版 CK 的 2-3 倍左右。同时还能看到社区版 CK 在后两个场景都出现了 OOM 的情况。而企业版 CK 由于 serverless 特性会自动增加部分资源,因此具有更快的执行效率,并且可以避免 OOM 问题。
4. 企业版 CK join 性能测试

接下来是企业版 CK join 性能的测试。
众所周知,表关联一直是社区版 CK 的短板,表关联需要大量的数据交换,导致社区版 CK 在有 join 的场景下经常遇到 OOM 问题,这里主要测试的是企业版的 join 性能。
本次测试使用两张表,大表单表 175 亿数据,小表单表 47 亿数据,分别在执行 3 个维度的去重后和关联表去做关联,可以看到小表关联耗时 10s,大表关联耗时 27s,并且全程没有出现 OOM 的情况。
之后,我们还测试了一个采用物化视图的关联耗时,同样的数据在采用了物化视图之后的关联耗时直接达到了秒级,可以看到企业版 CK 在 join 的性能上相比社区版有了显著的提升。
05

总结

在广告业务场景中,性能、稳定性和资源消耗是三大核心能力,它们直接关系到业务的高效运行和成本控制。针对这些需求,ClickHouse 企业版展现出了卓越的性能和稳定性,同时保持了较低的资源消耗。
性能方面,ClickHouse 企业版在数据导入、聚合统计和 join 操作上都表现出色。在数据导入方面,其 OSS 数据导入性能在多客户端并行导入的情况下,可以达到内网的最大带宽,确保数据的高效传输。在聚合统计方面,由于支持计算资源的 serverless 特性,相比社区版,企业版提供了 2-3 倍的执行效率,极大提升了数据处理的速度。在 join 操作方面,企业版相比社区版也有着显著改善,通过创建物化视图,能够实现秒级 join 效果,解决了社区版经常遇到的 OOM 问题。
稳定性方面,ClickHouse 企业版通过支持弹性的资源升降配,有效避免了 OOM 的发生。在负载增高时,企业版能够自动进行资源升配,确保系统的稳定运行。在聚合统计、join 等社区版频繁出现 OOM 的场景下,企业版通过自动的资源升配,提供了更好的稳定性体验。
资源消耗方面,企业版 ClickHouse 在提供与 Spark 相当的聚合统计性能的同时,仅消耗 Spark 约 7.5% 的计算资源量。这一优势不仅降低了成本,还使得企业版在业务高峰结束后能够逐步释放资源,实现资源的高效利用。
展望未来,随着企业版的正式商业化上线,我们将把 ClickHouse 企业版正式投入生产环境中使用。我们期待这一变化能够进一步提升广告业务的性能和稳定性,同时降低资源消耗。欢迎大家体验 ClickHouse 企业版带来的卓越性能和稳定性。
以上就是本次分享的内容,谢谢大家。

Meetup 活动报名通知

好消息:ClickHouse Guangzhou User Group第1届 Meetup 已经开放报名了,将于2024年8月25日在广州天河区林和中路6号 海航威斯汀酒店 5楼多功能3厅举行,扫码免费报名

征稿启示

面向社区长期正文,文章内容包括但不限于关于 ClickHouse 的技术研究、项目实践和创新做法等。建议行文风格干货输出&图文并茂。质量合格的文章将会发布在本公众号,优秀者也有机会推荐到 ClickHouse 官网。请将文章稿件的 WORD 版本发邮件至:Tracy.Wang@clickhouse.com


路过

雷人

握手

鲜花

鸡蛋

版权声明:本文为 clickhouse 社区用户原创文章,遵循 CC BY-NC-SA 4.0 版权协议,转载请附上原文出处链接和本声明。

评论
返回顶部