1. 程式人生 > >SpringCloud Alibaba微服務實戰一 - 基礎環境準備

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微服務實戰 - 基礎環境準備”篇也就該結束啦,咱們下期有緣再見