當(dāng)前位置:首頁 > > HelloGitHub


一、微服務(wù)的簡介

微服務(wù)是可以獨(dú)立部署、水平擴(kuò)展、獨(dú)立訪問的服務(wù)單元。Java 中常見最小的微服務(wù)單元就是基于 SpringBoot 框架的一個(gè)獨(dú)立項(xiàng)目。一個(gè)微服務(wù)只做一件事(單一職責(zé)),多個(gè)微服務(wù)組合才能稱之為一個(gè)完整的項(xiàng)目或產(chǎn)品。那么多個(gè)微服務(wù)的就需要來管理,而 SpringCloud 就是統(tǒng)籌這些微服務(wù)的大管家。它是一系列有序框架的集合,簡單易懂、易部署易維護(hù)的分布式系統(tǒng)開發(fā)工具包。

今天介紹的開源項(xiàng)目就是基于 SpringCloud2.1 的腳手架,讓項(xiàng)目開發(fā)快速進(jìn)入業(yè)務(wù)開發(fā),而不需過多時(shí)間花費(fèi)在架構(gòu)搭建上,下面就讓我們一起來看看這個(gè)項(xiàng)目的使用吧。

二、項(xiàng)目結(jié)構(gòu)

這里以一個(gè)網(wǎng)關(guān)(gateway-admin)微服務(wù)來說明。

項(xiàng)目目錄結(jié)構(gòu)如下圖:

目錄說明:
  1. db:項(xiàng)目初始化數(shù)據(jù)庫腳本。
  2. docker:Docker 配置文件目錄,將微服務(wù)打包為 docker 鏡像(image)。
  3. config:項(xiàng)目配置信息目錄,包括數(shù)據(jù)庫配置,消息轉(zhuǎn)化配置等。
  4. dao:數(shù)據(jù)庫操作目錄,主要對底層數(shù)據(jù)進(jìn)行增刪查改。
  5. entity:項(xiàng)目實(shí)體類目錄。
  6. events:事件處理目錄。
  7. exception:異常處理目錄,通過面向切面處理全局異常。
  8. rest:微服務(wù)控制器目錄,也就是對外提供的接口。
  9. service:微服務(wù)業(yè)務(wù)層目錄。
  10. GatewayAdminApplication:微服務(wù) SpringBoot 入口類。
  11. resources:項(xiàng)目配置文件目錄。
  12. test:項(xiàng)目單元測試目錄。
  13. pom.xml:maven 項(xiàng)目對象模型文件。

三、實(shí)戰(zhàn)操作

3.1 前提

  • 確保本地安裝 Git、Java8、Maven。
  • 懂一些 SpringMVC 的知識,因?yàn)?SpringBoot 是基于 SpringMVC 演化而來的。
  • 懂一些應(yīng)用容器引擎 Docker、Docker-compose 的知識。

3.2 微服務(wù)架構(gòu)說明

一個(gè)完整的項(xiàng)目,微服務(wù)架構(gòu)一般包括下面這些服務(wù):

  • 注冊中心(常用的框架 Nacos、Eureka)
  • 統(tǒng)一網(wǎng)關(guān)(常用的框架 Gateway、Zuul)
  • 認(rèn)證中心(常用技術(shù)實(shí)現(xiàn)方案 Jwt、OAuth)
  • 分布式事務(wù)(常用的框架 Txlcn、Seata)
  • 文件服務(wù)
  • 業(yè)務(wù)服務(wù)

3.3 運(yùn)行項(xiàng)目

下面介紹了三種運(yùn)行的方式:

第一種:一鍵運(yùn)行

Linux 和 Mac 系統(tǒng)下可在項(xiàng)目根目錄下執(zhí)行 ./install.sh快速搭建開發(fā)環(huán)境。

第二種:本地環(huán)境運(yùn)行

