40 圖|看悟空大神用 M1 玩轉 SpringCloud

我的開源 Spring Cloud 項目 PassJava 一直是在 Windows 和 Ubuntu 上運行,最近不是換 Mac M1 了麼,想把這個項目在 M1 上也跑起來,畢竟我的那臺 Windows 用起來發燙,是該體驗下 M1 的性能了!

因爲 M1兼容性不好,所以從 0 開始跑這個項目的時候遇到了很多問題,比如 MySQL 工具經常打不開,前端 Vue 項目起不來,所以專門針對這些疑難雜症,我也做好了記錄,相信對使用 M1 的同學有所幫助,另外想學習 Spring Cloud 的同學也可以參照我的開源項目學起來~

我把後端、前端、小程序都上傳到同一個倉庫裏面了,大家可以通過 github碼雲訪問。地址如下:

Github: https://github.com/Jackson0714/PassJava-Platform

碼雲:https://gitee.com/jayh2018/PassJava-Platform

配套教程:www.passjava.cn

整體的架構圖如下圖所示:

本文主要內容如下:

一、配置 Nacos

Nacos 作爲配置中心和註冊中心,是必須要啓動的。

1.1 下載地址

Nacos 下載地址:

https://github.com/alibaba/nacos/releases

最新版是 2.0.0-bugfix,我下載後,啓動成功了,但是無法訪問 Nacos 後臺,懷疑是本地環境有問題,所以換了一個低版本的 1.4.1,可以正常工作。另外我之前在 windows 機器上使用的 1.2.1 的版本,拷貝到 Mac 上也能正常運行。

1.2 啓動 Nacos

進入 nacos 根目錄,執行命令:

sh startup.sh -m standalone

執行後的結果如下圖所示:

看到 nacos is starting withi standalone 就表示啓動成功。注意:啓動成功不代表正常運行。

接下來訪問 nacos 的後臺管理系統:

http://127.0.0.1:8848/nacos/#/login

賬號和密碼都是 nacos

1.3 添加命名空間

添加 7 個微服務的命名空間:

新建命名空間時需要填寫的字段:

1.4 添加 question 微服務配置

在配置列表添加幾個微服務的配置,目前保證 question 微服務和 thirdparty 微服務有配置即可。

如下圖所示,添加三個配置項:數據源,mybatis 配置,其他配置。詳細的配置參數參照這篇來配置:《SpringCloud 整合 Nacos 配置中心》

1.5 添加 thirdparty 微服務配置

主要是配置阿里雲 OSS,用來保存圖片的。配置如下圖所示,key 需要大家到自己登陸到阿里雲並申請 OSS 才能獲取到。參照這篇《SpringCloud 實戰項目 - 整合 OSS 對象存儲》

二、初始化數據

創建數據庫、表、初始化數據這些工作都需要做,下載一個 MySQL 客戶端還是要方便點,然後找 Mac 上好用的客戶端軟件,下面是安裝軟件的艱辛歷程。

1.1 安裝 Mac 版 MySQL

首先需要安裝 mac 版的 MySQL,下載地址:

https://dev.mysql.com/downloads/mysql/

選擇第一個就可以了,官網已經提示該版本兼容 Mac M1

Packages for Catalina (10.15) are compatible with Big Sur (11)

下載後點擊安裝,安裝成功後,到系統偏好配置裏面找到 MySQL,並單擊打開。

可以看到運行的 MySQL 實例是 MySQL 8.0.23,且默認開機運行。

![]

2.2 安裝圖形化 MySQL 管理軟件

2.2.1 Workbench 在 M1 上不能運行

我試過安裝 workbench 後,不能運行。

2.2.2  Squel Pro 在 M1 上不能運行

安裝 Squel Pro 後,切換數據庫的時候程序崩潰。

2.2.3 Navicat

經過上面兩個軟件的崩潰後,我最後還是下載了試用版的 Navicat,可以免費用 14 天,對於初始化數據足夠了。

下載地址:

http://www.navicat.com.cn/download/navicat-for-mysql

下載 macOS 的最新版 15,它是兼容 M1 芯片的。

然後需要執行三個 SQL 文件,文件我已經上傳到倉庫上了,

/passjava-platform/data/sql

依次執行上面的三個文件後,會生成 6 個數據庫:一個系統數據庫,五個業務數據庫。

三、啓動微服務

主要啓動 4 個核心服務:網關微服務題目微服務第三方微服務系統管理微服務

架構圖如下所示:

目前這幾個微服務已經整合了 Nacos、OpenFeign、Gateway、統一異常處理、鏈路追蹤,Redis 等。

啓動都是基於 IDEA 開發工具直接啓動的,所以需要下載 IDEA。

3.1 下載安裝 IDEA

我安裝的 IDEA 是旗艦版 2020.3 的,試用版 30 天。大家可以下載免費的社區版 Community,功能上也能滿足。

性能非常快,我的 Windows 的配置:ThinkPad、 32 G 內存、1T 固態硬盤,啓動一個微服務需要 10 秒以上,而 Mac 只需要 3 秒

官網下載地址:

https://www.jetbrains.com/idea/download/#section=mac

3.2 啓動系統管理服務

