Quick scaffolding SpringCloud micro-services development environment

This article is for there SpringBoot and SpringCloud basics of the crowd, followed by paper and can be used to quickly build SpringCloud project.

Author: HelloGitHub- Qin

HelloGitHub launched "to explain open source projects" series, today to give us a micro-services development based SpringCloud2.1 scaffold open source project - SpringCloud

Project Source Address: https://github.com/zhoutaoo/SpringCloud

I. Introduction micro services

Micro service can be deployed independently, the level of expansion, service unit independent access. Java common minimum micro service unit is based on an independent project SpringBoot framework. A micro-service only one thing (Single Responsibility), a plurality of micro portfolio of services can be called a complete project or product. Then the plurality of micro-services you need to manage, co-ordinate and SpringCloud is the steward of these micro-services. It is a collection of orderly framework, easy to understand, easy to deploy and easy to maintain distributed systems development kit.

Today introduced the open source project is based SpringCloud2.1 scaffolding, make project development quick access to business development, without too much time spent on infrastructure construction, let's take a look at this project use it.

Second, the project structure

Here in one gateway (gateway-admin) microServices described.

Project directory structure as shown below:

Directory Description:

  1. db: Project database initialization script.
  2. docker: Docker profile directory will be packaged as a docker service micro mirror (image).
  3. config: project configuration directory information, including database configuration, message transformation configuration.
  4. dao: catalog database operation, mainly to check the underlying data changes, additions or deletions.
  5. entity: the entity class project directory.
  6. events: Event Processing directory.
  7. exception: exception handling directory, by aspect-oriented global exception handling.
  8. rest: micro controller directory service, the interface is provided externally.
  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 这项目快速搭建微服务了。那么就可以开始你的微服务学习之旅了,是时候更新一下自己的技能树了,让我们一起来学习微服务吧!

五、参考资料


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

Guess you like

Origin www.cnblogs.com/xueweihan/p/11935291.html