作者回复: 好办法!
作者回复: 大致思路:在网关上收集访问日志(Access Log),进入Kafka,后台大数据系统分析访问日志,生成爬虫ip列表(简单的统计单位时间ip访问量,生成top ip列表,复杂的还可以根据访问模式+AI计算出爬虫行为),这个爬虫ip列表再反馈给网关(网关可以定期拉取),网关根据这个ip列表禁止访问。ip列表比较简单粗糙,也可以是用户id列表。
作者回复: 网关一般是无状态部署,可以水平扩展,它的前置一般还有负载均衡设备(比如nginx或者硬件如F5)。
服务注册可以采用Eureka服务注册中心,有专门的API支持下线操作,具体可以看其官方文档。
网关选择,zuul已经有很多落地案例,比较稳定,spring cloud gateway也可以尝试。
作者回复: 是网关报跨域错误,还是后台服务报跨域错误?
可以给相关spring应用添加全局跨域配置,参考:
https://www.baeldung.com/spring-cors
作者回复: 对,网关一般是无状态集群部署的,前置一般有硬件(如F5)或者软件(如nginx)LB做负载均衡,也有F5 -> nginx -> gateway软硬结合两层负载的,因为nginx配置相比F5方便。