本文作者:HelloGitHub-秦人

本文适合有 SpringBoot 和 SpringCloud 基础知识的人群,跟着本文可使用和快速搭建 SpringCloud 项目。

HelloGitHub 推出的《讲解开源项目》系列,今天给大家带来一款基于 SpringCloud2.1 的微服务开发脚手开源项目——SpringCloud

项目源码地址:https://github.com/zhoutaoo/SpringCloud

一、微服务的简介

微服务是可以独立部署、水平扩展、独立访问的服务单元。Java 中常见最小的微服务单元就是基于 SpringBoot 框架的一个独立项目。一个微服务只做一件事(单一职责),多个微服务组合才能称之为一个完整的项目或产品。那么多个微服务的就需要来管理,而 SpringCloud 就是统筹这些微服务的大管家。它是一系列有序框架的集合,简单易懂、易部署易维护的分布式系统开发工具包。

今天介绍的开源项目就是基于 SpringCloud2.1 的脚手架,让项目开发快速进入业务开发,而不需过多时间花费在架构搭建上,下面就让我们一起来看看这个项目的使用吧。

二、项目结构

这里以一个网关(gateway-admin)微服务来说明。

项目目录结构如下图:

目录说明:

  1. db:项目初始化数据库脚本。
  2. docker:Docker 配置文件目录,将微服务打包为 docker 镜像(image)。
  3. config:项目配置信息目录,包括数据库配置,消息转化配置等。
  4. dao:数据库操作目录,主要对底层数据进行增删查改。
  5. entity:项目实体类目录。
  6. events:事件处理目录。
  7. exception:异常处理目录,通过面向切面处理全局异常。
  8. rest:微服务控制器目录,也就是对外提供的接口。
  9. service:微服务业务层目录。
  10. GatewayAdminApplication:微服务 SpringBoot 入口类。
  11. resources:项目配置文件目录。
  12. test:项目单元测试目录。
  13. 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 快速搭建开发环境。

第二种:本地环境运行

不推荐此方法,但还是简单介绍下。

  1. 基础环境安装:mysql、redis,rabbitmq

2. 环境运行:

git clone https://github.com/zhoutaoo/SpringCloud.git #克隆项目

3. 安装认证公共包到本地 maven 仓库,执行如下命令:

cd common
mvn clean install #安装认证公共包到本地 maven 仓库 

4. 安装注册中心 Nacos

  • 下载 Nacos
  • 执行如下命令:
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 启动命令 

5. 运行网关服务、认证服务、业务服务等

这里以网关服务为例:执行 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: 300datasource:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:${DATASOURCE_DBTYPE:mysql}://${DATASOURCE_HOST:localhost}:${DATASOURCE_PORT:3306}/sc_gateway?characterEncoding=UTF-8&useUnicode=true&useSSL=falseusername: ${DATASOURCE_USERNAME:root}password: ${DATASOURCE_PASSWORD:root123}

  • bootstrap.yml 文件主要配置服务基本信息(端口,服务名称),注册中心地址等。
server:port: ${SERVER_PORT:8445}
spring:application:name: gateway-admincloud:nacos:discovery:server-addr: ${REGISTER_HOST:localhost}:${REGISTER_PORT:8848}config:server-addr: ${REGISTER_HOST:localhost}:${REGISTER_PORT:8848}file-extension: ymlsentinel:transport:dashboard: ${SENTINEL_DASHBOARD_HOST:localhost}:${SENTINEL_DASHBOARD_PORT:8021}

第三种:Docker 环境运行

  1. 基础环境安装
  • 通过 docker 命令安装
# 安装redis
docker run -p 6379:6379 --name redis -d docker.io/redis:latest --requirepass "123456"
# 安装mysql
docker run --name mysql5.7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root123 -d docker.io/mysql:5.7
# 安装rabbitmq
docker run -d -p 15672:15672 -p 5672:5672 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin --name rabbitmq docker.io/rabbitmq:latest

  • 也可以通过 docker-compose 命令安装
cd docker-compose
docker-compose up -d #docker-compose 安装mysql,redis,rabbitmq 服务

2. 下载项目到本地

git clone https://github.com/zhoutaoo/SpringCloud.git #克隆项目

3. 安装认证公共包到本地 maven 仓库执行如下命令:

cd common && mvn install #安装认证公共包到本地maven仓库

4. docker-compose 运行 Nacos

cd docker-compose
docker-compose -f docker-compose.yml -f docker-compose.nacos.yml up -d nacos #启动注册中心

5. 构建消息中心镜像

cd ./center/bus
mvn package && mvn docker:build
cd docker-compose
#启动消息中心
docker-compose -f docker-compose.yml -f docker-compose.center.yml up -d bus-server

需要构建镜像的其他服务有:(注:操作和消息中心镜像构建方式类似)

  • 网关管理服务 (gateway-admin、gateway-web)
  • 组织服务(sysadmin/organization)
  • 认证服务 (auth/authentication-server)
  • 授权服务(auth authorization-server)
  • 管理台服务(monitor/admin)

3.4 运行效果

Nacos 服务中心

所有服务都正常启动,在 nacos 管理中心可查看,实例数表示运行此服务的个数,值为 1 可以理解为服务正常启动。

查看后台服务

命令行执行:docker ps -a 查看 docker 所有进程信息

通过访问微服务对外暴露的接口(swagger)检测服务是否可用。

swager 接口地址:http://IP:port/swagger-ui.html

测试如下图:

四、最后

微服务(SpringBoot、SpringCloud、Docker)现在吵得特别火,它并不是一门新的技术,而是在老技术的基础上衍生出来的,增加了一些新的特性。

教程至此,你应该能够通过 SpringCloud 这项目快速搭建微服务了。那么就可以开始你的微服务学习之旅了,是时候更新一下自己的技能树了,让我们一起来学习微服务吧!

