分布式系统架构实战--简易版支付系统部署(单节点)

简介:

RewzBxDE7WYhG5iJiCQFiJFNSZFfRD63.jpg


一、前期准备

1、MySQL数据库的安装:MySQL-5.6.22,自行安装

2、Dubbo视频教程--基础篇--第03节--ZooKeeper注册中心安装

3、Dubbo视频教程--基础篇--第06节--Dubbo管理控制台的安装

4、Dubbo视频教程--基础篇--第10节--Dubbo监控中心的介绍与简易监控中心的安装

5、持续集成管理平台(SVN、Nexus、Maven、Hudson)的安装

Dubbo视频教程--基础篇--第11节至18节

6、Dubbo视频教程--高级篇--第21节--ActiveMQ的安装与使用

7、Dubbo视频教程--高级篇--第22节--Redis的安装与使用

8、Dubbo视频教程--高级篇--第23节--FastDFS分布式文件系统的安装与使用

 

二、对部署环境进行规划


TrWmFaeRC7j5MQA85YDp3zznMjSEfajJ.png


创建数据库

数据库编码为:UTF-8

数据库引擎为:InnoDB

导入“基于Dubbo的分布式系统架构视频教程--简易版支付系统源码.rar”中的

“数据库--edu_simple_pay.rar”中的“edu_simple_pay.sql”

 

调整公共配置文件

WxNwy8h4NJn6jF8d3rHwtEpPnDKKpjXt.png


应用部署前期准备


1、common工程构建、发布到Maven私有库

3pP3BDXExJNAHMpfhCQfydZjmzybXJB5.png


尤其注意pay-common-config工程的构建(配置文件修改后需要重新构建,引用处也要重新构建)

 

2、facade工程构建、发布到Maven私有库

zp6bQ5XKDiHR6HZnWQAYbdfSyMdGaHw3.png


部署服务


1、规划好服务部署目录,准备好服务管理脚本

B6sM2DZ3Nb34FsRT74r8BAP5NyG7PCR4.png


/home/wusc/edu/service/account/service-account.sh

#!/bin/sh

## java env

export JAVA_HOME=/usr/local/java/jdk1.7.0_72

export JRE_HOME=$JAVA_HOME/jre

## you just need to change this param name

APP_NAME=account

SERVICE_DIR=/home/wusc/edu/service/$APP_NAME

SERVICE_NAME=pay-service-$APP_NAME

JAR_NAME=$SERVICE_NAME\.jar

PID=$SERVICE_NAME\.pid

cd $SERVICE_DIR

case "$1" in

    start)

        nohup $JRE_HOME/bin/java -Xms128m -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

        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

 

2、使用Hudson来自动化部署服务

c3JyJ3ietaTTm4bKXMZ7tZaTKts28ExP.png


3、通过Dubbo管控台检查各服务是否都部署成功


RzQe85bWjrYNNdspFA574wEsM8P7yMn6.png


部署Web应用


1、规划好Web应用部署目录、端口、脚本


HyTJXz42riab4Cp8xc58pJyEeJ2zie3k.png


bank-receive-tomcat     8081

boss-tomcat             8082

gateway-tomcat          8083

notify-receive-tomcat   8084

portal-tomcat           8085

shop-tomcat             8086

trade-tomcat            8087

 

/home/wusc/edu/web/bank-receive-tomcat/restart.sh

## java env

export JAVA_HOME=/usr/local/java/jdk1.7.0_72

export JRE_HOME=$JAVA_HOME/jre

## restart tomcat

current_dir=$(cd `dirname $0`; pwd)

echo "=== current_dir is:$current_dir"

$current_dir/bin/shutdown.sh

sleep 3

