机器使用成本下降 50%,TDengine 在同程旅行基础监控中的实践
小 T 导读:在对多款时序数据库进行了选型测试后,同程旅行自研的“夜鹰监控”搭载 TDengine 代替了现有存储设备,减少运维成本。本文分享了他们对建表模型的方案选择思路,接入 TDengine 后所遇到问题的解决经验以及落地效果展示。
项目背景
同程旅行有一套自研的基础监控系统“夜鹰监控”。目前夜鹰监控使用情况为百万级别 endpoint、亿级 metric、每秒 200 万并发写入以及 2 万并发查询。其存储组件基于 RRD 存储,RRD 存储虽然拥有很好的性能,却也存在着一些问题——基于内存缓存定期写入 RRD,在机器重启后会丢失部分数据。
-
引入了 ES 存储,为夜鹰监控提供 7 天内原始数据的查询,目前部署的 2 套存储。
-
RRD 提供给 API 调用,调用量在几万级 TPS。 -
ES 提供给夜鹰面板使用,保存 7 天原始数据,调用量在几百 QPS。
在进行时序数据库选型时,实际需求主要有以下三点:
-
性能强,可以支持千万级别并发写入、10 万级的并发读取
-
高可用,可以横向扩展,不存在单点故障
-
功能强,提供四则运算、最大、最小、平均、最新等聚合计算功能
基于 TDengine 的建表模型
接入 TDengine 之后的效果展示
在进行数据迁移时,我们先是将夜鹰监控数据转移到 Kafka 中,之后通过消费转换程序将 Kafka 的数据格式转为了 TDengine SQL 格式。这个过程还遇到了如下三个小问题,解决思路放在这里给大家参考:
连接方式问题。刚开始我们使用的是 go-connector sdk 的方式接入 TDengine,跑起来后发现,go-connector 依赖于 taos client 包以及 taos.cfg 配置文件里面的链接配置,同时因为 FQDN 的设置难以使用 VIP 负载均衡的配置方式。我们考虑到后面消费程序会部署到容器中,不宜产生过多的依赖,因此还是放弃了 go-connector 的连接方式,改为了 HTTP RESTful 的连接方式。
Kafka 消费数量问题。由于夜鹰监控上传到 Kafka 里面的数据是一条一个指标,再加上 200 万左右的并发,连接数很快就耗光了。通过和 TDengine 技术支持人员沟通,了解到可以改造成批量 SQL 的方式写入,最佳的实践效果是 400-600K 单个 SQL 的长度。经过计算,我们上传的指标条数大概为 5000 条左右,大小为 500K 。
-
读取速度问题。因为每次要等到消费 5000 条数据,才会触发一次写入,这种情况也导致读取速度较慢。TDengine 技术支持人员再次给出了解决方案——使用 Taos 自己实现的 Queue,代码地址为:github.com/taosdata/go-demo-kafka/pkg/queue ,有需要的同学可以自行获取。
写在最后
未来,我们也希望与 TDengine 展开更深层次的合作,在此也为其提出一些小小的建议,助力 TDengine 往更好的方向发展:
-
官方文档还不够完善,新版的功能在文档中没有体现,很多用法缺少代码示例,个人理解起来比较晦涩难懂
-
社区用户经验传递不是很多, 遇到一些问题时,Google 比较难以找到社区的解决案例
👇 点击阅读原文,了解体验 TDengine!
本文分享自微信公众号 - TDengine(taosdata_news)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
MASA Blazor入门这一篇就够了
1.什么是Blazor? 有什么优势? ASP.NET Core Blazor 简介 Blazor 是一个使用 Blazor 生成交互式客户端 Web UI 的框架: 使用 C# 代替 JavaScript 来创建信息丰富的交互式 UI。 共享使用 .NET 编写的服务器端和客户端应用逻辑。 将 UI 呈现为 HTML 和 CSS,以支持众多浏览器,其中包括移动浏览器。 与新式托管平台(如 Docker)集成。 Blazor 优势: 1. 使用 C# 代替 JavaScript 来编写代码。 2. 利用现有的 .NET 库生态系统。 3. 在服务器和客户端之间共享应用逻辑。 4. 受益于 .NET 的性能、可靠性和安全性。 5. 在 Windows、Linux 和 macOS 上使用 Visual Studio 保持高效工作。 6. 以一组稳定、功能丰富且易用的通用语言、框架和工具为基础来进行生成。 2.为什么选择MASA Blazor?能用来干什么? MASA Blazor是一个基于 Blazor Component 和 Material Design 的 UI 组件库。 dotNE...
- 下一篇
ModStartCMS Laravel9 模块化建站系统 v3.5.0 多图字段支持,系统优化升级
ModStartCMS是基于Laravel的全栈极速开发CMS框架,支持动态模型配置和多模板支持,轻松搭建CMS内容管理系统。 ModStartCMS Laravel9发布v3.5.0版本,新功能和Bug修复累计24项,多图字段支持,系统优化升级。 2022年03月21日ModStartCMS Laravel9发布v3.5.0版本,增加了以下24个特性: ·[新功能] 栏目默认分页可配置 ·[新功能] 表单增加 LayoutTab 布局,可多 Tab 切换 ·[新功能] 模块配置 suggest 配置,建议安装模块 ·[新功能] 集成 XGPlayer 视频播放器 ·[新功能] 文件上传增加 MD5 文件字段,方便去重处理 ·[新功能] 后台链接选择找回密码 ·[新功能] 模型新增多图字段类型 ·[新功能] 用户VIP页面不登录访问不受限 ·[新功能] 用户VIP界面优化,增加主标题和副标题 ·[新功能] 后台应用概况显示系统名称 ·[新功能] UEditor 粘贴图片自动上传功能 ·[新功能] 特殊空白字符处理 ·[系统优化] 内容页面编辑布局优化 ·[系统优化] layer 多次引...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS关闭SELinux安全模块
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Linux系统CentOS6、CentOS7手动修改IP地址
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS8安装Docker,最新的服务器搭配容器使用