7

接口访问量统计 - 一只爱阅读的程序员

 2 years ago
source link: https://www.cnblogs.com/yilangcode/p/16684837.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

接口访问量统计

一、业务场景

  自己参与开发的很多项目都会对外提供一些接口,比如之前自己参与开发的一个小程序的后台项目,有很多的接口都是提供

给小程序进行调用的,这种做得有接口访问量统计。接口访问量统计可以很直观的看到接口被调用的次数,哪些接口被高频率

访问,需要做优化都是比较有利的数据支撑。另外对一些比较重要的接口,需不需要做限流处理,也是一个重要的参考指标。

最后就是哪些时间段内,比如是上午、中午、下午,还是周一到周三或者周四到周日访问量比较多,都可以很直观的看出来。

如果需要统计每个接口的访问量的话,该如何进行统计呢?

二、需求分析

  首先是设计接口访问统计表,表的设计很常规,包含一些常用的字段即可。比如统计类型,按照小时统计还是按照天或者

是按照月统计等等;其次就是接口的访问名称,访问的URL;然后可以添加一个统计时间,这个可以根据需要来,可以是一个

时间段,也可以只是一个具体的统计时间。时间段的话,就可以设计成开始时间和结束时间;具体统计时间的话,就可以按照

上一次统计的时间,截止到当前时间进行统计。最后就是接口访问量。设计很灵活,没有固定的模式,可以按照项目的实际需求

来进行设计。

三、解决方案

  具体如何实现呢?自己参照一些开发过的项目,可以写一写大致的思路。第一步就是需要有一个地方能够拿到所有的需要

统计的接口信息,主要就是URL还有接口说明。由于接口请求的URL一般都是固定的,不会随意改变,数据量少的话可以考虑

使用一个枚举值来进行存储。或者是使用一个独立的配置文件来配置这些接口数据信息,然后在将配置信息加载到项目中。如果

接口非常多的话,比如有几百条数据或者上千条数据,则使用枚举值就不太适合,就可以考虑新建数据表来进行存储接口数据。

第二步工作是存储每次调用接口时的访问信息,有的接口访问量比较大,并且需要快速做出响应,比较简单实用的处理方式

就是将访问的数据信息存储在缓存当中,先将数据保存下来,之后再去做其他的处理。每访问一次,就让某个接口的访问量加一。

如果是使用redis进行统计操作,里面有个方法是直接让redis中存储的某个值加一的操作,非常地方便。这步操作也可以使用

异步的方式对访问接口进行自增操作,加快接口的访问效率。

完成前面前面两步后,第三步就是如何来进行统计的问题。一般的方式就是启一个定时任务,比如半小时或者一个小时执行

一次,统计接口的访问量,然后将统计数据入库永久存储。可避免redis服务异常的时候,数据丢失的风险。具体的统计逻辑可以

根据具体的需要去进行处理。这就是一个统计接口访问量的大致思路,没有具体的代码,思路搞清楚之后,写代码也会容易很多。

如果其他小伙伴有更好的思路,欢迎留言讨论。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK