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

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

本文作者:HelloGitHub-秦人

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: 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 环境运行

  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 这项目快速搭建微服务了。那么就可以开始你的微服务学习之旅了,是时候更新一下自己的技能树了,让我们一起来学习微服务吧!

五、参考资料



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

http://www.72177.com/htm/201912/01/4508356.htm
http://www.72177.com/htm/201912/01/4508355.htm
http://www.72177.com/htm/201912/01/4508354.htm
http://www.72177.com/htm/201912/01/4508353.htm
http://www.72177.com/htm/201912/01/4508352.htm
http://www.72177.com/htm/201912/01/4508351.htm
http://www.72177.com/htm/201912/01/4508350.htm
http://www.72177.com/htm/201912/01/4508349.htm
http://www.72177.com/htm/201912/01/4508348.htm
http://www.72177.com/htm/201912/01/4508347.htm
http://www.72177.com/htm/201912/01/4508346.htm
http://www.72177.com/htm/201912/01/4508345.htm
http://www.72177.com/htm/201912/01/4508344.htm
http://www.72177.com/htm/201912/01/4508343.htm
http://www.72177.com/htm/201912/01/4508342.htm
http://www.72177.com/htm/201912/01/4508341.htm
http://www.72177.com/htm/201912/01/4508340.htm
http://www.72177.com/htm/201912/01/4508339.htm

原文地址:https://www.cnblogs.com/cider/p/11965540.html

时间: 2024-10-12 13:38:57

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

快速搭建Spring MVC 4开发环境

Spring MVC作为SpringFrameWork的产品,自诞生之日,就受到广泛开发者的关注,如今Spring MVC在Java中的发展可谓是蒸蒸日上,如今如果再有开发者说,不了解Spring MVC,或许就被人笑掉大牙.煽情的话就不说了,先告诉大家如何搭建Spring MVC开发环境. (一)工作环境准备: JDK 1.7 Eclipse Kepler Apache Tomcat 8.0 (二)在Eclipse中新建Maven工程,在Archetype类型中,选择"maven-archet

[转载]快速搭建Spring MVC 4开发环境

(一)工作环境准备: JDK 1.7 Eclipse Kepler Apache Tomcat 8.0 (二)在Eclipse中新建Maven工程,在Archetype类型中,选择“maven-archetype-webapp”. (三)配置pom.xml. [html] view plaincopyprint? <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org

自主搭建CI/CD,为vNext微服务开发保驾护航

简介 微服务开发中自动化.持续化工程十分重要,在成熟的CI/CD环境中项目团队可以灵活分配,大大提供团队效率.如果还不了解什么是CI/CD,可以先查看相关文章,这里主要介绍环境的搭建,相关原理就不过多搬书了. 开始之前 目前主流的ci/cd环境都是基于容器化管理的,所以想要搭建这一环境必须熟练docker操作.版本控制选择git,构建工具选择Jenkins,所以开始前需要先掌握这些技术. 安装docker Ubuntu 18.04 docker安装 docker安装方式有多种,存储库安装方式如下

【新书推荐】《ASP.NET Core微服务实战:在云环境中开发、测试和部署跨平台服务》 带你走近微服务开发

<ASP.NET Core 微服务实战>译者序:https://blog.jijiechen.com/post/aspnetcore-microservices-preface-by-translator/ "微服务"的概念在 2014 年正式提出之后,越来越多的团队开始用它来设计自己的业务系统,各种微服务框架和开发过程管理方法也同时兴起.不断成熟.微服务设计方法清晰地定义了各个开发团队的业务边界,微服务框架以不同的方式实现了服务之间的协作与集成,根据康威定律我们可以推导这

微服务开发实战(spring-cloud/spring-cloud-alibaba/dubbo),一个案例,手把手带你入门

平日里,都是看别人的文章,虽开公众号写了不少,但像样的不多.年末了,年终总结也没来得及写,为了输出点像样的东西,立刻就着手这个系列.一个键一个字母的敲,边敲边写,文章还在持续更新中,直至完整.相信通过这个系列的系统练习,能有一个大跨步的提升. 专栏简介(是什么?) 结合SpringCloud.SpringCloudAlibaba.Dubbo等开源套件,基于某商场停车业务需求,进行微服务开发实战,力争通过一个案例的实操,掌握微服务架构中常用的技能点,轻松入门. 为什么要写这个专栏(为什么?) 微服

springcloud微服务实战:Eureka+Zuul+Feign/Ribbon+Hystrix Turbine+SpringConfig+sleuth+zipkin

参考:springcloud微服务实战:Eureka+Zuul+Feign/Ribbon+Hystrix Turbine+SpringConfig+sleuth+zipkin 原创 2017年09月18日 11:46:28 标签: 微服务架构 / 微服务组件 / eureka / ribbon / zuul 26459 springcloud微服务实战:Eureka+Zuul+Feign/Ribbon+Hystrix Turbine+SpringConfig+sleuth+zipkin 相信现在

SpringCloud微服务:阿里开源组件Nacos,服务和配置管理

摘自:https://www.cnblogs.com/cicada-smile/p/12355994.html 源码地址:GitHub·点这里||GitEE·点这里 一.阿里微服务简介 1.基础描述 Alibaba-Cloud致力于提供微服务开发的一站式解决方案.此项目包含开发分布式应用微服务的必需组件,方便开发者通过SpringCloud编程模型轻松使用这些组件来开发分布式应用服务.只需要添加一些注解和少量配置,就可以将SpringCloud应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建

SpringCloud微服务简介(一)

Spring Cloud简单认识 微服务英文名称Microservice,Microservice架构模式就是将整个Web应用组织为一系列小的Web服务.这些小的Web服务可以独立地编译及部署,并通过各自暴露的API接口相互通讯.它们彼此相互协作,作为一个整体为用户提供功能,却可以独立地进行扩. 微服务架构需要的功能或使用场景 1:我们把整个系统根据业务拆分成几个子系统. 2:每个子系统可以部署多个应用,多个应用之间使用负载均衡. 3:需要一个服务注册中心,所有的服务都在注册中心注册,负载均衡也

mPass 微服务开发平台

mPass (Microservice Pass) 基于SpringBoot2.x.SpringCloud并采用前后端分离的企业级微服务,多租户系统架构微服务开发平台 mPaaS(Microservice PaaS)为租户业务开发.测试.运营及运维开源框架,能有效降低技术门槛.减少研发成本.提升开发效率,协助企业快速搭建稳定高质量的微服务应用;同时还集合各种微服务治理功能和监控功能.模块包括:企业级的认证系统.开发平台.应用监控.慢sql监控.统一日志.单点登录.Redis分布式高速缓存.配置中