Tekion 选择 ClickHouse Cloud 提升应用性能和指标监控

本文字数:4187;估计阅读时间:11 分钟
作者:ClickHouse team
本文在公众号【ClickHouseInc】首发

Tekion 由前 Tesla CIO Jay Vijayan 于 2016 年创立,利用大数据、人工智能和物联网等技术,为其汽车客户解决各种问题。
Tekion 于 2020 年推出了其经销商管理软件 Automotive Retail Cloud (ARC)。作为一个端到端的云平台,ARC 旨在无缝连接整个汽车经销商的业务,为经销商和制造商带来了新的简化、效率和连接体验。Tekion 的平台与架构副总裁 Ved Surtani 解释道:“过去,经销商常常需要使用超过 100 个不同的解决方案来运营业务。Tekion 将其减少到了仅仅 4 个。”
ClickHouse Cloud 已成为一个革命性的工具,Tekion 团队在多个关键用例中享受到了优化、性能提升和成本效益等诸多优势。
Tekion 内部的可观测性堆栈
Tekion 的业务依赖于一个内部构建的可观测性堆栈,包括应用性能监控(APM)和自定义指标分析。这个堆栈对 Tekion 快速执行其在汽车行业的众多 SaaS 产品至关重要——如果这些工具无法正常工作,工程师和数据科学家将无法有效地开发和发布新应用程序。过去,这个堆栈运行在一个知名的搜索提供商上,但随着数据量的增加,变得不再高效,成本也越来越高,维护难度也在增加。
Tekion 的 Dataplatform APM 是一个内部平台,用于应用性能监控(APM),分析软件应用的性能,以确保其高效运行并达到性能目标:“通过自定义仪表板来度量我们自己的性能质量,我们利用 ClickHouse 的功能来改进我们的决策过程,其效率和可扩展性已经变得不可或缺。”另一个内部平台 Dataplatform Custom Metrics 允许用户、应用程序、作业和工具从不同来源发送指标并创建自定义指标。Tekion 能够捕获、跟踪、监控和报告性能或行为的独特方面,识别异常或问题,以便采取适当的行动。
规模和成本的挑战促使寻找替代方案
随着 Tekion 的发展和工程运营的扩展,其内部可观测性堆栈在数据摄取速度和效率、查询性能和成本方面开始面临挑战:“随着我们的数据不断增长,现有技术在可扩展性、速度和成本效益方面的限制变得越来越明显。” Surtani 说。Tekion 考虑只存储聚合数据,认为这能满足大多数用户的需求。然而,无法深入了解单个事务以进行调试仍然是一个持续的挑战:“以前,摄取原始记录并获取详细事务信息的想法令人望而生畏。虽然理论上可以通过投入大量财力资源来建立一个大型集群以实现令人印象深刻的成果,但这种方法既不实际也不经济可持续。” Surtani 解释道。
在之前的架构中,来自应用程序的数据流通过 Kafka 摄取并通过自定义服务处理到数据存储中。这种方法便于执行自定义 Spark 作业以发现复杂的模式和警报。尽管这种方法在分析方面有效,但由于搜索性能缓慢和仪表板功能受限,消费过程受到了影响。
Tekion 评估了包括 Delta Lake 和 HBase 在内的各种选项,以寻找更快的数据检索机制:“我们在寻找一种既能快速摄取又能让我们更快检索单个事务的解决方案。” Surtani 说。他们最终选择了 ClickHouse:“我们看到了革新数据管理流程的潜力。” 他补充道。
概念验证:开源还是 ClickHouse Cloud?
在概念验证(POC)评估中,Tekion 先采用开源 ClickHouse,然后过渡到 ClickHouse Cloud。最初选择开源是 Tekion 的常规做法,旨在评估性能和成本效益后再决定是否采用基于云的解决方案:“这种方法提供了关于迁移益处的宝贵见解,并有助于做出知情的决策。” Surtani 说。POC 显示了令人兴奋的结果——ClickHouse 在处理大数据量方面表现出色:“我们在基本 POC 中意识到了它的优越性和潜力,因此期望值很高。” Surtani 说,这促使 Tekion 探索 ClickHouse Cloud。
能够在不影响性能或增加额外开销的情况下扩展集群的能力非常有吸引力。虽然 Tekion 完全有能力独立管理基础设施,但团队决定将精力集中在客户产品开发上,将维护工作交给 ClickHouse(通过 ClickHouse Cloud)。此外,Surtani 解释道:“ClickHouse Cloud 提供了开源解决方案之外的高级功能,例如无需手动索引的动态集群扩展,提升了操作效率和可扩展性。”最终,专家支持、先进功能和成本效益的结合使 ClickHouse Cloud 成为推动组织前进的最佳选择。
“ClickHouse Cloud 提供了以具有成本效益的方式超越性能目标的能力。”
Ved Surtani,Tekion 工程、平台与架构副总裁
ClickHouse Cloud 在 Tekion 的应用
Tekion 已成功将 ClickHouse Cloud 集成到其提到的两个平台中。截至 2023 年夏,该系统处理了超过 200TB 的数据,并且随着客户数量的增加,这个数字还在迅速增长。在 APM 解决方案中,ClickHouse Cloud 用于处理由容器生成的应用程序指标。ClickHouse Cloud 简化了数据摄取过程,使得计算指标和警报,包括 Tekion 需求的定制指标成为可能。Tekion 能够更快速地检索单个事务,进行全面的调试和实时数据分析。
此外,他们还开始将 ClickHouse Cloud 集成到高度专业化且通常没有预定义阈值的定制工作流程中。这些工作流程处理关键操作,目标是快速检测和响应异常。通过将这些工作流程迁移到 ClickHouse Cloud,开发人员可以直接摄取自定义指标,从而迅速识别异常和意外情况,并加快响应速度。“尽管涉及到复杂性,但我们适应得很快,过渡过程也很顺利。我们停用了 ATM 系统,只存储一天的数据。” Surtani 解释道。
“ClickHouse 被证明是一个改变游戏规则的工具,推动我们在管理数据基础设施方面变得更加高效和有效。”
Ved Surtani,Tekion 工程、平台与架构副总裁
使用 ClickHouse 的主要好处
存储需求优化
ClickHouse 通过其市场领先的数据压缩能力,大大减少了 Tekion 的存储需求。两个月的数据量从 27TB 减少到仅 2.5TB,实现了 10 倍的存储优化。
数据摄取性能
现在,即使在每分钟 120 万条记录的高峰吞吐量下,Tekion 使用 ClickHouse 也能无滞后地摄取数据。之前,即使尽最大努力,仍有大量事件未能成功处理或记录,但现在这种情况已经消除。此外,所需的 Spark 资源减少了 25%,大大节省了成本。这意味着作业执行时间更快,资源利用效率提高,可以在相同基础设施上处理更大的数据集。
查询性能
ClickHouse 的性能显著加快了查询执行和数据检索速度,即使是大型数据集,也能为用户提供真正的实时互动体验。查询延迟减少了 10 倍以上,而回溯时间增加了一倍——查询最多 14 天的数据时,现在只需 500 毫秒,而在之前的设置中,需要 8 秒,并且在 7 天窗口后超时。用户现在可以查询更长时间范围的数据,并实时分析原始数据,而无需依赖预聚合格式。这意味着更深入的见解,使 Tekion 能够适应不断变化的客户需求和市场趋势。
结论
优化可观测性数据堆栈是一个持续的过程,而持续改进的文化是 Tekion 的核心理念。团队已经开始将 APM 和指标迁移到 ClickHouse Cloud,并计划在未来将日志记录、审计报告和内部规划仪表板也整合进来。Ved 总结道:“我们非常喜欢 ClickHouse,团队对其支持评价很高。我们将继续合作。这是一项非常有前景的技术,已经产生了巨大的影响,我们希望在未来能够更广泛地使用它。”
征稿启示
面向社区长期正文,文章内容包括但不限于关于 ClickHouse 的技术研究、项目实践和创新做法等。建议行文风格干货输出&图文并茂。质量合格的文章将会发布在本公众号,优秀者也有机会推荐到 ClickHouse 官网。请将文章稿件的 WORD 版本发邮件至:Tracy.Wang@clickhouse.com

