近年来,各大厂商纷纷拥抱云原生技术,由此带来的海量数据给传统的技术架构带来了巨大冲击,传统监控首当其冲。服务上云之后,大都基于 Docker 容器部署、Kubernetes 服务治理,资源弹性伸缩且实时变化,传统监控难以支撑住此场景下的业务需求,可观测性(Observability)逐渐发展成为云原生领域的热门方向。
在此背景下,云时代的系统可观测平台观测云与物联网大数据解决方案商涛思数据达成深度战略合作,依靠国产时序数据库 TDengine 的技术和性能优势,观测云将进一步满足云、云原生、应用及业务上的监测需求,从基础设施到日志数据再到全链路应用性能实现全面主动观测,让企业在上云体验上更加顺滑。
多种存储混合查找,观测云设计 DQL 引擎专注查询
在观测云的数据存储结构中,数据采集软件会被部署到不同的用户环境中采集所需数据,在数据上传后系统会根据数据类型进行相应的分类,分类完成后所有数据会经由 Worker 进行对应处理,再根据相应的分类写入到各种不同的存储当中。在数据存储完成后,根据业务需求用户需要对数据进行查询操作,但不同的数据存储存在查询语言的差异,如何弥补语言差异完成查询操作成为一个亟待解决的问题。
观测云所使用的的存储可以概括为三种,一种是如 TDengine 一般的时序数据库(Time-Series Database),一种是Elasticsearch(简称 ES),此外还有一部分数据存储在 Redis、MySQL 这类关系型数据库当中,对应如此多种类的存储,在遍历查询方面极度不友好,尤其是对于前端来说。观测云的解决方案是重新定义一套可以查询多种数据类型的查询语言,并由此设计出了 DQL 引擎,真正意义上实现了数据查询层面的垂直划分。
为了打造出一种能够统一查找多种存储混合的查询语言,观测云在设计上进行了深入思考,并依托于具体实现不断打磨,设计出了专注于查询且语法简单的 DQL 引擎,代码展示如下:
M(Metric)::nsq_nodes:(LAST(message_count) AS 消息数) BY
server_host
L(Log)::openway_gin:(MAX(cost_time)) {host = ‘prd-dataway’}
BY http_url
R(RUL)::view:(COUNT_DISTINCT(userid)) { app_id =
'appid_xyz' and view_path = re('.*/scene/.*') }
在解决了多种存储共存的问题后,为满足业务发展需求,进一步提升前端操作体验,观测云决定对既有的存储系统架构进行升级改造。
与 TDengine 合作,提升用户体验
观测云此前使用的时序数据库是 InfluxDB,应用至今,其越来越难以支撑私有化部署业务,多种问题和瓶颈导致业务发展受到限制,最终观测云决定对 InfluxDB 进行替换。他们将目光转移到国内数据库领域,发现在多年的发展之下,一些优质的国产时序数据库应运而起,TDengine 就是其中之一。在了解了 TDengine 的种种特性之后,观测云对两种时序数据库进行了相关测试。
根据上述测试结果,观测云发现,不管是从写入、查询抑或是存储方面,TDengine 在性能上可以说是全面领先于 InfluxDB。无论是简单查询还是复杂的聚合查询,都有 10x~20x 的性能提升,存储空间能节省大约一半,在写入性能上也有两倍提升,也就是说原先可能需要使用两个或者三个节点才能满足用户的写入需求,应用 TDengine 后一个节点大约就顶住了,一定程度上又节省了一部分的部署成本。
目前,观测云正在逐步将数据从 InfluxDB 迁移至 TDengine,TDengine 将会被应用在多租户隔离、高频 I/O、私有化部署等场景中。
作为一个 SaaS 平台,观测云需要接入多租户进行对应服务,因此平台方首先需要考虑的就是不同租户之间如何以不同的 DB/Index 进行隔离。在 TDengine 中,多个 DB 可以共享一个 database 服务,观测云可以顺利实施这个方案。
此外,多租户模式也会产生高频数据写入,每一个租户都可能会部署多个采集点,而一个采集点就相当于一个写入的客户端,仅对于一个租户而言,就可能产生十个、一百个甚至更多的接入客户端,多租户的写入量之巨大可想而知。
除了写入,平台在查询层面也会面临不小的压力,前端指标的生成、监控等无时无刻不在对数据进行查找。TDengine 的逻辑设计使得其既可以满足高可靠,又能够满足大数据量级的读写需求,可以很好地支撑住多租户模式下的系统性能。
除了 SaaS 服务外,观测云还会针对一些客户的业务需求进行私有化部署,私有化部署的环境和 SaaS 有很大区别,不仅要将部署效率提升,还要能够和不同的云平台打通,更便捷地获取需要的资源。相比于 InfluxDB,国产的时序数据库 TDengine 对私有化部署显然更加友好。
结语
在 TDengine 的助力下,观测云极大地节省了部署和运维成本,也显著提升了系统的整体性能,让前端用户在使用体验上更上一层楼。作为 TDengine 的合作伙伴,观测云希望 TDengine 未来能够有更多数学函数的支持,同时加强部分查询功能对 Unicode 的支持,以更加丰富的功能促进双方开展更为深度的合作模式。
“后面在我们的 SaaS 和私有化部署中都会默认使用 TDengine,其他公有云(AWS、腾讯云等)上的服务都将以 TDengine 为主,对于新接入的用户我们也将慢慢迁移到 TDengine 节点。”
未来随着双方合作的持续加强,可以预见,强强联合的技术加持将为云原生行业的智能化监控构筑更加坚实的“技术底座”,为企业数字化转型提供技术力量支撑,为国内可观测性技术的发展贡献源源不断的创造力。
观测云简介:观测云,新一代 SaaS 化全链路数据可观测平台,实现统一采集、统一标签、统一存储和统一界面,带来全功能的一体化可观测体验。观测云能全环境高基数采集数据,支持多维度信息智能检索分析,及提供强大的自定义可编程能力,使系统运行状态尽在掌控,故障根因无所遁形。聪明的团队会观测,可观测性用观测云。
涛思数据简介:北京涛思数据科技有限公司(TAOS Data)瞄准日益增长的物联网数据市场,专注时序空间大数据的存储、查询、分析和计算,不依赖任何开源或第三方软件,开发了拥有自主知识产权、100% 自主可控的高性能、分布式、支持 SQL 的时序数据库 TDengine。采用 AGPL 许可证,涛思数据已经将 TDengine 的内核(存储、计算引擎和集群)100% 开源,未来将尽最大努力打造开发者社区,维护开放开源的商业模式。
想了解更多 TDengine Database的具体细节,欢迎大家在GitHub上查看相关源代码。