反爬虫一些问题
1.数据源是什么(数据从哪来)
数据,我是通过用户的点击生成的这些行为数据而分析的,用户点击了什么,点击了公司网站,(公司可能是搞高旅游或者是售票之类的),
2.分析了哪些模块以及对应的需求
模块这么描述:订单方面的分析,用户方面的分析,商品方面的分析,地址方面的分析,然后就说自己做过哪个模块以及对应的需求
3.基于这些需求的分析,结果的导向是什么
最终的目的,通过反爬虫把极其像爬虫的ip过滤出来添加到黑名单,基于这些黑名单来做爬虫的过滤,当黑名单中的爬虫再次请求过来,给它响应一个其它页面,就不会对网站产生影响
结果导向:大量爬虫会增加网络流量,增加网站压力,不断的请求导致统计结果有偏差,把爬虫过滤掉,最终分析出该项目推广的力度怎么样,用户对此网站的粘度如何
4.lua和nginx是怎么结合使用的
nginx配置文件配置好后,用./sbin/nginx -s reload重启nginx服务,就会加载配置文件解析文件内容,当加载到lua脚本的时候,就会吧lua脚本的内容、计算逻辑加载进来,这就相当于lua脚本以nginx服务启动了,至少会启动一个线程来处理Lua脚本的逻辑,lua就会不断监听缓存在nginx中的数据,监听到数据马上就分化。
5.对数据操作的步骤
数据脱敏,数据清洗,数据分类,数据解析,数据加工,数据结构化,数据推送
数据分类:可分为查询类型,预定类型,单程查询,往返查询,国际查询,国内查询等8种,所有的数据都在一起,只不过不同类型的数据加个标签用于区分
数据解析、加工 是和分类差不多都是根据规则生成标签,便于后期的分析
数据结构化:对数据进行封装,封装到processDate对象中
数据推送:把结构化的数据再放入kafka中
6.如果Ip进行了伪装怎么办
已经可以过滤90%的爬虫,如果还要继续往下实现可以提个思路,就是加字段:浏览器的内容就是cookie,设备系统的id以及设备的id,就是多几个字段联合判断
7.预定数据为什么不能测试
由于无法获取订单数据,所以只能看代码逻辑,不做测试
8.广播变量的作用是什么
可以将变量发送到各个节点
9.采集数据之后过滤之前,要对数据进行切割(DataSplit),然后将切割好的数据封装起来,封装类为bean下的Accesslog
10.结构化数据的时候,为什么在DataPackage中还要进行数据脱敏?
11.枚举类和样例类的作用,(尤其在项目中的作用)
样例类用于封装数据,枚举类用于打标签
12.查询和预定的数据已经放在对应的bean中,为什么推送的时候,不直接使用bean中的包装类
13.streaming批次处理数据的数据的类型?
在streaming中,Dstrem对象调用方法返回的还是一个新的Dstream对象,
一个job里面可能有多个DStream,一个Dstream对应一个rdd
14.processedData为什么要推送到kafka中
数据已经进行了分类,解析,加工,并封装到了ProcessedData中,将数据推送到kafka中是因为每一个模块有自己独立的运行机制(从获取数据开始,然后分析,最后生成的结果有个推送)
生产的过程是怎么做到数据的一致性的?ack方式,给0或1
kakfa的leader和follower之间是怎么同步的数据的?HW高水位机制
kafka的leader和follower由zk选举
streaming消费kafka的时候怎么做到数据一致性(不重复或不丢失,也叫一次仅一次语义)?事务、幂等、结果和offset绑定到一起
streaming消费kafka里面的rdd分区数和kafka的分区数是一对一的
streaming是使用direct方式消费kafka,数据封装是DStream,
kafka的全局无序,分区内有序
17.kafka和zookeeper的关系
zookeeper分布式协调服务框架。在Kafka的设计中,选择了使用Zookeeper来进行所有Broker的管理,体现在zookeeper上会有一个专门用来进行Broker服务器列表记录的点,节点路径为/brokers/ids。zookeeper来管理每个kafka中的broker,起到负载均衡的作用。