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