男神鵬:golang 搭配 grpc,go-micro 實現后台微服務操作


一. 前置開發工具安裝

 
注意:√ 為必須安裝,* 為推薦安裝
  1. √ docker:用於本地運行 docker 鏡像
    • win10專業版/企業版
    • win7/win8/win10 家庭版
    • MacOS
      在進行 docker 環境安裝時,直接在 wiki 鏈接進行點擊“Docker Desktop for Mac (macOS)”,下載 Docker.dmg 文件進行安裝,有的同學可能會選擇通過終端命令行安裝,命令基於 yum 或者 brew 安裝比較麻煩,配置較多,比如直接下載安裝來的直接。安裝完成后,在 terminal 中查看, eg:
      1. % docker --version
      2. Docker version 19.03.8, build afacb8b
  2. √ docker-compose:用於本地一鍵運行微服務依賴的中間件,例如 MySQL 等
    現在 Docker 安裝包,已經默認集成 docker-compose 組件,在第一步安裝完成后,即可在 terminal 查看,eg:
    1. % docker-compose version
    2. docker-compose version 1.25.5, build 8a1c60f6
    3. docker-py version: 4.1.0
    4. CPython version: 3.7.5
    5. OpenSSL version: OpenSSL 1.1.1f 31 Mar 2020
  3. mysql workbench:推薦安裝,數據庫客戶端
    如果覺得 workbench 不直接,可以嘗試 Sequel Pro
    ps:
    因為 MySQL 版本密碼策略的原因,Sequel-pro 接入可能會報錯,需要進入容器的 MySQL 中執行以下命令:
    1. % ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
  4. homebrew:Mac 軟件包管理工具,推薦安裝,安裝時會先安裝xcode command line tools,homebrew 安裝前,要先安裝 xcode command line tools,安裝方法,terminal 輸入:
    1. % xcode-select --install
    2. .....
    3. success!

    然后等會,稍后可從終端看到finish,再次驗證是否安裝完成,terminal輸入:
    1. % xcode-select --install
    2. xcode-select: error: command line tools are already installed, use "Software Update" to install updates

    看到 terminal 結果,表示安裝完成。
    然后即可安裝homebrew,terminal命令行,輸入:
    1. % /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
    2. ....
    3. success!

    如果安裝失敗,參考wiki鏈接,查看具體錯誤。
  5. iTerm2:推薦安裝,iTerm2 + Oh My Zsh 打造舒適終端體驗
  6. √ chrome 插件Redirector*外部合作伙伴推薦安裝,用於閱讀 wiki 文檔時自動重定向到 tapd.tencent.com 域名
    • Redirector 插件配置:
      Redirect:http://tapd.oa.com/*
      To:http://tapd.tencent.com/$1
  7. √ git:代碼版本管理工具,windows 下會有 LF 轉 CRLF 問題,請確保:
    • 開發編輯器創建的文件是 Unix 行結束符,goland 默認就是
      1. % git config --global core.autocrlf false
  8. √ goland 下載 & 安裝 & 激活:請選擇 Version 2019.2.5 版本,自行解決激活問題
  9. 請打開設置 Enable Go Modules Integration:項目使用 go module 作為依賴管理,所以需要打開該選項
    • 請打開設置 Enable vendoring:外部合作伙伴必須打開該選項

二. 安裝 & 配置 golang 環境

 

工業雲使用 go 語言作為開發語言,請根據以下步驟進行設置:

  1. 推薦下載安裝 golang 1.13 版本;目前, golang 1.14 版本在環境設置時有不少問題,無特殊情況請勿升級!
  2. 初始化 golang 項目相關目錄 & 環境變量
    1. # 創建公共目錄
    2. mkdir -p ~/Documents/Project/go/src # 放置各個項⽬源代碼
    3. mkdir -p ~/Documents/Project/go/bin # 插件安裝⽬錄(可執⾏⽂件),命令 go install 或 go get會使⽤
    4. mkdir -p ~/Documents/Project/go/pkg # 第三⽅依賴庫存放路徑 $GOPATH/pkg/mod
    5. # 項目相關目錄的創建
    6. cd ~/Documents/Project/go/src
    7. mkdir git.code.oa.com # ⼯蜂git庫地址,或者創建git.tencent.com,結合實際情況
    8. cd git.code.oa.com
    9. mkdir cloud_industry # 項⽬組(group)名稱或個⼈組名稱
    10. # golang 相關環境變量,如果已經設置,可忽略
    11. go env -w GOPATH=~/Documents/Project/go # 請使用絕對路徑, 命令 go install 或 go get會使用該環境變量
    12. go env -w GOSUMDB=off # golang 1.13 需要額外設置
    13. go env -w GO111MODULE=on # 如果該環境變量沒有為on,請設置為on,開啟 go module
    14. go env -w GOPROXY=https://goproxy.io,direct # 外部的小伙伴,如果公司沒有代理的話,請設置該環境變量
    15. go env -w GOPRIVATE=git.code.oa.com # 如果還有其他私有庫,請自行設置
    16. # 其他推薦環境變量,可放置於~/.zshrc或~/.bash_profile,具體依賴於sh的設置
    17. export http_proxy=127.0.0.1:12639 # 如果公司提供了代理可根據實際情況設置
    18. export https_proxy=127.0.0.1:12639 # 如果公司提供了代理可根據實際情況設置
    19. export PATH=~/Documents/Project/go/bin:$PATH

    備注:這里要注意,~/Documents/Project/go ,通過 pwd 查詢絕對路徑地址,再進行配置

