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

一、前期准备

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分布式文件系统的安装与使用

 

二、对部署环境进行规划

创建数据库

数据库编码为:UTF-8

数据库引擎为:InnoDB

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

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

 

调整公共配置文件

应用部署前期准备

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

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

 

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

部署服务

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

/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来自动化部署服务

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

部署Web应用

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

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

/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 &

 

部署定时任务

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

/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

 

时间: 2024-11-03 05:16:48

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

weblogic集群中部署单节点

问题描述 weblogic集群中部署单节点 现有weblogic集群环境server-0和server-1 部署了应用A,现有一个应用B不能部署集群只能部署单节点(server-0或则server-1中的其中一个) 请问这种方式可以实现吗,并且B应用也要对外提供web访问. 如何配置实现或推荐一些资料给我,对weblogic不熟悉,找不到搜索关键词 解决方案 http://blog.csdn.net/xu1314/article/details/41870807 解决方案二: 多节点部署Cass

分布式架构--简易版支付系统介绍

一.工程结构 pay-common-parent 项目的Maven父配置工程 pay-common 公共工程,所有项目均可引用 pay-common-config 公共配置工程 pay-common-core 公共核心工程,service工程共用 pay-common-web 公共web工程,web工程共用 pay-api-merchant 商户API工程,商户对接支付平台时使用(如:模拟商城pay-web-shop) pay-facade-account 账户服务接口 pay-facade-b

Dubbo分布式架构实战--FastDFS分布式文件系统的安装与使用(单节点)

跟踪服务器:192.168.4.121 (edu-dfs-tracker-01) 存储服务器:192.168.4.125 (edu-dfs-storage-01) 环境:CentOS 6.6 用户:root                                                    数据目录:/fastdfs   (注:数据目录按你的数据盘挂载路径而定) 安装包: FastDFS v5.05 libfastcommon-master.zip(是从FastDFS和Fast

预构建Linux映像在Windows Azure中部署多节点Hadoop群集

本文章由 http://www.aliyun.com/zixun/aggregation/13357.html">Azure CAT 团队的 Piyush Ranjan (MSFT) 撰写. 随着基础结构服务(虚拟机和虚拟网络)近期在 Windows Azure 上正式发布,越来越多的企业工作负荷正在向公共云迁移,以利用云经济效益.规模和速度.我最近参与了其中一种企业工作负荷 - 云中的大数据.在此,我将与您分享一些提示和最佳做法. 该项目要求使用预构建 Linux 映像在 Windows

可用性高达五个9!支付系统高可用架构设计实战

对于互联网应用和企业大型应用而言,多数都尽可能地要求做到7*24小时不间断运行,而要做到完全的不间断运行可以说"难于上青天". 为此,对应用的可用性程度一般衡量标准有三个9到五个9. 对于一个功能和数据量不断增加的应用,要保持比较高的可用性并非易事.为了实现高可用,付钱拉从避免单点故障.保证应用自身的高可用.解决交易量增长等方面做了许多探索和实践. 在不考虑外部依赖系统突发故障,如网络问题.三方支付和银行的大面积不可用等情况下,付钱拉的服务能力可达99.999%. 本文重点讨论如何提高

亿级流量电商详情页系统的大型高并发与高可用缓存架构实战

对于高并发的场景来说,比如电商类,o2o,门户,等等互联网类的项目,缓存技术是Java项目中最常见的一种应用技术.然而,行业里很多朋友对缓存技术的了解与掌握,仅仅停留在掌握redis/memcached等缓存技术的基础使用,最多了解一些集群相关的知识,大部分人都可以对缓存技术掌握到这个程度.然而,仅仅对缓存相关的技术掌握到这种程度,无论是对于开发复杂的高并发系统,或者是在往Java高级工程师.Java资深工程师.Java架构师这些高阶的职位发展的过程中,都是完全不够用的.技术成长出现瓶颈,在自己

从架构到监控报警,支付系统的设计如何步步为营

企业所处发展阶段不同,对支付系统的定位和架构也不尽相同.整体上来说,我们可以把一个公司的支付系统发展分为三个阶段:   支付系统:支付作为一个(封闭)的.独立的应用系统,为各系统提供支付功能支持.一般来说,这个系统仅限于为公司内部的业务提供支付支持,并且和业务紧密耦合. 支付服务:支付作为一个开发的系统,为公司内外部系统.各种业务提供支付服务.支付服务本身应该是和具体的业务解耦合的. 支付平台:支付作为一个可扩展的平台, 公司内外部的用户可以在此基础上定制开发自己的服务.   这个划分有点勉强.

企业IT架构转型之道:阿里巴巴中台战略思想与架构实战

企业IT架构转型之道 阿里巴巴中台战略思想与架构实战 钟 华 编 著 图书在版编目(CIP)数据 企业IT架构转型之道:阿里巴巴中台战略思想与架构实战 / 钟华编著. -北京:机械工业出版社,2017.4 ISBN 978-7-111-56480-5 I. 企- II. 钟- III. 电子商务-商业企业管理-研究-中国 IV. F724.6 中国版本图书馆CIP数据核字(2017)第068703号 企业IT架构转型之道 阿里巴巴中台战略思想与架构实战 出版发行:机械工业出版社(北京市西城区百万

系统架构-性能篇章2(系统拆分1)

系统为什么拆分? 系统做大了,并发量无法扛得住,如何做? 业务做复杂了,单个应用中不能个性化,如何做? 模块和逻辑对各类资源开销非常特殊,如何做? ...... 拆分.拆分.再拆分. 由 全世界用一个系统表达全世界所有的企业和公司的业务开始,注定系统做大后必然拆分的走向,也就是一个大力士无法完成成千上万群众所能做到的一件大事,高集 成度的硬件和软件解决方案,为传统企业提供较为完善的解决方案,并在这种程度上是可以节约成本,高端机和高端存储的解决方案,当达到一个成本的交叉点后,随着数据量以及并发量的