一、微服务的简介
微服务是可以独立部署、水平扩展、独立访问的服务单元。Java 中常见最小的微服务单元就是基于 SpringBoot 框架的一个独立项目。一个微服务只做一件事(单一职责),多个微服务组合才能称之为一个完整的项目或产品。那么多个微服务的就需要来管理,而 SpringCloud 就是统筹这些微服务的大管家。它是一系列有序框架的集合,简单易懂、易部署易维护的分布式系统开发工具包。
今天介绍的开源项目就是基于 SpringCloud2.1 的脚手架,让项目开发快速进入业务开发,而不需过多时间花费在架构搭建上,下面就让我们一起来看看这个项目的使用吧。
二、项目结构
这里以一个网关(gateway-admin)微服务来说明。
项目目录结构如下图:
目录说明:
- db:项目初始化数据库脚本。
- docker:Docker 配置文件目录,将微服务打包为 docker 镜像(image)。
- config:项目配置信息目录,包括数据库配置,消息转化配置等。
- dao:数据库操作目录,主要对底层数据进行增删查改。
- entity:项目实体类目录。
- events:事件处理目录。
- exception:异常处理目录,通过面向切面处理全局异常。
- rest:微服务控制器目录,也就是对外提供的接口。
- service:微服务业务层目录。
- GatewayAdminApplication:微服务 SpringBoot 入口类。
- resources:项目配置文件目录。
- test:项目单元测试目录。
- pom.xml:maven 项目对象模型文件。
三、实战操作
3.1 前提
- 确保本地安装 Git、Java8、Maven。
- 懂一些 SpringMVC 的知识,因为 SpringBoot 是基于 SpringMVC 演化而来的。
- 懂一些应用容器引擎 Docker、Docker-compose 的知识。
3.2 微服务架构说明
一个完整的项目,微服务架构一般包括下面这些服务:
- 注册中心(常用的框架 Nacos、Eureka)
- 统一网关(常用的框架 Gateway、Zuul)
- 认证中心(常用技术实现方案 Jwt、OAuth)
- 分布式事务(常用的框架 Txlcn、Seata)
- 文件服务
- 业务服务
3.3 运行项目
下面介绍了三种运行的方式:
第一种:一键运行
Linux 和 Mac 系统下可在项目根目录下执行 ./install.sh快速搭建开发环境。
第二种:本地环境运行
第二种:本地环境运行
不推荐此方法,但还是简单介绍下。
-
基础环境安装:mysql、redis,rabbitmq
-
环境运行:
git clone https://github.com/zhoutaoo/SpringCloud.git #克隆项目
-
安装认证公共包到本地 maven 仓库,执行如下命令:
cd common mvn clean install #安装认证公共包到本地 maven 仓库
-
安装注册中心 Nacos
-
下载 Nacos[2]
-
执行如下命令:
unzip nacos-server-0.9.0.zip OR tar -xvf nacos-server-0.9.0.tar.gz cd nacos/bin bash startup.sh -m standalone # Linux 启动命令 cmd startup.cmd # Windows 启动命令
运行网关服务、认证服务、业务服务等
这里以网关服务为例:执行
GatewayAdminApplication.java
注意:认证服务(auth)、网关服务(gateway)、组织管理服务(sysadmin)需要执行数据库初始化脚本。
可通过 swager 接口:http://localhost:8445/swagger-ui.html 测试是否搭建成功,如果能正常访问表示服务启动成功。
说明:
-
application.yml 文件主要配置 rabbitmq,redis, mysql 的连接信息。
spring: rabbitmq: host: ${RABBIT_MQ_HOST:localhost} port: ${RABBIT_MQ_PORT:5672} username: ${RABBIT_MQ_USERNAME:guest} password: ${RABBIT_MQ_PASSWORD:guest} redis: host: ${REDIS_HOST:localhost} port: ${REDIS_PORT:6379} #password: ${REDIS_PASSWORD:} lettuce: pool: max-active: 300 datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:${DATASOURCE_DBTYPE:mysql}://${DATASOURCE_HOST:localhost}:${DATASOURCE_PORT:3306}/sc_gateway?characterEncoding=UTF-8&useUnicode=true&useSSL=false username: ${DATASOURCE_USERNAME:root} password: ${DATASOURCE_PASSWORD:root123}
-
bootstrap.yml 文件主要配置服务基本信息(端口,服务名称),注册中心地址等。
server: port: ${SERVER_PORT:8445} spring: application: name: gateway-admin cloud: nacos: discovery: server-addr: ${REGISTER_HOST:localhost}:${REGISTER_PORT:8848} config: server-addr: ${REGISTER_HOST:localhost}:${REGISTER_PORT:8848} file-extension: yml sentinel: transport: dashboard: ${SENTINEL_DASHBOARD_HOST:localhost}:${SENTINEL_DASHBOARD_PORT:8021}
第三种:Docker 环境运行
第三种:Docker 环境运行
-
基础环境安装
相关文章