快速搭建 SpringCloud 微服務開發環境的腳手架

快速搭建 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: 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 環境運行
基礎環境安裝

通過 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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章