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 依赖环境
3 SCB基于Docker环境的启动
- 依次把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的宿主主机。
- 依次执行 docker load -i Docker镜像文件名,导入SCB所需Docker镜像。例如:docker load -i scb_mysql_5.5.tar
- 创建MySQL使用的Docker数据卷:docker volume create docker_mysql_data
- 解压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命令查看数据卷的挂载目录。
- 解压ngnix_conf_d_mount.tar文件(tar -xvf ngnix_conf_d_mount.tar),把default.conf、scb_proxy.conf文件拷贝到/mnt/sda1/var/lib/conf.d目录,如果目录不存在,则创建该目录。
- 运行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
同时该网店还提供其它一些框架和代码,供大家选择。