大数据测试关于数据的稳定性传输是至关重要的,在保证基本的功能可用之后,良好的稳定性是大数据产品质量的保证之一。
我在测试数据采集过程中,其中一种采集方式是http采集方式,这种方式具体是怎么采集的,
简单描述一下http数据采集的过程:
RD提供了模拟第三方往kafka打数据的jar包,这个jar加6个参数执行后(jar命令具体不列这里了),数据即可落到kafka。
但是,测试过程中,遇到一种情况,就是http采集的服务挂掉了,这样的话,第三方往kafka打的数据全部丢失,总结就是http采集服务的不稳定性导致第三方往kafka落盘存储数据失败。
回想一下原因:
应该是测试的不到位。。。。没有考虑到http数据采集服务的稳定性。。。
只确保数据能落盘存储到kafka,但是对于持续稳定的数据落盘未考虑周全。
于是我写了一个shell脚本,利用crontab定时跑任务:
#!/bin/bash
#read -p "please input your name: " name
echo "GOOD LUCK ~"
export mypath=/tmp/qy
export JAVA_HOME=/export/server/jdk
PATH=$PATH:$JAVA_HOME/bin
java -Xmx3000m -Xms3000m -server -d64 -Dfile.encoding=UTF-8 -Dfetch.threads=300 -classpath $mypath/:$mypath/DataApiCollectDemo.jar $*
echo "END"
java -jar $mypath/DataApiCollectDemo.jar a55640b4-dc8c-4c48-8937-fd8f78b5490d 1b841c31-c217-418d-9f13-7e8ef76e7398 default "{\"flgtNo\":\"6\",\"updateTime\":\"20200709\",\"id\":\"8888\",\"flgtId\":\"9999\"}" 10 http://10.241.242.58:8829/v1/realsyn/http/send/data <<EOF
pwd;
exit;
EOF
脚本还可以优化。。。后续有时间继续搞。。。
然后在crontab中定时执行如下:
*/10 * * * * /tmp/qy/demo.sh
每隔10分钟执行这个脚本,触发结果就是往kafka打数据,并通过http采集服务落盘到不同的存储类型(mysql/hbase/kafka)
然后实验了一天,成了,数据也稳稳落盘,
剩下的任务就是定时(每天或者其他时间)监控一下数据落盘日志即可,比如下图的监控:
上图可以看到数据何时落盘,数据落盘条数,很清晰,说明我的定时脚本也是按时在跑,数据采集服务也没有问题。