我的開源項目的後臺框架用的人人框架,它的主要功能就是後臺的登陸、系統管理功能,所以必須啓動 renren-fast 服務才能使用後臺管理。

大家可以啓動 RenrenApplication 這個 Service,啓動成功後,會提示以下信息:

renren-fast 服務暴露的端口是 8080,但是這個端口對前端是不可見的,前端 API 都是走網關的 8060 端口。將前端的請求轉發到 renren-fast 的 8060 端口,比如登陸請求。注意:一定要初始化完數據才能啓動成功。

3.3 啓動網關

網關微服務沒有什麼特殊要求,我都配置好了,直接啓動就好了。另外如果遇到端口被佔用的情況,可以通過如下命令解決:

lsof -i:8060
kill -9 <進程 id>

網關微服務暴露的端口是 8060,啓動後如下圖所示:

3.4 啓動題目服務

題目服務是核心模塊,很多實戰案例都是基於這個模塊進行講解的。啓動服務之前,需要配置數據庫 MySQL 的連接。

3.4.1 配置數據庫連接

文件路徑:/passjava-question/src/main/resources/application.yml
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/passjava_qms?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT
    username: root
    password: xxx

另外我們也可以通過 nacos 來配置:

3.4.2 啓動題目服務

IDEA 工具中直接啓動就可以了,暴露的端口是 11000,啓動後如下圖所示:

3.4.3 測試題目服務

用 postman 測試網關 + 題目微服務是否正常工作:

由於我的數據庫中是有數據的,所以會返回很多數據,大家後面可自行添加數據。

3.5 啓動第三方服務

這個第三方不是指另外一方的服務,而是我把與第三方中間件交互的服務都歸在這個服務裏面了,比如對阿里雲 OSS(對象存儲) 的操作。

這個服務的名字叫做:passjava-thirdparty。另外需要注意,OSS 需要大家到阿里雲官網申請,有免費額度哦~配置方式可以參照這篇:《SpringCloud 實戰項目 - 整合 OSS 對象存儲》

啓動成功後,如下圖所示:

四、啓動 Admin 後臺

Admin 管理後臺的技術選型還是用的 Vue,所以需要使用 npm 工具來安裝依賴。

4.1 安裝 npm、nvm

使用 homebrew 安裝 npm

brew install npm

使用 homebrew 安裝 nvm

brew install nvm

4.2 切換鏡像源

默認的 npm 使用的是官方的鏡像源,我們切換爲國內的淘寶鏡像源。

npm install -g cnpm --registry=https://registry.npm.taobao.org --verbose

4.3 安裝 node_module

倉庫裏面並沒有將依賴包一起上傳,因爲依賴包太大了,所以可在本地通過如下命令安裝依賴包,這個是一次性的,後面不需要再執行。

進入到 passjava-platform/passjava-portal 目錄,執行如下命令來安裝依賴:

cnpm install

啓動前端 portal

npm run dev

報錯,提示 Node Sass 不兼容當前的系統:

Node Sass does not yet support your current environment: OS X Unsupported architecture (arm64) with Unsupported runtime (88)

根據網上提供的解決方案,要先卸載 Node Saas

cnpm uninstall node-sass

但是又提示 chromedriver 安裝失敗(當前操作系統不兼容),根據網上的解決方案,單獨安裝,但依舊提示 64 位系統不兼容,於是我把 package.json 文件中的 "chromedriver": "2.27.2" 刪掉了,問題迎刃而解!(最新的代碼已刪除該依賴項配置)

我們接着往下執行:

先刪除之前安裝的 node_modules:

rm -rf ./node_modules/

再次執行卸載 node-sass 的命令:

cnpm uninstall node-sass

卸載成功後,安裝 node-sass:

cnpm install node-sass  --unsafe-perm --save-dev

重新安裝依賴:

cnpm install

4.4 啓動後臺

在根目錄執行如下命令就可以啓動後臺了:

npm run dev

啓動成功後,會自動打開瀏覽器,訪問的地址是 http://localhost:8081

4.5 登陸後臺

賬號密碼都是 admin,輸入驗證碼即可登錄。注意:如果驗證碼沒有出現,說明 RenrenApplication 微服務有異常,請查看 IDEA 中打印出的 log。

登錄後臺界面如下圖所示:

PassJava 後臺

4.6 添加題目分類

首先需要給題目添加分類,在後臺點擊新增類型,如下圖所示:

注意:上傳圖片前需要啓動 thirdparty 微服務,且 OSS 配置正確。

4.7 添加面試題

五、其他

5.1 未適配的鏡像

我的開源項目中要用 Elasticsearch 和 Kibana,且它們是運行在 docker 上的,但目前這些鏡像在 M1 上還未適配。所以用不了 ES 和 Kibana,難過😫

5.2 前端小程序

小程序的開發和測試在這裏也不演示了, M1 上開發小程序完全沒問題~

5.3 未添加的中間件

因本篇只是出於核心功能的演示,所以還有些中間件未提及,比如配置 Redis、鏈路追蹤等,這些功能不影響 M1 上使用 Spring Cloud,所以會放在後續的文章中做進一步說明。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/xmCfYHp4l1xc5EwKPa1V2w