从落地效果看,转转选择TDengine的三个理由
-
集群功能已经开源,支持横向扩展以及高可用 -
性能和成本之间的平衡达到最优化,运维难度显著降低 -
其超级表特别适合我们这个以域名为维度的监控方案
使用TDengine进行数据库建模
-
数据格式固定:配置好req_status_zone之后,日志文件就固定住了,但总的字段数是有限的,样例如下:
zone_name key max_active max_bw traffic requests active bandwidthserver_addr 192.168.187.164 2 432 17K 18 1 0server_name 192.168.187.164 2 432 17K 18 1 0server_url 192.168.187.164/ 1 0 0 8 0 0server_url 192.168.187.164/index.html 1 0 11K 8 0 0server_url 192.168.187.164/req-status 1 0 0 1 1 0server_url 192.168.187.164/req_status 1 0 5680 1 0 0
-
数据极少需要更新或删除
-
属于服务访问的事实数据,只要不是脏数据,就不会删除
-
需要采集的数据标签不多,而且固定 -
单条数据量约在1KB -
保存6个月以上
TDengine 对每个数据采集点单独建表,但在实际应用中经常需要对不同的采集点数据进行聚合。为高效的进行聚合操作,TDengine 引入超级表(STable)的概念。超级表用来代表一特定类型的数据采集点,它是包含多张表的表集合,集合里每张表的模式(schema)完全一致,但每张表都带有自己的静态标签,标签可以有多个,可以随时增加、删除和修改。
-
超级表:以指标作为超级表 -
子表:每个域名做一个子表
-
标签tag:直接将标签信息作为超级表的标签列
-
列column:监控数据本身除去标签部分
落地实施和最终效果展示
-
数据写入
-
查询问题
-
容量规划
-
表数量 -
数据长度 -
副本数 -
表活跃度等
写在最后
-
对表名支持更友好:能够减少对特殊字符的屏蔽(据说在后续版本中会实现,这样就更贴近场景,省去了应用端的特殊处理)
-
支持更加丰富的SQL语句:能够针对少有的场景,提供更加灵活的SQL语句,便于做更加复杂的计算分析,这也是AIOps的进阶部分
-
灰度平滑升级:目前TDengine保持着2周一次的发版节奏,还是期望能够快速用上新的特性。但是每次停机升级又会是一个麻烦的事情,期待官方早日支持滚动升级
-
可实现自定义聚合方法:由于时间问题,没赶上官方的UDF特性。期望官方的UDF能够早日发布,好实现更加复杂的聚合计算 -
子表自动清理功能:由于域名会存在下线问题,目前的TTL策略只是针对数据而不是Table本身,淘汰子表还需要人工运维介入
本文分享自微信公众号 - TDengine(taosdata_news)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。