【dubbo】在linux上单机部署dubbo的规范

在我们部署dubbo服务的过程中肯定是要部署在linux上面的,如果是用windows部署那就太屌丝了。

0、服务器的划分

如果是在测试环境,我们经常使用单机部署。为此至少有以下几个服务器。
server01-zookeeper
server02-database
server03-provider
server04-consumer

1、环境变量配置

Java环境变量----只需要JRE vi /etc/profile
## java env 
export JAVA_HOME=/usr/local/java/jdk1.7.0_72 
export JRE_HOME=$JAVA_HOME/jre 
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/li/tools.jar:$JRE_HOME/lib/rt.jar 
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin


source /etc/profile

2、部署目录规范

【dubbo】在linux上单机部署dubbo的规范_第1张图片

当我们有多个应用多个程序的时候,我们必须对目录进行规范要避免应用迁移时的路径冲突

3、手工维护Dubbo服务

如果在部署过程中,我们仅仅使用手工的方式来管理项目,那么我经常用到的是如下几个命令。

java -jar edu-service-xxx.jar 
kill PID
kill -9 PID

4、自定义Dubbo服务维护的Shell脚本

上面说到了手动维护dubbo服务,那么我们一定有自动维护的脚本。我们先来说一下规范。

#脚本命名规范: 
/home/wusc/edu/service/xxx/service-xxx.sh
#例如: 
/home/wusc/edu/service/user/service-user.sh
#效果: 
cd /home/wusc/edu/service/user 
. /service-user.sh  start 
. /service-user.sh  stop 
. /service-user.sh  restart

脚本内容:

#!/bin/sh
# 对于此脚本,需要严格规范自己的项目发布路径,发布不同的模块,只需要修改APP_NAME的名称即可,也可以让APP_NAME以参数的形式发布进来
## java env
export JAVA_HOME=/usr/local/java/jdk1.7.0_72
export JRE_HOME=$JAVA_HOME/jre

## service name 
APP_NAME=user

SERVICE_DIR=/home/wusc/edu/service/$APP_NAME
SERVICE_NAME=edu-service-$APP_NAME
JAR_NAME=$SERVICE_NAME\.jar
PID=$SERVICE_NAME\.pid

cd $SERVICE_DIR

case "$1" in

    start)
# nohup  表示守护进程
# >/dev/null 表示将启动的日志输出到一个linux默认的黑洞中,不再显示日志。因为我们在项目中已经配置了log4j日志,所以我们这里不再需要再次收集日志。
        nohup $JRE_HOME/bin/java -Xms256m -Xmx512m -jar $JAR_NAME >/dev/null 2>&1 &
        echo $! > $SERVICE_DIR/$PID
        echo "=== start $SERVICE_NAME"
        ;;

    stop)
        kill `cat $SERVICE_DIR/$PID`
        rm -rf $SERVICE_DIR/$PID
        echo "=== stop $SERVICE_NAME"

        sleep 5
		##
		## edu-service-aa.jar
		## edu-service-aa-bb.jar
        P_ID=`ps -ef | grep -w "$SERVICE_NAME" | grep -v "grep" | awk '{print $2}'`
        if [ "$P_ID" == "" ]; then
            echo "=== $SERVICE_NAME process not exists or stop success"
        else
            echo "=== $SERVICE_NAME process pid is:$P_ID"
            echo "=== begin kill $SERVICE_NAME process, pid is:$P_ID"
            kill -9 $P_ID
        fi
        ;;

    restart)
        $0 stop
        sleep 2
        $0 start
        echo "=== restart $SERVICE_NAME"
        ;;

    *)
        ## restart
        $0 stop
        sleep 2
        $0 start
        ;;

esac
exit 0


5、服务维护注意事项

(1) 脚本规范---------尽可能通用
(2) 守护进程
(3) 内存调优设置-----按需调整
(4) 日志处理---------只保留应用Log4j输出的日志
(5) 避免服务冲突 ----进程名、端口
(6) 避免进程误杀-----全匹配

脚本配置灵活高深,满足需求则可
可参考官方脚本样例

你可能感兴趣的:(Dubbo,Dubbo)