本地分布式部署
百度已收录

       云程平台支持单体集中式部署、本地分布式部署、微服务容器化部署三种部署模式。本地分布式部署是一种没有云底座情况下的部署模式(这里的云底座主要指容器云平台、微服务治理平台),这种模式首先保证软件架构符合微服务化架构,通过手动方式在本地启动每个服务,一旦企业具备了微服务治理和容器云平台的云底座环境,便可无缝的切换到云平台。

       此部署模式适合于企业缺乏微服务治理和容器云平台的云底座环境,或者微服务应用数量不多,不想引入和维护复杂的云原生组件,通过手动运维即可解决的情况下使用。缺点是手动部署比较繁琐,优点是系统符合微服务架构,可分布式部署,能解决传统单体应用的一些问题。

 

一、部署架构

 

以下是本地分布式集群部署架构图,平台和业务应用每个服务都作为一个springboot项目独立启动,新增加的应用按照微服务化组件开发,部署,不会影响其它正在运行的业务。

 

二、后端部署流程

 

后端需要部署的服务包括平台提供的系统管理、流程管理、电子表单三个服务,和自己基于服务组件模板开发的其他服务。

1、安装数据库

首先安装mysql数据库,注意数据库需要设置不区分大小写。

每个服务的数据表都是独立的,建表脚本在每个服务的src/main/resources/db/migration/V1__INIT_DATABASE.sql中,分别创建数据库并初始化脚本,每个服务都对应各自的一个数据库。

2、启动Redis

所有服务共用同一个Redis服务。

3、修改配置

配置文件在每个服务的src/main/resources目录下,其中application-dev.yml是开发环境配置,application-prod.yml是生产环境配置,在打包部署之前,需要分别调整好每个服务下application-prod.yml的配置。以系统管理服务为例:

服务端口和根路径配置,根路径默认为空:

数据库地址配置,每个服务对应自己的数据库:

Redis地址配置,所有服务共用同一个Redis服务:

分布式远程调用地址配置:

4、代码打包

代码开发完成后,在每个服务项目下执行打包命令“mvn clean package”,项目下会生成target目录,以系统管理为例,里面的“yuncheng-framework-starter-xxx.jar”就是打出的部署包。

5、启动运行

分别启动系统管理、流程引擎、电子表单三个服务,和自己开发的其他服务,以系统管理为例,启动服务的命令是“java –jar yuncheng-framework-starter-xxx.jar –spring.profiles.active=prod”。

 

三、前端部署流程

 

1、修改配置

在项目文件public/config/bootConfig.js中,配置后端访问地址等,其中 development是开发环境配置,production是生产环境配置,在打包部署之前,需要调整好production的配置。部署之后对后台的访问路由,在后续Nginx中配置,所以这里配置VUE_APP_API为空就可以。性能监控等需要指向系统管理的地址,这里就配置VUE_APP_URL和VUE_APP_STATIC_URL指向系统管理的地址。

2、打包代码

代码开发完成后,在yuncheng-webui项目下执行打包命令“yarn run build”,项目下会生成dist目录,里面的文件就是打出的部署文件。通常情况下将 dist 目录下的静态文件发布到你的nginx或者静态服务器即可,其中的index.html是访问入口页面。

3、Nginx配置

分布式路由规则在这里配置:

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    gzip  on;
    gzip_buffers 32  4k;
    gzip_comp_level  6;
    gzip_min_length  100;
    gzip_types  application/javascript text/css text/xml;
    gzip_disable  "MSIE [1-6]\."; #配置禁用gzip条件,支持正则。此处表示ie6及以下不启用gzip(因为ie低版本不支持)
    gzip_vary  on;
	
    server {
        listen       80;
        server_name  localhost;

        location ~ .*\.(js|css|htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma) {
            root   html;
            index  index.html index.htm;
			try_files $uri $uri/ /index.html;
        }
		location /api/system {
            proxy_pass   http://127.0.0.1:30001;
        }
		location /api/bpm {
            proxy_pass   http://127.0.0.1:30002;
        }
		location /api/eform {
            proxy_pass   http://127.0.0.1:30003;
        }
		location /actuator {
            proxy_pass   http://127.0.0.1:30001;
        }
    }
}

4、启动运行

启动nginx或者静态服务器。