1 回答

TA貢獻2080條經驗 獲得超4個贊
計數器采用雙精度而不是長整數有多種原因。與任何架構一樣,它會平衡權衡。
與底層指標庫的最大兼容性
Micrometer 是其他度量框架的外觀,double
是最通用的選項。
例如,普羅米修斯使用雙精度計數器,并通過堅持使用相同的類型,最大限度地提高兼容性。
Prometheus 使用 s 的另一個原因double
是在內部將所有指標視為相同,從而簡化其架構并優化其性能和內存利用率。盡管這是一個不同的討論主題。
測量部分變化
雖然大多數計數器用途是遞增單個事件。在測量其他內容(例如接收的字節數、處理的行數等)時,計數器仍然是一個可行的選擇。盡管這些示例都不是部分計數。它不會阻止用戶提出想要測量部分計數的用例。一個例子可能是“處理所花費的秒數”,因為部分秒數在計算中非常常見。有些系統會測量整個單位,例如毫秒或納秒,接下來讓我們介紹一下。
最大精度
double 類型提供更高的精度。雖然這聽起來可能違反直覺,但請耐心聽我說??梢栽谟嫈灯髦袦y量的一些持續時間是執行某些任務所花費的總時間。垃圾收集、數據庫處理等。其中一些事件需要納秒。雖然我不推薦使用 Micrometer 作為分析器的替代品,但測量小時間單位會引起混亂。
如果注冊表要對所有測量值進行納秒標準化,那么 a 的數量級long
(長整型中的 9 千萬億與雙精度中的 9 千萬億)無論如何都會耗盡長整型的額外精度。
您會注意到,Micrometer 使用雙精度數來測量計時器的總持續時間,該指標的優點在于它實際上是其核心的計數器(單調遞增的數字)。
雙人間足夠大
我記得做了一些粗略的數學計算,如果計數器正在測量單個事件,這意味著它可以在 20,000 多年的時間內每秒測量 10,000 個事件,并且不會開始失去精度。
因此,當然存在一些需要注意的限制,但考慮到系統需求的預期double
就足夠了。
添加回答
舉報