不推薦此方法,但還是簡單介紹下。

  1. 基礎(chǔ)環(huán)境安裝:mysql、redis,rabbitmq

  2. 環(huán)境運(yùn)行:

    git clone https://github.com/zhoutaoo/SpringCloud.git #克隆項(xiàng)目 
  3. 安裝認(rèn)證公共包到本地 maven 倉庫,執(zhí)行如下命令:

    cd common
    mvn clean install #安裝認(rèn)證公共包到本地 maven 倉庫 
  4. 安裝注冊中心 Nacos

    • 下載 Nacos[2]
    • 執(zhí)行如下命令:
      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 啟動(dòng)命令 cmd startup.cmd # Windows 啟動(dòng)命令 
  5. 運(yùn)行網(wǎng)關(guān)服務(wù)、認(rèn)證服務(wù)、業(yè)務(wù)服務(wù)等

這里以網(wǎng)關(guān)服務(wù)為例:執(zhí)行 GatewayAdminApplication.java

注意:認(rèn)證服務(wù)(auth)、網(wǎng)關(guān)服務(wù)(gateway)、組織管理服務(wù)(sysadmin)需要執(zhí)行數(shù)據(jù)庫初始化腳本。

可通過 swager 接口:http://localhost:8445/swagger-ui.html 測試是否搭建成功,如果能正常訪問表示服務(wù)啟動(dòng)成功。

說明:

  • 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 文件主要配置服務(wù)基本信息(端口,服務(wù)名稱),注冊中心地址等。

    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 環(huán)境運(yùn)行

  1. 基礎(chǔ)環(huán)境安裝

    • 通過 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 服務(wù) 
  2. 下載項(xiàng)目到本地

    git clone https://github.com/zhoutaoo/SpringCloud.git #克隆項(xiàng)目 
  3. 安裝認(rèn)證公共包到本地 maven 倉庫執(zhí)行如下命令:

    cd common && mvn install #安裝認(rèn)證公共包到本地maven倉庫 
  4. docker-compose 運(yùn)行 Nacos

    cd docker-compose
    docker-compose -f docker-compose.yml -f docker-compose.nacos.yml up -d nacos #啟動(dòng)注冊中心 
  5. 構(gòu)建消息中心鏡像

    cd ./center/bus
    mvn package && mvn docker:build cd docker-compose #啟動(dòng)消息中心 docker-compose -f docker-compose.yml -f docker-compose.center.yml up -d bus-server

需要構(gòu)建鏡像的其他服務(wù)有:(注:操作和消息中心鏡像構(gòu)建方式類似)

  • 網(wǎng)關(guān)管理服務(wù) (gateway-admin、gateway-web)

  • 組織服務(wù)(sysadmin/organization)

  • 認(rèn)證服務(wù) (auth/authentication-server)

  • 授權(quán)服務(wù)(auth authorization-server)

  • 管理臺(tái)服務(wù)(monitor/admin)

3.4 運(yùn)行效果

Nacos 服務(wù)中心

所有服務(wù)都正常啟動(dòng),在 nacos 管理中心可查看,實(shí)例數(shù)表示運(yùn)行此服務(wù)的個(gè)數(shù),值為 1 可以理解為服務(wù)正常啟動(dòng)。

查看后臺(tái)服務(wù)

命令行執(zhí)行:docker ps -a查看 docker 所有進(jìn)程信息

通過訪問微服務(wù)對外暴露的接口(swagger)檢測服務(wù)是否可用。

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

測試如下圖:

四、最后

微服務(wù)(SpringBoot、SpringCloud、Docker)現(xiàn)在吵得特別火,它并不是一門新的技術(shù),而是在老技術(shù)的基礎(chǔ)上衍生出來的,增加了一些新的特性。

教程至此,你應(yīng)該能夠通過 SpringCloud 這項(xiàng)目快速搭建微服務(wù)了。那么就可以開始你的微服務(wù)學(xué)習(xí)之旅了,是時(shí)候更新一下自己的技能樹了,讓我們一起來學(xué)習(xí)微服務(wù)吧!

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
關(guān)閉