SpringCloud Alibaba微服務實戰一 - 基礎環境準備
Springcloud Aibaba現在這麼火,我一直想寫個基於Springcloud Alibaba一步一步構建微服務架構的系列部落格,終於下定決心從今天開始本系列文章的第一篇 - 基礎環境準備。
該系列文章內容主要基於三個微服務:使用者服務AccountService
,訂單服務OrderService
,產品服務ProductService
用到的元件有:
- 註冊中心、配置中心 Nacos
- 限流 Sentinel
- 分散式事務 Seata
- 閘道器 SpringCloud Gateway
- 認證授權 Spring Cloud Oauth2
- docker、docker-compose
由於用到的元件相對較多,部署會很繁瑣,最關鍵的是沒有資源伺服器,所以在開發過程中我會逐漸將一些元件使用docker-compose部署。
本篇內容就是使用Dokcer-compose部署Nacos,Sentinel,Mysql,作為後面的系列文章的基礎環境。
如果你對docker或者docker-compose不是很熟悉的話,你可以翻看我之前的兩篇文章,看完後相信你能很快入手。
- Docker基礎與實戰,看這一篇就夠了
- Docker-Compose基礎與實戰,看這一篇就夠了
容器化
mysql
由於nacos需要依賴於Mysql作為資源儲存,所以在編寫完整docker-compose之前我會先用docker啟動臨時的mysql容器,然後準備好nacos需要的資料庫。
啟動臨時容器
docker run -p3306:3306 --rm --name mysql -e MYSQL_ROOT_PASSWORD=123456 -v /app/cloud/mysql/data:/var/lib/mysql mysql:5.7
此處需要掛載宿主機目錄,在啟動docker-compse後就不需要再次初識化資料。用mysql客戶端連線你的容器,然後匯入nacos的資料表
https://github.com/alibaba/nacos/tree/develop/distribution/conf/ nacos-mysql.sql
停止容器,由於加了
--rm
引數,所以容器會自動刪除
docker stop 3475ef078d3a
nacos
我們來看看NACOS的環境變數,如下表所示:
配置項 | 描述 | 可選引數 | 預設值 |
---|---|---|---|
MODE | 模式 cluster/standalone | cluster/standalone | cluster |
PREFER_HOST_MODE | 是否支援 hostname | hostname/ip | ip |
NACOS_SERVER_PORT | 服務埠號 | 8848 | |
SPRING_DATASOURCE_PLATFORM | 單機模式支援 mysql | mysql / empty | empty |
MYSQL_MASTER_SERVICE_HOST | mysql 主節點 host | ||
MYSQL_MASTER_SERVICE_PORT | mysql 主節點 port | 3306 | |
MYSQL_MASTER_SERVICE_DB_NAME | mysql 主節點資料庫名 | ||
MYSQL_MASTER_SERVICE_USER | mysql 主節點使用者名稱 | ||
MYSQL_MASTER_SERVICE_PASSWORD | mysql 主節點密碼 | ||
MYSQL_SLAVE_SERVICE_HOST | mysql 從節點 host | ||
MYSQL_SLAVE_SERVICE_PORT | mysql 從節點 port | 3306 |
Nacos支援主從配置,考慮到資源問題,我們只配置一臺單獨的mysql伺服器,有資源的同學可以搭建主從環境。
sentinel
sentinel比較簡單,直接配置sentinel-dashboard
映象即可。
(在系列的開始不需要引入sentinel元件,為了後面不再單獨介紹,本次我也把他加到我的docker-compose中)
seata
seata由於一些原因,還沒釋出官方映象,暫時擱淺。
docker-compose
以下是我編寫的docker-compse檔案,大家可以自行修改
version: "3"
services:
mysql:
container_name: mysql
image: mysql:5.7
environment:
- MYSQL_ROOT_PASSWORD=123456
volumes:
- /app/cloud/mysql/data:/var/lib/mysql
ports:
- "3306:3306"
restart: always
nacos:
image: nacos/nacos-server:1.1.4
container_name: nacos
environment:
- PREFER_HOST_MODE=hostname
- MODE=standalone
- MYSQL_DATABASE_NUM=1
- SPRING_DATASOURCE_PLATFORM=mysql
- MYSQL_MASTER_SERVICE_HOST=mysql
- MYSQL_MASTER_SERVICE_DB_NAME=nacos_config
- MYSQL_MASTER_SERVICE_PORT=3306
- MYSQL_MASTER_SERVICE_USER=root
- MYSQL_MASTER_SERVICE_PASSWORD=123456
volumes:
- /app/cloud/nacos/logs:/home/nacos/logs
ports:
- "8848:8848"
depends_on:
- mysql
restart: always
sentinel:
image: bladex/sentinel-dashboard:latest
container_name: sentinel
ports:
- "8858:8858"
restart: always
將其上傳至你的伺服器,執行docker-compose up -d
命令啟動
環境驗證
nacos
訪問nacoshttp://192.168.136.129:8848/nacos
,使用賬號密碼nacos/nacos登入,新增一個name=JAVA日知錄
的配置。
nacos安裝成功!
mysql
使用客戶端工具連線上mysql服務,檢視his_config_info
表,確認是否有剛剛的配置
mysql安裝成功!
sentinel
訪問http://192.168.136.129:8858
使用賬號sentinel/sentinel登入
sentinel安裝成功!
至此前期所需要的元件都安裝成功,那麼本期的“SpringCloud Alibaba微服務實戰 - 基礎環境準備”篇也就該結束啦,咱們下期有緣再見