rm -rf $current_dir/webapps/*/

sleep 2

$current_dir/bin/startup.sh

 

部署APP

cE7S6xPyWhBR6WsnQNQzpkWXBYN4KN4c.png


/home/wusc/edu/app/queue-notify/app-queue-notify.sh

#!/bin/sh

## java env

export JAVA_HOME=/usr/local/java/jdk1.7.0_72

export JRE_HOME=$JAVA_HOME/jre

## you only need to change next two parameters value

APP_DIR=/home/wusc/edu/app/queue-notify

APP_NAME=pay-app-queue-notify

JAR_NAME=$APP_NAME\.jar

cd $APP_DIR

## check app process weather exists

process=`ps aux | grep -w "$APP_NAME" | grep -v grep`

if [ "$process" == "" ]; then

    echo "=== $APP_NAME process not exists"

else

    echo "=== $APP_NAME process exists"

    echo "=== $APP_NAME process is : $process"

    ## get PID by process name

    P_ID=`ps -ef | grep -w "$APP_NAME" | grep -v "grep" | awk '{print $2}'`

    echo "=== $APP_NAME process PID is:$P_ID"

    echo "=== begin kill $APP_NAME process"

    kill $P_ID

    sleep 3

    P_ID=`ps -ef | grep -w "$APP_NAME" | grep -v "grep" | awk '{print $2}'`

    if [ "$P_ID" == "" ]; then

        echo "=== $APP_NAME process stop success"

    else

        echo "=== $APP_NAME process kill failed, PID is:$P_ID"

        echo "=== begin kill -9 $APP_NAME process, PID is:$P_ID"

        sleep 3

        kill -9 $P_ID

    fi

fi

sleep 2

echo "=== begin start $APP_NAME"

$JRE_HOME/bin/java -Xms128m -Xmx512m -jar $APP_DIR/$JAR_NAME >/dev/null 2>&1 &

 

部署定时任务

定时任务的部署与调用分离

k7y6RJpaDDSXtQkA65CW4M3ZJdkABx5A.png

einAH2EKy6RGY4DGBrHwbwhMC8ydWdr7.png


TrwB4K7G6EzimNHjaMTyRZEdDjm27QmH.png


/home/wusc/edu/timer/report/timer-report.sh

#!/bin/sh

## java env

export JAVA_HOME=/usr/local/java/jdk1.7.0_72

export JRE_HOME=$JAVA_HOME/jre

## you only need to chage next two line value

SERVICE_DIR=/home/wusc/edu/timer/report

APP_NAME=pay-timer-report

JAR_NAME=$APP_NAME\.jar

sleep 1

echo "=== invoke task, please wait"

$JRE_HOME/bin/java -jar $SERVICE_DIR/$JAR_NAME >/dev/null 2>&1 &

## until process stop to print log

while true

do

   process=`ps aux | grep $APP_NAME | grep -v grep`;

   if [ "$process" == "" ]; then

        sleep 1;

        echo "=== task complete";

        sleep 3;

        break;

   else

        echo "=== process is running, please wait";

        sleep 10;

        continue;

   fi

done

 


目录
相关文章
|
27天前
|
设计模式 安全 Java
【分布式技术专题】「Tomcat技术专题」 探索Tomcat技术架构设计模式的奥秘(Server和Service组件原理分析)
【分布式技术专题】「Tomcat技术专题」 探索Tomcat技术架构设计模式的奥秘(Server和Service组件原理分析)
32 0
|
4天前
|
存储 关系型数据库 分布式数据库
电子好书发您分享《PolarDB分布式版架构介绍PolarDB分布式版架构介绍》
**《PolarDB分布式版架构介绍》电子书分享:** 探索阿里云PolarDB分布式设计,采用计算存储分离,借助GMS、CN组件实现大规模扩展。[阅读更多](https://developer.aliyun.com/ebook/8332/116553?spm=a2c6h.26392459.ebook-detail.5.3b3b2ccbVVjjt0)
14 3
|
16天前
|
Docker 容器 关系型数据库
【PolarDB-X从入门到精通】 第四讲:PolarDB分布式版安装部署(源码编译部署)
本期课程将于4月11日19:00开始直播,内容包括源码编译基础知识和实践操作,课程目标是使学员掌握源码编译部署技能,为未来发展奠定基础,期待大家在课程中取得丰富的学习成果!
【PolarDB-X从入门到精通】 第四讲:PolarDB分布式版安装部署(源码编译部署)
|
27天前
|
NoSQL Java Redis
【分布式技术专题】「分布式技术架构」手把手教你如何开发一个属于自己的分布式锁的功能组件(二)
【分布式技术专题】「分布式技术架构」手把手教你如何开发一个属于自己的分布式锁的功能组件
15 0
|
1天前
|
存储 分布式计算 Hadoop
基于Hadoop分布式数据库HBase1.0部署及使用
基于Hadoop分布式数据库HBase1.0部署及使用
|
2天前
|
关系型数据库 分布式数据库 数据库
电子好书发您分享《PolarDB分布式版架构介绍》
阅读阿里云电子书《PolarDB分布式版架构介绍》,深入理解这款高性能数据库的分布式架构设计。书中通过图文并茂的方式揭示了PolarDB在分布式场景下的核心特性和技术优势,适合数据库爱好者和云计算从业者学习。[阅读链接](https://developer.aliyun.com/ebook/8332/116553?spm=a2c6h.26392459.ebook-detail.5.4ab72ccbIzDq2Q)
|
3天前
|
存储 SQL 关系型数据库
电子好书发您分享《PolarDB分布式版架构介绍》
**PolarDB分布式版详解:** 阿里云的PolarDB采用计算存储分离架构,利用GMS进行元数据管理,CN处理分布式SQL。结合PolarFS,实现高效存储与计算,支持大规模扩展。[阅读完整架构介绍](https://developer.aliyun.com/ebook/8332/116553?spm=a2c6h.26392459.ebook-detail.5.5b912ccbE20nqg)
|
5天前
|
存储 关系型数据库 分布式数据库
电子好书发您分享《PolarDB分布式版架构介绍》
**探索PolarDB分布式版:阿里巴巴云的高扩展数据库解决方案,采用计算存储分离架构,确保高性能和弹性扩展。[阅读详情](https://developer.aliyun.com/ebook/8332/116553?spm=a2c6h.26392459.ebook-detail.5.33ac2ccbVd9TB2)**
92 7
|
27天前
|
存储 监控 安全
金石推荐 | 【分布式技术专题】「单点登录技术架构」一文带领你好好认识以下Saml协议的运作机制和流程模式
金石推荐 | 【分布式技术专题】「单点登录技术架构」一文带领你好好认识以下Saml协议的运作机制和流程模式
62 1
|
27天前
|
存储 Java 应用服务中间件
【分布式技术专题】「架构实践于案例分析」盘点互联网应用服务中常用分布式事务(刚性事务和柔性事务)的原理和方案
【分布式技术专题】「架构实践于案例分析」盘点互联网应用服务中常用分布式事务(刚性事务和柔性事务)的原理和方案
50 0