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

简介:


一、前期准备

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

 


目录
相关文章
|
2月前
|
负载均衡 应用服务中间件 持续交付
微服务架构下的Web服务器部署
【8月更文第28天】随着互联网应用的不断发展,传统的单体应用架构逐渐显露出其局限性,特别是在可扩展性和维护性方面。为了解决这些问题,微服务架构应运而生。微服务架构通过将应用程序分解成一系列小型、独立的服务来提高系统的灵活性和可维护性。本文将探讨如何在微服务架构中有效部署和管理Web服务器实例,并提供一些实际的代码示例。
71 0
|
2天前
|
存储 前端开发 API
DDD领域驱动设计实战-分层架构
DDD分层架构通过明确各层职责及交互规则,有效降低了层间依赖。其基本原则是每层仅与下方层耦合,分为严格和松散两种形式。架构演进包括传统四层架构与改良版四层架构,后者采用依赖反转设计原则优化基础设施层位置。各层职责分明:用户接口层处理显示与请求;应用层负责服务编排与组合;领域层实现业务逻辑;基础层提供技术基础服务。通过合理设计聚合与依赖关系,DDD支持微服务架构灵活演进,提升系统适应性和可维护性。
|
14天前
|
运维 持续交付 API
深入理解并实践微服务架构:从理论到实战
深入理解并实践微服务架构:从理论到实战
44 3
|
15天前
|
存储 缓存 负载均衡
亿级流量架构理论+秒杀实战系列(二)
亿级流量架构理论+秒杀实战系列(二)
|
28天前
|
运维 Cloud Native Devops
云原生架构的崛起与实践云原生架构是一种通过容器化、微服务和DevOps等技术手段,帮助应用系统实现敏捷部署、弹性扩展和高效运维的技术理念。本文将探讨云原生的概念、核心技术以及其在企业中的应用实践,揭示云原生如何成为现代软件开发和运营的主流方式。##
云原生架构是现代IT领域的一场革命,它依托于容器化、微服务和DevOps等核心技术,旨在解决传统架构在应对复杂业务需求时的不足。通过采用云原生方法,企业可以实现敏捷部署、弹性扩展和高效运维,从而大幅提升开发效率和系统可靠性。本文详细阐述了云原生的核心概念、主要技术和实际应用案例,并探讨了企业在实施云原生过程中的挑战与解决方案。无论是正在转型的传统企业,还是寻求创新的互联网企业,云原生都提供了一条实现高效能、高灵活性和高可靠性的技术路径。 ##
50 3
|
1月前
|
运维 监控 持续交付
深入浅出:微服务架构的设计与实战
微服务,一个在软件开发领域如雷贯耳的名词,它代表着一种现代软件架构的风格。本文将通过浅显易懂的语言,带领读者从零开始了解微服务的概念、设计原则及其在实际项目中的运用。我们将一起探讨如何将一个庞大的单体应用拆分为灵活、独立、可扩展的微服务,并分享一些实践中的经验和技巧。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供新的视角和深入的理解。
57 3
|
1月前
|
缓存 Java 应用服务中间件
随着微服务架构的兴起,Spring Boot凭借其快速开发和易部署的特点,成为构建RESTful API的首选框架
【9月更文挑战第6天】随着微服务架构的兴起,Spring Boot凭借其快速开发和易部署的特点,成为构建RESTful API的首选框架。Nginx作为高性能的HTTP反向代理服务器,常用于前端负载均衡,提升应用的可用性和响应速度。本文详细介绍如何通过合理配置实现Spring Boot与Nginx的高效协同工作,包括负载均衡策略、静态资源缓存、数据压缩传输及Spring Boot内部优化(如线程池配置、缓存策略等)。通过这些方法,开发者可以显著提升系统的整体性能,打造高性能、高可用的Web应用。
59 2
|
15天前
|
SQL 缓存 运维
亿级流量架构理论+秒杀实战系列(一)
亿级流量架构理论+秒杀实战系列(一)
|
15天前
|
消息中间件 应用服务中间件 数据库
亿级流量架构理论+秒杀实战系列(三)
亿级流量架构理论+秒杀实战系列(三)