dubbo微服务

本文档详细介绍了Dubbo微服务的项目结构,包括各模块的依赖关系,并展示了如何设置JAVA_MEM_OPTS以优化服务性能。同时,提供了日志配置的示例,包括控制台输出和日志文件的管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

dubbo-----------------------------------------------------------

项目结构
incubator-dubbo-dubbo-2.6.0

sc
sc-pay
sc-pay-client
sc-pay-common
sc-pay-dao
sc-pay-service

sc-order
	sc-order-client
	sc-order-common
	sc-order-dao
	sc-order-service

https://github.com/apache/incubator-dubbo/tree/dubbo-2.6.0

依赖
sc pom.xml

<?xml version="1.0" encoding="UTF-8"?>


4.0.0

<groupId>com.sc</groupId>
<artifactId>sc</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>8</source>
                <target>8</target>
            </configuration>
        </plugin>
    </plugins>
</build>


<modules>
    <module>sc-pay</module>
    <module>sc-order</module>
</modules>

<properties>
    <project.version>1.0-SNAPSHOT</project.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
    <!-- 常量信息 -->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <hadoop.version>2.7.3</hadoop.version>
    <hbase.version>1.2.6</hbase.version>
    <hive.version>2.3.3</hive.version>
    <uasparser.version>0.6.1</uasparser.version>
    <slf4j.version>1.7.25</slf4j.version>
    <log4j.version>1.2.17</log4j.version>
    <spring.version>4.3.18.RELEASE</spring.version>
</properties>


