项目是用SpringBoot+Vue实现,前后端分离的,前端是用nginx部署的,虽说可以通过Nginx的日志来统计网站的IP的访问次数,但想在前端用图形化的方式来展示是不太可行的,所以我想着是在SpringBoot后端来实时统计访问的网站的IP及其次数和地区,然后存储在数据库中,前端可以通过后端提供的相应的接口获取到数据,接着图形化的渲染访问数据,这里只讲SpringBoot后端这部分。
这里统计IP的地区用的是ip2region,可以参考我之前写的入门文章
Java中使用ip2region获取IP的地址_像向日葵一样~的博客-优快云博客_ip2region javaip2region是准确率很高的 ip 地址定位库,本文介绍在Java中使用ip2region获取IP的地址https://blog.youkuaiyun.com/zhiwenganyong/article/details/122755057?spm=1001.2014.3001.5502 不过本次我用的是IP库是 ip2region.xdb,是一个更新的库
ip2region: Ip2region (2.0 - xdb) 是一个离线 IP 数据管理框架和定位库,支持亿级别的数据段,10微秒级别的查询性能,提供了许多主流编程语言的 xdb 数据管理引擎的实现。 - Gitee.comhttps://gitee.com/lionsoul/ip2region/tree/master/data 其中累加IP的访问次数是用redis的incr,后端会提供给前端一个接口当访问网站前端会调这个接口,然后用AOP在接口返回加入逻辑(也可以通过拦截器来拦截接口加入逻辑,但得先解决自动注入为null的问题,注入为null是因为拦截器加载是在springcontext创建之前完成的),先捕获请求获取真实IP,接着封装好消息发给MQ,MQ在进行后续操作。
引入依赖
Gradle
// https://mvnrepository.com/artifact/org.lionsoul/ip2region
implementation group: 'org.lionsoul', name: 'ip2region', version: '2.6.4'
Maven
<!-- https://mvnrepository.com/artifact/org.lionsoul/ip2region -->
<