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

本文作者:HelloGitHub-秦人

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

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

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

一、微服务的简介

微服务是可以独立部署、水平扩展、独立访问的服务单元。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: 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 环境运行
基础环境安装

通过 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 服务

下载项目到本地

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

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

cd common && mvn install #安装认证公共包到本地maven仓库
docker-compose 运行 Nacos
cd docker-compose
docker-compose -f docker-compose.yml -f docker-compose.nacos.yml up -d nacos #启动注册中心

构建消息中心镜像

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[3]

nacos注册中心的使用[4]

docker-compose教程[5]

Docker技术[6]

参考资料

  • [1]HelloGitHub-Team 仓库: https://github.com/HelloGitHub-Team/Article
  • [2]Nacos: https://github.com/alibaba/nacos/releases
  • [3]本地安装 Nacos: https://nacos.io/en-us/docs/quick-start.html
  • [4]nacos注册中心的使用: https://my.oschina.net/u/726964/blog/2989480
  • [5]docker-compose教程: https://blog.csdn.net/pushiqiang/article/details/78682323
  • [6]本地安装 Nacos: https://nacos.io/en-us/docs/quick-start.html

关注公众号加入交流群,一起讨论有趣的技术话题

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

“阅读原文”获取更多信息、“在看”让本文被更多人看到、“赞赏”支持我们。
————————————————
版权声明:本文为CSDN博主「削微寒」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/a419240016/article/details/103272117

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

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

    本文作者:HelloGitHub-秦人 本文适合有 SpringBoot 和 SpringCloud 基础知识的人群,跟着本文可使用和快速搭建 SpringCloud 项目. HelloGitHub ...

  2. 创建微服务架构的步骤_如何快速搭建一个微服务架构?

    原标题:如何快速搭建一个微服务架构? 微服务火了很久,但网上很少有文章能做到成熟地将技术传播出来,同时完美地照顾"初入微服务领域人员",从 0 开始,采用通俗易懂的语言去讲解微服务 ...

  3. Java生鲜电商平台-SpringCloud微服务开发中的数据架构设计实战精讲

    Java生鲜电商平台-SpringCloud微服务开发中的数据架构设计实战精讲 Java生鲜电商平台:   微服务是当前非常流行的技术框架,通过服务的小型化.原子化以及分布式架构的弹性伸缩和高可用性, ...

  4. Docker——使用docker工具管理软件/组件的运行,镜像、容器、数据卷的基本概念,常用指令,使用docker搭建Java微服务运行环境

    Docker--使用docker工具管理软件/组件的运行,镜像.容器.数据卷的基本概念,常用指令,使用docker搭建Java微服务运行环境 一.docker的安装和卸载 1.卸载 2.安装 3. 导 ...

  5. 如何快速搭建一个微服务架构

    何谓微服务架构的简单模式? 相对于大型互联网平台动辄几万并发的访问量,或者每天多次的在线版本发布,绝大多数企业和项目并没有这样的需求.他们关注的是如何更好地提高开发效率,如何更快地实现新需求,如何更便 ...

  6. 一步一步带你搭建SpringCloud微服务

    架构模式 SpringCloudAlibaba+Nacos 简单说一下选型原因 我们知道有一套微服务叫做Dubbo+Zookeeper,Dubbo是阿里的,但是后来阿里停止了对Dubbo的维护,并把D ...

  7. 搭建springcloud微服务下的网关Netfilx Zuul

    原创文章转载请注明来源:https://blog.csdn.net/weixin_41756573/article/details/88689617 1.pom.xml(基于springboot2.0 ...

  8. 快速搭建Cocos2dx for MAC开发环境

    我的环境: MAC OS X EI Capitan 10.11.6 已经装好了XCode 系统安装过python 2.7.12 ------------------------------------ ...

  9. 手把手搭建springcloud微服务,使用Eureka

    父工程 pom 父工程没啥,只有一个pom要配置 <?xml version="1.0" encoding="UTF-8"?><project ...

最新文章

  1. 空指针异常是什么原因_睡觉时,突然抖了一下,脚踏空,是什么原因?
  2. VTK:PolyData之ThresholdCells
  3. 研发的那些事3--接口之本
  4. TypeScript Non-null Assertion Operator 非空断言操作符 - 感叹号
  5. java 变成题_Java 习题8 参考答案及解析
  6. 黑马程序员——选择排序
  7. 程序员的算法课(3)-递归(recursion)算法
  8. 运行Java web时遇到的错误
  9. 基于mapreducer的图算法
  10. 友达以上恋人未满 体验博越G-Netlink系统
  11. 李梁北京大学 计算机,【资环学院】圆梦路上多楷模
  12. 实时高清渲染:Shadows
  13. 无人驾驶综述:等级划分
  14. python微信群管理开禁言_微信群主怎么禁言别人?微信群怎么让群员禁言?
  15. Samsung Bada程序介绍——BeijingPark
  16. win10计算机错误代码,win10电脑更新失败提示错误代码0x80070424修复方法
  17. 取消百度SiteApp转码
  18. 统计推断-经典统计推断
  19. 用js判断图片地址是否有效
  20. 如果“永远”只是一瞬间

热门文章

  1. 解决jodconverter 2.2.1版本不支持docx、xlsx、pptx转换成PDF格式异常
  2. C#的多线程机制探索6
  3. NET CMS 大全
  4. 爹地,我找到了!15个极好的Linux find命令示例
  5. 使用Tool Bar切换视图
  6. LeetCode 383. Ransom Note
  7. 【linux】kill命令信号总结
  8. TreeView控件 1202
  9. 查询集-104.课时104.【Django视图高级】QueryDict的用法讲解(Av61533158,P104)
  10. linux-mysql忘记密码解决办法-适用5.76