<dependencyManagement>
    <dependencies>
        <!-- spring -->
        <!-- Spring依赖 -->
        <!-- 1.Spring核心依赖 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <!--Spring aop-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.9.1</version>
        </dependency>

        <!-- 2.Spring dao依赖 -->
        <!-- spring-jdbc包括了一些如jdbcTemplate的工具类 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!-- 3.Spring web依赖 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!-- 4.Spring test依赖:方便做单元测试和集成测试 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
        </dependency>


        <!--mybatis-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.6</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.3.2</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.7</version>
        </dependency>

        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.5</version>
        </dependency>

        <!-- servlet -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>




        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.11</version>
        </dependency>

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.8.8.1</version>
        </dependency>


        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.8</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.6.3</version>
        </dependency>


        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-client</artifactId>
            <version>2.8.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>2.7.0</version>
        </dependency>
        <dependency>
            <groupId>io.netty</groupId>
            <artifactId>netty-all</artifactId>
            <version>4.1.6.Final</version>
        </dependency>


        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>${log4j.version}</version>
        </dependency>

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${slf4j.version}</version>
        </dependency>

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>${slf4j.version}</version>
        </dependency>


        <dependency>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>jetty</artifactId>
            <version>6.1.26</version>
        </dependency>


        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-client</artifactId>
            <version>3.0.19.Final</version>
        </dependency>
        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-spring</artifactId>
            <version>3.0.7.Final</version>
        </dependency>
        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-jackson-provider</artifactId>
            <version>3.0.7.Final</version>
        </dependency>

        <dependency>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
            <version>1.1.0.Final</version>
        </dependency>


        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
            <version>1.1.3</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-access</artifactId>
            <version>1.1.3</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.1.3</version>
        </dependency>



        <!-- 项目依赖 -->
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-client</artifactId>
            <version>${hadoop.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-common</artifactId>
            <version>${hadoop.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-hdfs</artifactId>
            <version>${hadoop.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-auth</artifactId>
            <version>${hadoop.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-client</artifactId>
            <version>${hbase.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-server</artifactId>
            <version>${hbase.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hive</groupId>
            <artifactId>hive-exec</artifactId>
            <version>${hive.version}</version>
        </dependency>



        <dependency>
            <groupId>com.sc</groupId>
            <artifactId>sc-pay-service</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>com.sc</groupId>
            <artifactId>sc-pay-client</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>com.sc</groupId>
            <artifactId>sc-pay-common</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>com.sc</groupId>
            <artifactId>sc-pay-dao</artifactId>
            <version>${project.version}</version>
        </dependency>


    </dependencies>
</dependencyManagement>

sc-pay pom.xml

<?xml version="1.0" encoding="UTF-8"?>

<parent>
    <artifactId>sc</artifactId>
    <groupId>com.sc</groupId>
    <version>1.0-SNAPSHOT</version>
</parent>

<modelVersion>4.0.0</modelVersion>

<groupId>com.sc</groupId>
<artifactId>sc-pay</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
    <module>sc-pay-service</module>
    <module>sc-pay-client</module>
    <module>sc-pay-dao</module>
    <module>sc-pay-common</module>
</modules>

sc-pay-client pom.xml

<?xml version="1.0" encoding="UTF-8"?>



sc-pay
com.sc
1.0-SNAPSHOT

4.0.0

<artifactId>sc-pay-client</artifactId>


<dependencies>
    <dependency>
        <groupId>com.sc</groupId>
        <artifactId>sc-pay-common</artifactId>
    </dependency>


    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-client</artifactId>
    </dependency>
    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-spring</artifactId>
    </dependency>
    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jackson-provider</artifactId>
    </dependency>
</dependencies>

sc-pay-service pom.xml

<?xml version="1.0" encoding="UTF-8"?>



sc-pay
com.sc
1.0-SNAPSHOT

4.0.0

<artifactId>sc-pay-service</artifactId>
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-deploy-plugin</artifactId>
            <version>2.8.2</version>
            <configuration>
                <skip>true</skip>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.4</version>
        </plugin>
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <descriptor>src/main/assembly/assembly.xml</descriptor>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
                <encoding>UTF-8</encoding>
            </configuration>
            <dependencies>
                <dependency>
                    <groupId>org.codehaus.plexus</groupId>
                    <artifactId>plexus-compiler-javac</artifactId>
                    <version>1.8.1</version>
                </dependency>
            </dependencies>
        </plugin>
        <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <version>2.6</version>
            <configuration>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.10</version>
            <configuration>
                <skip>true</skip>
                <testFailureIgnore>true</testFailureIgnore>
            </configuration>
        </plugin>
    </plugins>
</build>


<dependencies>

    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>dubbo</artifactId>
    </dependency>


    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
    </dependency>

    <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
    </dependency>

    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-spring</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.curator</groupId>
        <artifactId>curator-client</artifactId>
    </dependency>
    <dependency>
        <groupId>io.netty</groupId>
        <artifactId>netty-all</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.curator</groupId>
        <artifactId>curator-recipes</artifactId>
    </dependency>
    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-client</artifactId>
    </dependency>
    <dependency>
        <groupId>org.mortbay.jetty</groupId>
        <artifactId>jetty</artifactId>
    </dependency>

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
    </dependency>


    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
    </dependency>


    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-core</artifactId>
    </dependency>
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-access</artifactId>
    </dependency>
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
    </dependency>

    <dependency>
        <groupId>com.sc</groupId>
        <artifactId>sc-pay-client</artifactId>
    </dependency>


</dependencies>

sc-order pom.xml

<?xml version="1.0" encoding="UTF-8"?>

<parent>
    <artifactId>sc</artifactId>
    <groupId>com.sc</groupId>
    <version>1.0-SNAPSHOT</version>
</parent>

<modelVersion>4.0.0</modelVersion>

<groupId>com.sc</groupId>
<artifactId>sc-order</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
    <module>sc-order-service</module>
    <module>sc-order-client</module>
    <module>sc-order-common</module>
    <module>sc-order-dao</module>
</modules>

sc-order-client pom.xml

<?xml version="1.0" encoding="UTF-8"?>



sc-order
com.sc
1.0-SNAPSHOT

4.0.0

<artifactId>sc-order-client</artifactId>


<dependencies>
    <dependency>
        <groupId>com.sc</groupId>
        <artifactId>sc-order-common</artifactId>
        <version>${project.version}</version>
    </dependency>


    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-client</artifactId>
    </dependency>
    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-spring</artifactId>
    </dependency>
    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jackson-provider</artifactId>
    </dependency>
</dependencies>

sc-order-service pom.xml

<?xml version="1.0" encoding="UTF-8"?>



sc-order
com.sc
1.0-SNAPSHOT

4.0.0

<artifactId>sc-order-service</artifactId>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-deploy-plugin</artifactId>
            <version>2.8.2</version>
            <configuration>
                <skip>true</skip>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.4</version>
        </plugin>
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <descriptor>src/main/assembly/assembly.xml</descriptor>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
                <encoding>UTF-8</encoding>
            </configuration>
            <dependencies>
                <dependency>
                    <groupId>org.codehaus.plexus</groupId>
                    <artifactId>plexus-compiler-javac</artifactId>
                    <version>1.8.1</version>
                </dependency>
            </dependencies>
        </plugin>
        <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <version>2.6</version>
            <configuration>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.10</version>
            <configuration>
                <skip>true</skip>
                <testFailureIgnore>true</testFailureIgnore>
            </configuration>
        </plugin>
    </plugins>
</build>



<dependencies>

    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>dubbo</artifactId>
    </dependency>


    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
    </dependency>

    <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
    </dependency>

    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-spring</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.curator</groupId>
        <artifactId>curator-client</artifactId>
    </dependency>
    <dependency>
        <groupId>io.netty</groupId>
        <artifactId>netty-all</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.curator</groupId>
        <artifactId>curator-recipes</artifactId>
    </dependency>
    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-client</artifactId>
    </dependency>
    <dependency>
        <groupId>org.mortbay.jetty</groupId>
        <artifactId>jetty</artifactId>
    </dependency>

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
    </dependency>


    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
    </dependency>


    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-core</artifactId>
    </dependency>
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-access</artifactId>
    </dependency>
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
    </dependency>


    <dependency>
        <groupId>com.sc</groupId>
        <artifactId>sc-order-client</artifactId>
        <version>${project.version}</version>
    </dependency>

    <dependency>
        <groupId>com.sc</groupId>
        <artifactId>sc-pay-client</artifactId>
        <version>${project.version}</version>
    </dependency>


</dependencies>

dubbo打包工具 assembly

sc-order-service/src/main/assembly/assembly.xml

assembly

tar.gz

true


src/main/assembly/bin
bin
0755


src/main/assembly/conf
conf
0644




lib
runtime


sc-order-service/src/main/assembly/bin

dump.sh

#!/bin/bash
cd dirname $0
BIN_DIR=pwd
cd …
DEPLOY_DIR=pwd
CONF_DIR=$DEPLOY_DIR/conf

SERVER_NAME=sed '/dubbo.application.name/!d;s/.*=//' conf/dubbo.properties | tr -d '\r'
LOGS_FILE=sed '/dubbo.log4j.file/!d;s/.*=//' conf/dubbo.properties | tr -d '\r'

if [ -z “$SERVER_NAME” ]; then
SERVER_NAME=hostname
fi

PIDS=ps -f | grep java | grep "$CONF_DIR" |awk '{print $2}'
if [ -z “$PIDS” ]; then
echo “ERROR: The $SERVER_NAME does not started!”
exit 1
fi

LOGS_DIR=""
if [ -n “$LOGS_FILE” ]; then
LOGS_DIR=dirname $LOGS_FILE
else
LOGS_DIR=$DEPLOY_DIR/logs
fi
if [ ! -d $LOGS_DIR ]; then
mkdir L O G S D I R f i D U M P D I R = LOGS_DIR fi DUMP_DIR= LOGSDIRfiDUMPDIR=LOGS_DIR/dump
if [ ! -d $DUMP_DIR ]; then
mkdir D U M P D I R f i D U M P D A T E = ‘ d a t e + D A T E D I R = DUMP_DIR fi DUMP_DATE=`date +%Y%m%d%H%M%S` DATE_DIR= DUMPDIRfiDUMPDATE=date+DATEDIR=DUMP_DIR/$DUMP_DATE
if [ ! -d $DATE_DIR ]; then
mkdir $DATE_DIR
fi

echo -e “Dumping the $SERVER_NAME …\c”
for PID in $PIDS ; do
jstack $PID > D A T E D I R / j s t a c k − DATE_DIR/jstack- DATEDIR/jstackPID.dump 2>&1
echo -e “.\c”
jinfo $PID > D A T E D I R / j i n f o − DATE_DIR/jinfo- DATEDIR/jinfoPID.dump 2>&1
echo -e “.\c”
jstat -gcutil $PID > D A T E D I R / j s t a t − g c u t i l − DATE_DIR/jstat-gcutil- DATEDIR/jstatgcutilPID.dump 2>&1
echo -e “.\c”
jstat -gccapacity $PID > D A T E D I R / j s t a t − g c c a p a c i t y − DATE_DIR/jstat-gccapacity- DATEDIR/jstatgccapacityPID.dump 2>&1
echo -e “.\c”
jmap $PID > D A T E D I R / j m a p − DATE_DIR/jmap- DATEDIR/jmapPID.dump 2>&1
echo -e “.\c”
jmap -heap $PID > D A T E D I R / j m a p − h e a p − DATE_DIR/jmap-heap- DATEDIR/jmapheapPID.dump 2>&1
echo -e “.\c”
jmap -histo $PID > D A T E D I R / j m a p − h i s t o − DATE_DIR/jmap-histo- DATEDIR/jmaphistoPID.dump 2>&1
echo -e “.\c”
if [ -r /usr/sbin/lsof ]; then
/usr/sbin/lsof -p $PID > D A T E D I R / l s o f − DATE_DIR/lsof- DATEDIR/lsofPID.dump
echo -e “.\c”
fi
done

if [ -r /bin/netstat ]; then
/bin/netstat -an > $DATE_DIR/netstat.dump 2>&1
echo -e “.\c”
fi
if [ -r /usr/bin/iostat ]; then
/usr/bin/iostat > $DATE_DIR/iostat.dump 2>&1
echo -e “.\c”
fi
if [ -r /usr/bin/mpstat ]; then
/usr/bin/mpstat > $DATE_DIR/mpstat.dump 2>&1
echo -e “.\c”
fi
if [ -r /usr/bin/vmstat ]; then
/usr/bin/vmstat > $DATE_DIR/vmstat.dump 2>&1
echo -e “.\c”
fi
if [ -r /usr/bin/free ]; then
/usr/bin/free -t > $DATE_DIR/free.dump 2>&1
echo -e “.\c”
fi
if [ -r /usr/bin/sar ]; then
/usr/bin/sar > $DATE_DIR/sar.dump 2>&1
echo -e “.\c”
fi
if [ -r /usr/bin/uptime ]; then
/usr/bin/uptime > $DATE_DIR/uptime.dump 2>&1
echo -e “.\c”
fi

echo “OK!”
echo “DUMP: $DATE_DIR”

restart.sh

#!/bin/bash
cd dirname $0
./stop.sh
./start.sh

server.sh

#!/bin/bash
cd dirname $0
if [ “$1” = “start” ]; then
./start.sh
else
if [ “$1” = “stop” ]; then
./stop.sh
else
if [ “$1” = “debug” ]; then
./start.sh debug
else
if [ “$1” = “restart” ]; then
./restart.sh
else
if [ “$1” = “dump” ]; then
./dump.sh
else
echo “ERROR: Please input argument: start or stop or debug or restart or dump”
exit 1
fi
fi
fi
fi
fi

start.bat

@echo off & setlocal enabledelayedexpansion

set LIB_JARS=""
cd …\lib
for %%i in (*) do set LIB_JARS=!LIB_JARS!;…\lib%%i
cd …\bin

if “”%1"" == ““debug”” goto debug
if “”%1"" == ““jmx”” goto jmx

java -Xms64m -Xmx1024m -XX:MaxPermSize=64M -classpath …\conf;%LIB_JARS% com.alibaba.dubbo.container.Main
goto end

:debug
java -Xms64m -Xmx1024m -XX:MaxPermSize=64M -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n -classpath …\conf;%LIB_JARS% com.alibaba.dubbo.container.Main
goto end

:jmx
java -Xms64m -Xmx1024m -XX:MaxPermSize=64M -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -classpath …\conf;%LIB_JARS% com.alibaba.dubbo.container.Main

:end
pause

start.sh

#!/bin/bash
cd dirname $0
BIN_DIR=pwd
cd …
DEPLOY_DIR=pwd
CONF_DIR=$DEPLOY_DIR/conf

SERVER_NAME=sed '/dubbo.application.name/!d;s/.*=//' conf/dubbo.properties | tr -d '\r'
SERVER_PROTOCOL=sed '/dubbo.protocol.name/!d;s/.*=//' conf/dubbo.properties | tr -d '\r'
SERVER_PORT=sed '/dubbo.protocol.port/!d;s/.*=//' conf/dubbo.properties | tr -d '\r'
LOGS_FILE=sed '/dubbo.log4j.file/!d;s/.*=//' conf/dubbo.properties | tr -d '\r'

if [ -z “$SERVER_NAME” ]; then
SERVER_NAME=hostname
fi

PIDS=ps -f | grep java | grep "$CONF_DIR" |awk '{print $2}'
if [ -n “$PIDS” ]; then
echo “ERROR: The $SERVER_NAME already started!”
echo “PID: $PIDS”
exit 1
fi

if [ -n “$SERVER_PORT” ]; then
SERVER_PORT_COUNT=netstat -tln | grep $SERVER_PORT | wc -l
if [ $SERVER_PORT_COUNT -gt 0 ]; then
echo “ERROR: The $SERVER_NAME port $SERVER_PORT already used!”
exit 1
fi
fi

LOGS_DIR=""
if [ -n “$LOGS_FILE” ]; then
LOGS_DIR=dirname $LOGS_FILE
else
LOGS_DIR=$DEPLOY_DIR/logs
fi
if [ ! -d $LOGS_DIR ]; then
mkdir L O G S D I R f i S T D O U T F I L E = LOGS_DIR fi STDOUT_FILE= LOGSDIRfiSTDOUTFILE=LOGS_DIR/stdout.log

LIB_DIR=$DEPLOY_DIR/lib
LIB_JARS=ls $LIB_DIR|grep .jar|awk '{print "'$LIB_DIR'/"$0}'|tr "\n" ":"

LOCK_ZOOKEEPER_FILE="$LOGS_DIR/echo $PWD|awk -F/ '{print $NF}'.properties"
JAVA_OPTS=" -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Ddubbo.registry.file=$LOCK_ZOOKEEPER_FILE"
JAVA_DEBUG_OPTS=""
if [ “$1” = “debug” ]; then
JAVA_DEBUG_OPTS=" -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n "
fi
JAVA_JMX_OPTS=""
if [ “KaTeX parse error: Expected 'EOF', got '&' at position 247: …ava -version 2>&̲1 | grep -i 64-…BITS” ]; then

JAVA_MEM_OPTS=" -server -Xmx2g -Xms2g -Xmn256m -XX:PermSize=128m -Xss256k -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 "

#else

JAVA_MEM_OPTS=" -server -Xms1g -Xmx1g -XX:PermSize=128m -XX:SurvivorRatio=2 -XX:+UseParallelGC "

#fi

echo -e “Starting the $SERVER_NAME …\c”
nohup java $JAVA_OPTS $JAVA_MEM_OPTS $JAVA_DEBUG_OPTS $JAVA_JMX_OPTS -classpath C O N F D I R : CONF_DIR: CONFDIR:LIB_JARS com.alibaba.dubbo.container.Main > $STDOUT_FILE 2>&1 &

COUNT=0
while [ KaTeX parse error: Expected 'EOF', got '\c' at position 37: … echo -e ".\̲c̲" sleep 1 …SERVER_PORT" ]; then
if [ “$SERVER_PROTOCOL” == “dubbo” ]; then
COUNT=echo status | nc -i 1 s51 $SERVER_PORT | grep -c OK
else
COUNT=netstat -an | grep $SERVER_PORT | wc -l
fi
else
COUNT=ps -f | grep java | grep "$DEPLOY_DIR" | awk '{print $2}' | wc -l
fi
if [ $COUNT -gt 0 ]; then
break
fi
done

echo “OK!”
PIDS=ps -f | grep java | grep "$DEPLOY_DIR" | awk '{print $2}'
echo “PID: $PIDS”
echo “STDOUT: $STDOUT_FILE”

stop.sh

#!/bin/bash
cd dirname $0
BIN_DIR=pwd
cd …
DEPLOY_DIR=pwd
CONF_DIR=$DEPLOY_DIR/conf

SERVER_NAME=sed '/dubbo.application.name/!d;s/.*=//' conf/dubbo.properties | tr -d '\r'

if [ -z “$SERVER_NAME” ]; then
SERVER_NAME=hostname
fi

PIDS=ps -ef | grep java | grep "$CONF_DIR" |awk '{print $2}'
if [ -z “$PIDS” ]; then
echo “ERROR: The $SERVER_NAME does not started!”
exit 1
fi

if [ “$1” != “skip” ]; then
$BIN_DIR/dump.sh
fi

echo -e “Stopping the $SERVER_NAME …\c”
for PID in $PIDS ; do
kill $PID > /dev/null 2>&1
done

COUNT=0
while [ $COUNT -lt 1 ]; do
echo -e “.\c”
sleep 1
COUNT=1
for PID in $PIDS ; do
PID_EXIST=ps -f -p $PID | grep java
if [ -n “$PID_EXIST” ]; then
COUNT=0
break
fi
done
done

echo “OK!”
echo “PID: $PIDS”

sc-order-service/src/main/assembly/conf/dubbo.properties

dubbo.application.name=sc-pay-service
dubbo.registry.address=zookeeper://s51:2181
dubbo.protocol.port=20880
dubbo.service.min.thread.pool.size=200
dubbo.service.max.thread.pool.size=200

dubbo resources dubbo-pay-provider.xml

/src/main/resources/META-INF/spring/dubbo-pay-provider.xml


<dubbo:application name=“dubbo-sc”/>
<dubbo:registry group=“sc-pay” address=“zookeeper://s51:2181”/>
<dubbo:registry address=“zookeeper://s51:2181”/>
<dubbo:protocol name=“dubbo” port=“20880”/>
<dubbo:protocol name=“rest” port=“8888” contextpath="/pay"/>
<dubbo:annotation package=“com.sc.pay." />
<context:component-scan base-package="com.sc.pay.
” />

context:annotation-config/

mvc:annotation-driven/
mvc:default-servlet-handler/
<dubbo:service interface=“com.sc.pay.core.service.web.IPayService” protocol=“dubbo,rest” ref=“payService”/>

dubbo resources dubbo-order-provider.xml

/src/main/resources/META-INF/spring/dubbo-order-provider.xml


<dubbo:application name=“dubbo-sc”/>
<dubbo:registry group=“sc-order” address=“zookeeper://s51:2181”/>
<dubbo:registry address=“zookeeper://s51:2181”/>
<dubbo:protocol name=“dubbo” port=“20881”/>
<dubbo:protocol name=“rest” port=“8808” contextpath="/order"/>

<dubbo:annotation package="com.sc.order.*" />
<context:component-scan base-package="com.sc.order.*" />

<dubbo:service interface="com.sc.order.core.service.web.IOrderService" protocol="dubbo,rest" ref="orderService"/>

dubbo resources dubbo-pay-consumer.xml

/src/main/resources/META-INF/spring/dubbo-pay-consumer.xml


<dubbo:reference id=“payService” interface=“com.sc.pay.core.service.web.IPayService” timeout=“20000” check=“false”/>

log4j.properties

set log levels

log4j.rootLogger = DEBUG,Console,File

输出到控制台

log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target=System.out
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern= %d{ABSOLUTE} %5p %c{1}:%L - %m%n

输出到日志文件

log4j.appender.File=org.apache.log4j.RollingFileAppender
log4j.appender.File.File=${project}/WEB-INF/logs/app.log
log4j.appender.File.DatePattern=_yyyyMMdd’.log’
log4j.appender.File.MaxFileSize=10MB
log4j.appender.File.Threshold=ALL
log4j.appender.File.layout=org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern=[%p][%d{yyyy-MM-dd HH:mm:ss,SSS}][%c]%m%n

#user nobody;
worker_processes 1;

#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#pid logs/nginx.pid;

events {
worker_connections 1024;
}

http {
include mime.types;
default_type application/octet-stream;

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                  '$status $body_bytes_sent "$http_referer" '
                  '"$http_user_agent" "$http_x_forwarded_for"';

access_log  logs/access.log  main;

sendfile        on;
#tcp_nopush     on;

#keepalive_timeout  0;
keepalive_timeout  65;

#gzip  on;



    upstream order_servers{
            server 192.168.80.51:9091 weight=1;
            server 192.168.80.52:9091 weight=4;
            server 192.168.80.53:9091 weight=4;
    }


    upstream pay_servers{
            server 192.168.80.51:9092 weight=1;
            server 192.168.80.52:9092 weight=4;
            server 192.168.80.53:9092 weight=4;
    }



    upstream dubbo_order_servers{
            server 192.168.80.51:8808;
    }


    upstream dubbo_pay_servers{
            server 192.168.80.51:8888;
    }


server {
    listen       80;
    server_name  s51;

    #charset koi8-r;

    access_log  logs/host.access.log  main;

    location / {
        root   html;
        index  index.html index.htm;
    }


location /api/order/ {
	proxy_pass http://order_servers;
}


    location /order/order/ {
            proxy_pass http://dubbo_order_servers;
    }



    location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css|ttf|woff|woff2)$
    {

            root /soft/order/static;

    #expires定义用户浏览器缓存的时间为7天,如果静态页面不常更新,可以设置更长,这样可以节省带宽和缓解服务器的压力
    #        expires      7d;
    #

    }


    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}


# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
#    listen       8000;
#    listen       somename:8080;
#    server_name  somename  alias  another.alias;

#    location / {
#        root   html;
#        index  index.html index.htm;
#    }
#}


# HTTPS server
#
#server {
#    listen       443 ssl;
#    server_name  localhost;

#    ssl_certificate      cert.pem;
#    ssl_certificate_key  cert.key;

#    ssl_session_cache    shared:SSL:1m;
#    ssl_session_timeout  5m;

#    ssl_ciphers  HIGH:!aNULL:!MD5;
#    ssl_prefer_server_ciphers  on;

#    location / {
#        root   html;
#        index  index.html index.htm;
#    }
#}


server {
    listen       443 ssl;
    server_name  s51;

    ssl_certificate      ssl/server.crt;
    ssl_certificate_key  ssl/server.key;

    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m;

    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;

#    ssl_session_cache    shared:SSL:1m;
#    ssl_session_timeout  5m;

#    ssl_ciphers  HIGH:!aNULL:!MD5;
#    ssl_prefer_server_ciphers  on;

    location / {
        root   html;
        index  index.html index.htm;
        proxy_redirect off;
    }

location /api/pay/ {
	proxy_pass http://pay_servers;
}


    location /pay/pay/ {
            proxy_pass http://dubbo_pay_servers;
    }


    location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css|ttf|woff|woff2)$
    {

            root /soft/pay/static;

    #expires定义用户浏览器缓存的时间为7天,如果静态页面不常更新,可以设置更长,这样可以节省带宽和缓解服务器的压力
    #        expires      7d;
    #

    }
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值