三. 安裝 protobuf 編譯插件

 
  1. protoc
    • MacOS 或者 Linux 請參考文檔《Installing protoc》中的說明
    • Windows:請從頁面中選擇對應平台的版本下載解壓,並將 /{path_to_protoc}/protoc.exe 路徑配置到環境變量即可
  2. protoc-gen-gogo get github.com/golang/protobuf/protoc-gen-go@v1.3.2
  3. protoc-gen-microgo get github.com/micro/protoc-gen-micro@v1.0.0
  4. proto 文件編譯命令,請參考示例項目 greeter 中的 README
注意:請確保以上插件的版本,否則編譯出來的 proto 文件會有較大差異
注意:由於早期某些版本的 protoc-gen-micro 版本編譯出來的 *.micro.go 文件,無法支持 proto 文件中 import 其它位置的 proto。所以,大家在編譯 proto 庫時,先安裝較新的protoc-gen-micro插件
注意:請在cloud_industry 目錄下更新  go get github.com/micro/protoc-gen-micro@v1.0.0
protoc手動安裝命令如下
  1. % PROTOC_ZIP=protoc-3.7.1-osx-x86_64.zip
  2. % curl -OL https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/$PROTOC_ZIP
  3. % sudo unzip -o $PROTOC_ZIP -d /usr/local bin/protoc
  4. % sudo unzip -o $PROTOC_ZIP -d /usr/local 'include/*'
  5. % rm -f $PROTOC_ZIP

注意:不要通過 brew 去拉去,目前為了版本統一V3.7
  1. % brew install protobuf ##會拉去最新版本,

四. go-micro

 

工業雲平台使用 go-micro 作為微服務開發框架,go-micro 是一個可插拔的微服務開發框架,具體架構如下所示:

圖片描述

它對微服務開發所依賴的各種組件(Registry、Selector、Broker等)進行了抽象,這樣我們的服務就不會依賴特定的組件,非常靈活,適合我們當前復雜的業務場景。

目前 go-micro 版本為,請勿自行升級:

  • go-micro: 1.9.0
  • go-plugins: 1.2.0
  • micro 工具:可選安裝,若需要的話,請通過命令go get github.com/micro/micro@v1.9.0安裝

五. 安裝基礎中間件

 
  1. 基礎組件:mysql,redis/sentinel,rabbitmq,jaeger,seaweedfs;
  2. 下載基礎組件安裝包——localenv
  3. 修改包內文件.env中的環境變量參數,可根據需要進行修改:

    1. ENV_MYSQL_PASSWORD=molotest123
    2. ENV_MYSQL_VOLUME=/Users/xiaojunzhou/Documents/data/mysql # 根據自身情況,創建目錄
    3. ENV_SEAWEEDFS_VOLUME=/Users/xiaojunzhou/Documents/data/seaweedfs # 根據自身情況,創建目錄
    4. ENV_REDIS_PASSWORD=molotest123
    5. ENV_RABBITMQ_NAME=test
    6. ENV_RABBITMQ_PASSWORD=test

    備注:.env文件根據自身電腦情況修改,保證正確性,里面參數涉及 docker 中的掛在目錄,后面再進行初始化時,會有用
  4. 執行基礎組件運行,進入 localenv 目錄:
    1. % cd localenv && docker-compose up -d

    運行,docker 會自己下載鏡像,進行啟動,過一會通過 docker 命令查看啟動容器:
    1. % docker ps

    通過 docker ps 命令,查看啟動的基礎組件,可以看到有 MySQL 組件,可以查看其容器 id,映射端口為3306.
注意:每個微服務都有自己的數據庫,請使用腳本 ~/localenv/mysql.conf.d/create_databases.sh創建相應的數據庫。
剛才運行的msyql容器,啟動的為空庫,需要創建相應的數據庫,通過docker-compose啟動后,通過查看第二步下載的localenv中的配置yml文件,可以看到,已經將腳本掛在到容器里面,yml文件內容:
  1. volumes:
  2. "${ENV_MYSQL_VOLUME}:/var/lib/mysql"
  3. "${PWD}/mysql.conf.d:/etc/mysql/mysql.conf.d/"

所以分三步:
1、第一步。進入 MySQL 容器,命令 :
  1. % docker exec -it 容器id /bin/sh

2、第二步,進入容器指定目錄后,
2.1,進入掛載目錄,

  1. % cd /etc/mysql/mysql.conf.d/

2.2,執行命令:

  1. % ./create_databases.sh ##則會開始執行腳本

3、退出容器命令為:

  1. % exit

六. 確認環境搭建成功

 

請下載文檔《新人學習指引》中的項目實踐中的項目 README 要求的步驟進行即可

七. FAQ

 
    1. brew 安裝軟件慢的問題
      默認官方的更新源都是存放在 GitHub 上的,這也是中國大陸用戶訪問緩慢的原因,一般來說我們會更傾向選擇國內提供的更新源,在此推薦中國科大以及清華大學提供的更新源。
      1. cd `brew --repo`
      2. # 中科大
      3. git remote set-url origin https://mirrors.ustc.edu.cn/brew.git
      4. # 或者清華大學
      5. git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM