介面訪問量統計

一、業務場景

  自己參與開發的很多項目都會對外提供一些介面,比如之前自己參與開發的一個小程式的後台項目,有很多的介面都是提供

給小程式進行調用的,這種做得有介面訪問量統計。介面訪問量統計可以很直觀的看到介面被調用的次數,哪些介面被高頻率

訪問,需要做優化都是比較有利的數據支撐。另外對一些比較重要的介面,需不需要做限流處理,也是一個重要的參考指標。

最後就是哪些時間段內,比如是上午、中午、下午,還是周一到周三或者周四到周日訪問量比較多,都可以很直觀的看出來。

如果需要統計每個介面的訪問量的話,該如何進行統計呢?

二、需求分析

  首先是設計介面訪問統計表,表的設計很常規,包含一些常用的欄位即可。比如統計類型,按照小時統計還是按照天或者

是按照月統計等等;其次就是介面的訪問名稱,訪問的URL;然後可以添加一個統計時間,這個可以根據需要來,可以是一個

時間段,也可以只是一個具體的統計時間。時間段的話,就可以設計成開始時間和結束時間;具體統計時間的話,就可以按照

上一次統計的時間,截止到當前時間進行統計。最後就是介面訪問量。設計很靈活,沒有固定的模式,可以按照項目的實際需求

來進行設計。

三、解決方案

  具體如何實現呢?自己參照一些開發過的項目,可以寫一寫大致的思路。第一步就是需要有一個地方能夠拿到所有的需要

統計的介面資訊,主要就是URL還有介面說明。由於介面請求的URL一般都是固定的,不會隨意改變,數據量少的話可以考慮

使用一個枚舉值來進行存儲。或者是使用一個獨立的配置文件來配置這些介面數據資訊,然後在將配置資訊載入到項目中。如果

介面非常多的話,比如有幾百條數據或者上千條數據,則使用枚舉值就不太適合,就可以考慮新建數據表來進行存儲介面數據。

第二步工作是存儲每次調用介面時的訪問資訊,有的介面訪問量比較大,並且需要快速做出響應,比較簡單實用的處理方式

就是將訪問的數據資訊存儲在快取當中,先將數據保存下來,之後再去做其他的處理。每訪問一次,就讓某個介面的訪問量加一。

如果是使用redis進行統計操作,裡面有個方法是直接讓redis中存儲的某個值加一的操作,非常地方便。這步操作也可以使用

非同步的方式對訪問介面進行自增操作,加快介面的訪問效率。

完成前面前面兩步後,第三步就是如何來進行統計的問題。一般的方式就是啟一個定時任務,比如半小時或者一個小時執行

一次,統計介面的訪問量,然後將統計數據入庫永久存儲。可避免redis服務異常的時候,數據丟失的風險。具體的統計邏輯可以

根據具體的需要去進行處理。這就是一個統計介面訪問量的大致思路,沒有具體的程式碼,思路搞清楚之後,寫程式碼也會容易很多。

如果其他小夥伴有更好的思路,歡迎留言討論。