联系我们
手机号:13910395701
邮箱:Tracy.Wang@clickhouse.com
满足您所有的在线分析列式数据库管理需求
相关文章:
Tekion 选择 ClickHouse Cloud 提升应用性能和指标监控
本文字数:4187;估计阅读时间:11 分钟 作者:ClickHouse team 本文在公众号【ClickHouseInc】首发 Tekion 由前 Tesla CIO Jay Vijayan 于 2016 年创立,利用大数据、人工智能和物联网等技术,为其汽车客户解决…...
mysql之触发器的使用
cr一:创建goods表和orders表; mysql> use mydb16_tirgeer Database changed mysql> create table goods(-> gid char(8) primary key,-> name varchar(10),-> price decimal(8,2),->-> num int); Query OK, 0 rows affected (0.0…...
使用Java和Hazelcast实现分布式数据存储
使用Java和Hazelcast实现分布式数据存储 大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿! 在分布式系统中,实现高效的数据存储和管理是非常重要的。Hazelcast作为一个内存数据网格(IMDG)&…...
Hi3751V560_SELinux
Hi3751V560_SELinux setenforce Enforcing setenforce Permissive(或“setenforce 0”) getenforce V560:demo本身的: [ 13.765161] type=1400 audit(1628821512.905:4): avc: denied { read } for pid=1926 comm="system_server" name="ifindex" d…...
邮件安全篇:邮件反垃圾系统运作机制简介
1. 什么是邮件反垃圾系统? 邮件反垃圾系统是一种专门设计用于检测、过滤和阻止垃圾邮件的技术解决方案。用于保护用户的邮箱免受未经请求的商业广告、诈骗信息、恶意软件、钓鱼攻击和其他非用户意愿接收的电子邮件的侵扰。 反垃圾系统的常见部署形式 2. 邮件反垃圾…...
LoRaWAN设备的两种入网方式(ABP和OTAA)
目录 一、OTAA 1、名词解释 2、入网流程 二、ABP 三、两种入网方式的比较 一、OTAA 1、名词解释 (1)AppEUI:64位(8字节)的唯一标识符,用于标识特定的应用程序或组织(如果用的是chirpstac…...
【Rust光年纪】极致性能与灵活选择:Rust语言数学优化库详解
Rust语言中的数学优化:六大利器汇总 前言 在当今信息时代,数据处理和数学优化成为了各行各业中不可或缺的重要环节。为了满足对高效、快速计算的需求,Rust语言逐渐成为了许多开发者的首选,因其性能优越、并发安全等特点。本文将…...
机器学习 | 回归算法原理——最小二乘法
Hi,大家好,我是半亩花海。很早便想学习并总结一本很喜欢的机器学习图书——立石贤吾的《白话机器学习的数学》,可谓通俗易懂,清晰形象。那就在此分享并作为学习笔记来记录我的学习过程吧!本章的回归算法原理基于《基于…...
.NET Core 中的字符串压缩方法
字符串压缩的概念 字符串压缩通常指的是通过算法减少字符串表示所需的数据量,同时保持字符串的原始信息或能够无损地恢复原始字符串。这种压缩可以是针对文本数据的特定算法,也可以是更通用的数据压缩算法。 .NET Core 中的字符串压缩方法 使用数据压…...
SQL 基础知识
SQL(结构化查询语言)是一种用于管理和操作关系数据库的标准编程语言。以下是一些 SQL 的基础知识: 基本概念 数据库(Database): 存储和管理数据的容器。一个数据库可以包含多个表。 表(Table&…...
【数据结构初阶】单链表经典算法题十二道——得道飞升(上篇)
目录 1、移除元素 2、反转链表 3、链表的中间节点 4、合并两个有序链表 Relaxing Time!!! ———————————————— 天气之子幻 ———————————————— 1、移除元素 思路: 创建一个新链表࿰…...
Python爬虫技术 第16节 XPath
XPath是一种在XML文档中查找信息的语言,尽管XML和HTML在语法上有区别,但XPath同样适用于HTML文档的解析,尤其是在使用如lxml这样的库时。XPath提供了一种强大的方法来定位和提取XML/HTML文档中的元素和属性。 XPath基础 XPath表达式由路径表…...
本地部署,Whisper: 开源语音识别模型
目录 简介 特点 应用 使用方法 总结 GitHub - openai/whisper: Robust Speech Recognition via Large-Scale Weak SupervisionRobust Speech Recognition via Large-Scale Weak Supervision - openai/whisperhttps://github.com/openai/whisper 简介 Whisper 是一个由 O…...
history,hash缓存那些事
vue-router 中的 createWebHistory,createWebHashHistory两种模式 createWebHistory 是基于 window.history 对象是HTML5提供的用于维护当前标签页浏览历史的对象,主要功能是前进后退和在不刷新页面的情况下,修改地址栏里的URL地址。histor…...
Spring Boot的Web开发
目录 Spring Boot的Web开发 1.静态资源映射规则 第一种静态资源映射规则 2.enjoy模板引擎 3.springMVC 3.1请求处理 RequestMapping DeleteMapping 删除 PutMapping 修改 GetMapping 查询 PostMapping 新增 3.2参数绑定 一.支持数据类型: 3.3常用注解 一.Request…...
Spark 解析嵌套的 JSON 文件
1、什么是嵌套的JSON文件? 嵌套的JSON文件是指文件中包含了嵌套的JSON对象或数组。例如,以下是一个嵌套的JSON文件的示例: {"name": "John","age": 30,"address": {"street": "123…...
VMware虚拟机中CentOS7自定义ip地址并且固定ip
配置固定ip(虚拟机) 前提:虚拟机网络配置成,自定义网络并选择VMnet8(NAT 模式) 操作(如下图):点击虚拟机–》设置–》–》硬件–》网络适配器–》自定义:特定虚拟网络–》选择:VMnet8(NAT 模式) 虚拟机网络设置 需要记…...
CCS(Code Composer Studio 10.4.0)编译软件中文乱码怎么解决
如果是所有文件都出现了中文乱码这时建议直接在窗口首选项中修改:选择"Window" -> "Preferences",找到"General" -> "Workspace",将"Text file encoding"选项设置为"Other&quo…...
Flutter 3 完全支持网页端
Flutter 3 可以用于开发网页端应用。自 Flutter 2.0 起,Flutter 就已经支持 Web 平台,并且在 Flutter 3 中得到了进一步的改进和优化。以下是使用 Flutter 3 开发网页端的一些优势和特点: Flutter 3 开发网页端的优势: 跨平台一致…...
vue.js入门
目录 一. 框架概述 二. vue常用命令 2.1 插值表达式 2.2 v-text 2.3 v-html 2.4 v-on 2.5 v-model 2.6 v-show 2.7 v-if 2.8 v-else 2.9 v-bind 2.10 v-for 三. vue生命周期函数 目录 一. 框架概述 二. vue常用命令 2.1 插值表达式 2.2 v-text 2.3 v-html 2…...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...
3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...
【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...
零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...
初学 pytest 记录
安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...
在Ubuntu24上采用Wine打开SourceInsight
1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...
Mysql中select查询语句的执行过程
目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...
