从跟踪估算基数
当您有大量服务时,基数可能会带来问题。这个问题没有直接的公式或解决方案。以下指南应有助于估算该功能将产生的基数。
有关基数的更多信息,请参阅基数文档。
如何估算基数
边的数量取决于系统中的节点数量以及它们之间请求的方向。我们将此数量称为“跳数”(hops)。每个跳数都是客户端 + 服务器标签的唯一组合。
例如
- 一个包含 3 个节点
(A, B, C)
的系统,其中 A 只调用 B,B 只调用 C,则将有 2 个跳数(A → B, B → C)
- 一个包含 3 个节点
(A, B, C)
且它们相互调用(即所有双向链接)的系统,将有 6 个跳数(A → B, B → A, B → C, C → B, A → C, C → A)
我们无法根据节点自动计算跳数,但它应该是一个介于 #services - 1
和 #services!
之间的值。
如果我们知道系统中的跳数,就可以计算生成的服务图的基数(假设 #hb
是直方图桶的数量)
traces_service_graph_request_total: #hops
traces_service_graph_request_failed_total: #hops
traces_service_graph_request_server_seconds: #hb * #hops
traces_service_graph_request_client_seconds: #hb * #hops
traces_service_graph_unpaired_spans_total: #services (absolute worst case)
traces_service_graph_dropped_spans_total: #services (absolute worst case)
最终,我们得到以下基数估算
Sum: [([2 * #hb] + 2) * #hops] + [2 * #services]
注意
如果
enable_messaging_system_latency_histogram
配置设置为true
,则会生成另一个直方图traces_service_graph_request_messaging_system_seconds: #hb * #hops
在这种情况下,估算公式为
Sum: [([3 * #hb] + 2) * #hops] + [2 * #services]
注意
要估算指标数量,请参阅试运行指标生成器文档。