热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

分布式,系统,架构,实战,简易,版,支付,

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

 

二、对部署环境进行规划

face/TrWmFaeRC7j5MQA85YDp3zznMjSEfajJ.png

 

 

创建数据库

数据库编码为:UTF-8

数据库引擎为:InnoDB

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

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

 

调整公共配置文件

face/WxNwy8h4NJn6jF8d3rHwtEpPnDKKpjXt.png

 

应用部署前期准备


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

face/3pP3BDXExJNAHMpfhCQfydZjmzybXJB5.png

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

 

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

face/zp6bQ5XKDiHR6HZnWQAYbdfSyMdGaHw3.png


部署服务


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

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


face/c3JyJ3ietaTTm4bKXMZ7tZaTKts28ExP.png


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


face/RzQe85bWjrYNNdspFA574wEsM8P7yMn6.png


部署Web应用


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

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

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

 

 

部署定时任务

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

face/k7y6RJpaDDSXtQkA65CW4M3ZJdkABx5A.png

face/einAH2EKy6RGY4DGBrHwbwhMC8ydWdr7.png

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

 

资源:http://www.roncoo.com/course/view/85d6008fe77c4199b0cdd2885eaeee53


关注微信:

face/BkYdP4kip72wRnEDcPCJSiP3D7ZscAbE.jpg



推荐阅读
  • 2021最新总结网易/腾讯/CVTE/字节面经分享(附答案解析)
    本文分享作者在2021年面试网易、腾讯、CVTE和字节等大型互联网企业的经历和问题,包括稳定性设计、数据库优化、分布式锁的设计等内容。同时提供了大厂最新面试真题笔记,并附带答案解析。 ... [详细]
  • Jboss的EJB部署描述符standardjaws.xml配置步骤详解
    本文详细介绍了Jboss的EJB部署描述符standardjaws.xml的配置步骤,包括映射CMP实体EJB、数据源连接池的获取以及数据库配置等内容。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • Centos下安装memcached+memcached教程
    本文介绍了在Centos下安装memcached和使用memcached的教程,详细解释了memcached的工作原理,包括缓存数据和对象、减少数据库读取次数、提高网站速度等。同时,还对memcached的快速和高效率进行了解释,与传统的文件型数据库相比,memcached作为一个内存型数据库,具有更高的读取速度。 ... [详细]
  • OpenMap教程4 – 图层概述
    本文介绍了OpenMap教程4中关于地图图层的内容,包括将ShapeLayer添加到MapBean中的方法,OpenMap支持的图层类型以及使用BufferedLayer创建图像的MapBean。此外,还介绍了Layer背景标志的作用和OMGraphicHandlerLayer的基础层类。 ... [详细]
  • Hadoop2.6.0 + 云centos +伪分布式只谈部署
    3.0.3玩不好,现将2.6.0tar.gz上传到usr,chmod-Rhadoop:hadophadoop-2.6.0,rm掉3.0.32.在etcp ... [详细]
  • Jmeter对RabbitMQ压力测试
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Jmeter对RabbitMQ压力测试相关的知识,希望对你有一定的参考价值。Jm ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • 本文介绍了在sqoop1.4.*版本中,如何实现自定义分隔符的方法及步骤。通过修改sqoop生成的java文件,并重新编译,可以满足实际开发中对分隔符的需求。具体步骤包括修改java文件中的一行代码,重新编译所需的hadoop包等。详细步骤和编译方法在本文中都有详细说明。 ... [详细]
  • maven项目_idea导入本地maven项目
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了idea导入本地maven项目相关的知识,希望对你有一定的参考价值。首先把项目关闭Fil ... [详细]
author-avatar
小叶2502854061
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有