基于SpringCloud 2开发的微服务基础框架SCB(Spring Cloud Base)

版权声明: https://blog.csdn.net/beyondself_77/article/details/83185640

0 序言

      本文简述了SCB,一个基于SpringCloud 2开发的微服务基础框架SCB(Spring Cloud Base)。

     SCB主要组件版本

     1、Spring Boot:2.0.3.RELEASE

     2、SpringCloud:Finchley.RELEASE

     3、Spring Cloud Gateway:2.0.1

     4、Spring Boot Admin:2.0.2

     5、Java:1.8

     6、Consul:1.2.3

    此框架主要包括客户端和服务端。

    客户端使用 Vue开发,具有系统设置和系统监控两大类功能。其中,系统设置提供用户管理、角色管理、应用管理、系统管理、模块管理模块,完成系统管理的基本功能。系统监控提供服务监控、Zipkin监控、注册中心监控、RabbitMQ监控,通过集成以上各组件的监控管理页面实现。

    服务端提供API网关、统一认证授权中心(OAuth2)、 基础数据中心等应用,对外统一以服务的方式对外提供服务功能。

    此框架可作为微服务快速开发框架使用,也可以作为使用SpringCloud开发微服务基础框架的学习案例。

    此框架可通过 docker 快速构建部署。

1 整体架构

1.1 逻辑架构

1.2 物理架构

注意:

IP地址自动分配,与图中所示IP地址可能存在不同。

1.3 持续集成环境

2 项目代码 ​​​​​​

2.1 项目目录结构

2.2 依赖环境

  1. IDE:STS3.9.5,也可以选择其他IDE;
  2. JDK:1.8.181
  3. Maven:1
  4. MySQL:5.5
  5. Redis:3.2
  6. RabbitMQ:management
  7. Consul:1.2.3

3 SCB基于Docker环境的启动

  1. 依次把Docker镜像文件scb_mysql_5.5.tar、redis3.2.tar、rabbitmqmanagement.tar、consul2.3.tar、nginx.tar、scb_web_1.tar、scb_apps_1.tar导入Docker的宿主主机。
  2. 依次执行 docker load -i Docker镜像文件名,导入SCB所需Docker镜像。例如:docker load -i scb_mysql_5.5.tar
  3. 创建MySQL使用的Docker数据卷:docker volume create docker_mysql_data
  4. 解压scb_mysql_1.0_volume.tar文件(tar -xvf scb_mysql_1.0_volume.tar),把_data目录下的数据拷贝到docker_mysql_data数据卷对应的_data目录。如:/mnt/sda1/var/lib/docker/volumes/docker_mysql_data/_data。可以通过docker volume inspect docker_mysql_data命令查看数据卷的挂载目录。
  5. 解压ngnix_conf_d_mount.tar文件(tar -xvf ngnix_conf_d_mount.tar),把default.conf、scb_proxy.conf文件拷贝到/mnt/sda1/var/lib/conf.d目录,如果目录不存在,则创建该目录。
  6. 运行docker-compose-scb-apps.yml(docker-compose -f docker-compose-scb-apps.yml up):启动MySQL、Redis、RabbitMQ、注册中心、配置中心、管理中心、SCB后端服务模块。

          此脚本需要启动的服务比较多,并且服务之间存在依赖关系,所以启动需要一段时间。

         docker ps,查看SCB相关容器的启动情况;

         docker logs -f 容器名称,查看具体某个容器的启动日志;

         在浏览器上查看服务注册中心:http://ip:port:8500,以便确定各个服务的启动情况。例如:

 

        7.运行docker-compose-scb-nginx.yml(docker-compose -f docker-compose-scb-nginx.yml up):启动代理服务器Nginx。

        8.运行docker-compose-scb-web.yml(docker-compose -f docker-compose-scb-web.yml up):启动SCB前端模块。

        此处采用基于域名www.myscb.com的访问方式,所以需要配置host文件。

        例如在windows的hosts文件中增加:

        192.168.99.100 www.myscb.com

        192.168.99.100 gateway.myscb.com

        192.168.99.100 auth.myscb.com

         注意:

        如果使用IP,则需要修改docker-compose –f docker-compose-scb-web.yml文件,把:

        environment:

            - HOST=web-app

            - PORT=8080

            - BASE_URL=http://www.myscb.com

            - SERVER_URL=http://gateway.myscb.com

            - AUTH_URL=http://auth.myscb.com/auth

        改为

        environment:

           - HOST=web-app

           - PORT=8080

           - BASE_URL=http:// 192.168.99.100:8080

           - SERVER_URL=http:// 192.168.99.100:18000

           - AUTH_URL=http:// 192.168.99.100:18001/auth

        同时,关闭Nginx容器(docker-compose –f docker-compose-scb-nginx.yml stop nginx)。然后,通过http://192.168.99.100:8080直接访问。

        对于在IP环境环境下,使用Nginx代理的情况,未经验证。

        9、启动完成以后,在浏览器中访问:http://www.myscb.com

输入用户名:test,密码:123456,登陆页面。(此处实现了密码登陆方式,验证码方式基本实现,但用户需要根据自己需求完善)。

至此,启动完成。

其它一些功能页面如下:

角色管理:

系统管理:

应用管理:

模块管理:

服务监控:

4 基于Docker持续集成环境

4.1 启动Gitlab

拷贝gitlab-ce.tar到Docker宿主主机,目录任意,如:/home/docker目录;

docker load –i gitlab-ce.tar

docker-compose –f docker-compose-scb-git.yml up

4.2 启动Jenkins

拷贝java8-jenkins-maven-git-vim.tar到Docker宿主主机,目录任意,如:/home/docker目录;

docker load –i java8-jenkins-maven-git-vim.tar

docker-compose –f docker-compose-scb-jenkins.yml up

4.3 启动Nexus

拷贝nexus3.tar到Docker宿主主机,目录任意,如:/home/docker目录;

docker load –i nexus3.tar

docker-compose –f docker-compose-scb-nexus.yml up

4.4 启动Registry

拷贝docker_registry2.6.tar到Docker宿主主机,目录任意,如:/home/docker目录;

docker load –i docker_registry2.6.tar

docker-compose –f docker-compose-scb-registry.yml up

 

注意:

SCB框架已经基本实现,由于花费了作者不少时间和心血,所以采用有偿提供代码和完整的单机版Docker环境、持续集成环境的方式共享,有需要的同学可以通过下面的连接查看该框架的详细信息。

https://item.taobao.com/item.htm?spm=a1z38n.10677092.0.0.50d01deb2hbulg&id=579699301414

同时该网店还提供其它一些框架和代码,供大家选择。

猜你喜欢

转载自blog.csdn.net/beyondself_77/article/details/83185640