五、参考资料

  • 本地安装 Nacos
  • nacos注册中心的使用
  • docker-compose教程
  • Docker技术

『讲解开源项目系列』——让对开源项目感兴趣的人不再畏惧、让开源项目的发起者不再孤单。跟着我们的文章,你会发现编程的乐趣、使用和发现参与开源项目如此简单。欢迎留言联系我们、加入我们,让更多人爱上开源、贡献开源~

搭建微服务_快速搭建 SpringCloud 微服务开发环境的脚手架相关推荐

  1. 快速搭建 SpringCloud 微服务开发环境的脚手架

    快速搭建 SpringCloud 微服务开发环境的脚手架 本文作者:HelloGitHub-秦人 本文适合有 SpringBoot 和 SpringCloud 基础知识的人群,跟着本文可使用和快速搭建 ...

  2. 【快速搭建系列】idea快速搭建SSH2框架(struts2+spring5+hibernate5)

    [快速搭建系列]idea快速搭建SSH2框架(struts2+spring5+hibernate5) 压了很久的文,都差点忘记了 网上关于SSH的框架教程五花八门的,自己踩了一周多的坑说什么也要搞一个 ...

  3. RuoYi-Cloud若依微服务版快速搭建【细的不行】

    若依框架是什么? 其实就是一套后台管理系统,它采用了Spring Boot和Shiro安全控制框架,以及Thymeleaf模板. Spring Boot是一个基于Spring开发的框架,它继承了Spr ...

  4. 用python搭建微商城_怎么搭建微商城?用什么系统好?

    微信目前拥有10亿用户,是我们每个人每天都使用的app,给商家带来了大量的机会,很多公司和商家都纷纷开始搭建微商城系统平台,实现在微信公众号内销售商品. 很多人还不知道怎么去搭建一个微商城,我会在这篇 ...

  5. 流媒体视频服务:快速搭建一个简单的流媒体视频服务(一)

    快速搭建一个简单的流媒体视频服务 前言 系统组成 RTMP协议简介 Red5 概述 Red5 服务器搭建 前言 最近自己在研究有关于流媒体播放的技术,网上资料甚少.出于开源精神以及在查阅资料得到各位大 ...

  6. 客服机器人源码_快速搭建对话机器人,就用这一招!

    问答系统是自然语言处理领域一个很经典的问题,它用于回答人们以自然语言形式提出的问题,有着广泛的应用.其经典应用场景包括:智能语音交互.在线客服.知识获取.情感类聊天等.常见的分类有:生成型.检索型问答 ...

  7. Windows服务的快速搭建与调试(C#图解)

    目录 一.什么是Windows 服务? 二.创建Windows 服务与安装/卸载批处理. 三.调试Windows 服务. 正文 一.什么是Windows 服务? 答:Microsoft Windows ...

  8. mybatis注解开发_快速搭建MyBatis开发环境(配置版+注解版)

    下面我们搭建一下MyBaits的开发环境,也就是一个用MyBaits框架访问数据库的例子. 1.项目结构如下 这里搭建的是一个maven项目. 2.引入依赖pom.xml 4.0.0com.suibi ...

  9. spring cloud微服务_面试败给微服务?别怕,我带你一起手撕Dubbo,SpringBoot与Cloud...

    面试居然败给微服务???这是个神马情况??没关系,这次我来带你一起总结Dubbo+Spring Boot+Spring Cloud,让我们一起手撕微服务!!! 01 微服务之Dubbo Dubbo 支 ...

最新文章

  1. 源码-0205-02--聊天布局
  2. Centos 不小心删除了openssl,导致无法使用sshd、yum、wget、curl 等软件的问题。。...
  3. 编译《OpenGL ES 3.0 编程指南》书中代码
  4. Modebus Slave 与 Modbus Poll主从设备模拟软件与Configure Virtual Serial串口模拟软件使用
  5. vue脚手架中使用axios
  6. ./ffmpeg: error while loading shared libraries: libavdevice.so.57
  7. SAP Spartacus Multi-Site Configuration
  8. 通过Spring Social推特StackExchange –第1部分
  9. SQL Server 2012 创建数据库快照
  10. %02 java_02_Java语法
  11. Servlet Cookie 处理
  12. 监听url地址栏变化
  13. 10个要点为Joomla网站创建完善的SEO优化内容
  14. Active Boot Disk(windows系统维护工具箱)官方光盘镜像版V19.0 | 电脑维修工具箱软件下载
  15. On Robust Capon Beamforming and Diagonal Loading
  16. matlab图片修复原理,图像修复 Region filling and object removal by exemplar-based image inpainting matlab实现...
  17. ASP.NET MVC身份认证与授权
  18. OBS录屏软件无法打开的问题,无法捕获到游戏画面的问题
  19. 2014腾讯校园招聘实习笔试题
  20. 直播带货中被禁播,我是触犯了哪些直播规则丨国仁网络资讯

热门文章

  1. csv导入mysql_mysql导入超大csv指南
  2. keep老是显示服务器开小差,nginx+keepalived高可用服务器宕机解决方案
  3. Windows11怎么设置时间?Win11时间设置教程
  4. 腾讯视频vip会员_腾讯视频如何查看版本号
  5. js遍历对象、遍历数组、js数组方法大全、区分map()和forEach()以及filter()、区分for...in...和for...of...
  6. win10计算机系统优化设置,win10系统优化系统的详细办法
  7. php 取消页面一些样式,jquery如何去除样式
  8. 解决MongoDB Compass
  9. ajax 传字符串到后台,JSON.stringify()将JSON对象转换为字符串通过Ajax传入到后台处理...
  10. Java啤酒生产系统描述_Java描述设计模式(03):工厂方法模式