本文做者:HelloGitHub-秦人html
本文適合有 SpringBoot 和 SpringCloud 基礎知識的人羣,跟着本文可以使用和快速搭建 SpringCloud 項目。java
HelloGitHub 推出的《講解開源項目》系列,今天給你們帶來一款基於 SpringCloud2.1 的微服務開發腳手開源項目——SpringCloudmysql
項目源碼地址:github.com/zhoutaoo/Sp…git
微服務是能夠獨立部署、水平擴展、獨立訪問的服務單元。Java 中常見最小的微服務單元就是基於 SpringBoot 框架的一個獨立項目。一個微服務只作一件事(單一職責),多個微服務組合才能稱之爲一個完整的項目或產品。那麼多個微服務的就須要來管理,而 SpringCloud 就是統籌這些微服務的大管家。它是一系列有序框架的集合,簡單易懂、易部署易維護的分佈式系統開發工具包。github
今天介紹的開源項目就是基於 SpringCloud2.1 的腳手架,讓項目開發快速進入業務開發,而不需過多時間花費在架構搭建上,下面就讓咱們一塊兒來看看這個項目的使用吧。web
這裏以一個網關(gateway-admin)微服務來講明。redis
項目目錄結構以下圖:spring
目錄說明:sql
一個完整的項目,微服務架構通常包括下面這些服務:docker
下面介紹了三種運行的方式:
Linux 和 Mac 系統下可在項目根目錄下執行 ./install.sh
快速搭建開發環境。
不推薦此方法,但仍是簡單介紹下。
基礎環境安裝:mysql、redis,rabbitmq
環境運行:
git clone https://github.com/zhoutaoo/SpringCloud.git #克隆項目
複製代碼
安裝認證公共包到本地 maven 倉庫,執行以下命令:
cd common
mvn clean install #安裝認證公共包到本地 maven 倉庫
複製代碼
安裝註冊中心 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 啓動命令
複製代碼
運行網關服務、認證服務、業務服務等
這裏以網關服務爲例:執行 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 命令安裝
# 安裝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)
Nacos 服務中心
全部服務都正常啓動,在 nacos 管理中心可查看,實例數表示運行此服務的個數,值爲 1 能夠理解爲服務正常啓動。
查看後臺服務
命令行執行:docker ps -a
查看 docker 全部進程信息
經過訪問微服務對外暴露的接口(swagger)檢測服務是否可用。
swager 接口地址:http://IP:port/swagger-ui.html
測試以下圖:
微服務(SpringBoot、SpringCloud、Docker)如今吵得特別火,它並非一門新的技術,而是在老技術的基礎上衍生出來的,增長了一些新的特性。
教程至此,你應該可以經過 SpringCloud 這項目快速搭建微服務了。那麼就能夠開始你的微服務學習之旅了,是時候更新一下本身的技能樹了,讓咱們一塊兒來學習微服務吧!
『講解開源項目系列』——讓對開源項目感興趣的人再也不畏懼、讓開源項目的發起者再也不孤單。跟着咱們的文章,你會發現編程的樂趣、使用和發現參與開源項目如此簡單。歡迎留言聯繫咱們、加入咱們,讓更多人愛上開源、貢獻開源~