avada做網(wǎng)站seo公司北京
面試題如下:
題目要求你實現(xiàn)一個 Monitor.counter(String code, String dim)
接口,用于監(jiān)控數(shù)據(jù)統(tǒng)計。
具體要求:
- 數(shù)據(jù)聚合: 你需要按照
code
和dim
的組合進(jìn)行數(shù)據(jù)聚合,code
代表監(jiān)控項的唯一標(biāo)識,dim
為自定義維度。 - 上報頻率: 每分鐘上報一次聚合后的數(shù)據(jù)。
- 數(shù)據(jù)保證: 要確保數(shù)據(jù)不能丟失,即使
Monitor.counter
接口調(diào)用頻繁且code
和dim
的組合數(shù)量可控。 - 上報接口: 你可以使用已有的
Monitor.report(String code, String dim, long count)
接口上報數(shù)據(jù),其中count
是對應(yīng)code
和dim
組合在一分鐘內(nèi)的計數(shù)。
需要考慮的問題
- 對于監(jiān)控場景,統(tǒng)計用戶pv,數(shù)據(jù)量可能賊大,所以這個每次都上報數(shù)據(jù),會導(dǎo)致監(jiān)控系統(tǒng)負(fù)載比較大,而且監(jiān)控數(shù)據(jù)不需要特別實時,所以可以現(xiàn)在本地聚合,然后再上報。比如每分鐘上報一次。
- 涉及到本地聚合,數(shù)據(jù)不能丟失,需要考慮到線程安全的問題,避免數(shù)據(jù)混亂統(tǒng)計錯誤。