因dubbo服务脏路由导致服务启停时间延长
#!/bin/bash
DATE=`date "+%Y-%m-%d_%H_%M"`
#########zkCli#################
ZK_IP="$1"
ZK_PORT="$2"
ZKCli_DIR=/app/dubbo/zookeeper-3.4.6/bin
#########file1为备份###########
Delroute_bak=/app/zookeeper/route/delroute_bak
#########file2为黑名单#########
Black_list=/app/zookeeper/route/file2
Black_DIR=/app/zookeeper/route
########zookeeper路径################
ZK_DIR=/app/dubbo/zookeeper-3.4.6/bin
#########检查是否添加变量######
if [[ ! -n "${ZK_IP}" || ! -n "${ZK_PORT}" ]];then
exit
fi
#########检查是否有对比文件####
if [[ ! -e ${Black_list} ]];then
touch ${Black_list}
fi
if [[ ! -d ${Black_DIR} ]];then
mkdir -p ${Black_DIR}
fi
if [[ ! -d ${Black_DIR}/route_bak ]];then
mkdir -p ${Black_DIR}/route_bak
fi
if [[ ! -f ${Delroute_bak} ]];then
touch ${Delroute_bak}
else
mv ${Delroute_bak} ${Black_DIR}/route_bak/route_bak${DATE}
fi
#########删除路由脚本##########
Delroute_file=`echo wchc | nc "${ZK_IP}" "${ZK_PORT}" |grep -v 0x | grep routers | sort -u | sed 's/[[:space:]]//g' |sed 's/^/rmr /g' > ${Delroute_bak}`
LOG_CUT=`split -l 300 $Delroute_bak "${Black_DIR}"/log_cut3`
ls ${Black_DIR}/log_cut3* | while read line
do
Delroute=`diff -a ${line} ${Black_list} | awk -F "< " '{print $2}' | awk NR | grep -v '^$'`
cretae_route=`diff -a ${line} ${Black_list} | awk -F "< " '{print $2}' | awk NR | grep -v '^$' |sed 's/$/& null/g' | sed 's/^rmr/create/g'`
ZK_DEL=`cd "${ZKCli_DIR}";./zkCli.sh -timeout 30000 -server ${ZK_IP}:${ZK_PORT}<$Delroute
$cretae_route
EOF`
done
if [ ! $? -eq 0 ];then
exit 1
else
exit 0
fi
rm -fr "${Black_DIR}"/log_cut3*