【发布时间】:2015-12-15 18:41:29
【问题描述】:
OpenTSDB 行键设计为 .我可以理解密钥的设计导致在写入数据时避免热点。但是在阅读时,如果我看到与特定主机对应的所有指标,它会导致从随机区域服务器读取数据。那么它如何导致优化读取性能。是否对密钥设计的读取模式做出任何假设。
【问题讨论】:
OpenTSDB 行键设计为 .我可以理解密钥的设计导致在写入数据时避免热点。但是在阅读时,如果我看到与特定主机对应的所有指标,它会导致从随机区域服务器读取数据。那么它如何导致优化读取性能。是否对密钥设计的读取模式做出任何假设。
【问题讨论】:
根据克里斯·拉森的说法
OpenTSDB 的假设是大多数仪表板和用户将在给定时间专注于特定指标或一小组指标,其中指标是跨主机或各种标签的聚合。例如,我的平均或最大 CPU 使用率是多少?
跨多个区域服务器进行查询实际上是一个巨大的好处,因为您可以并行触发查询,例如如果您要求“sys.cpu.busy host=web01”和“sys.if.bytes_out host=web01”...并且您有多个区域服务器,TSD 会将这两个指标发送出去,可能会发送到两个服务器,并且它们可以并行处理,而不是将两者都放在同一服务器上的 HBase 队列中,并在线程可用时处理它们。
此外,在 2.2 中,您可以为行键启用加盐,因此现在是 .这有助于通过在区域服务器之间并行拆分每个指标查询来查询高基数指标(例如大量主机)。
【讨论】:
此架构对于给定系列(指标+标签)的时间范围查询非常有效。任何其他查询(例如获取给定服务器收集的所有指标的最后一个值)都需要全面扫描。
【讨论】: