golang微服務教程1--protobuf

一.什麼是微服務

據說,早在2011年5月,在威尼斯附近的軟件架構師討論會上,就有人提出了微服務架構設計的概念,用它來描述與會者所見的一種通用的架構設計風格。時隔一年之後,在同一個討論會上,大家決定將這種架構設計風格用微服務架構來表示。

起初,對微服務的概念,沒有一個明確的定義,大家只能從各自的角度說出了微服務的理解和看法。
有人把微服務理解爲一種細粒度SOA(service-oriented Architecture,面向服務架構),一種輕量級的組件化的小型SOA。 在2014年3月,詹姆斯·劉易斯(James Lewis)與馬丁·福勒(Martin Fowler)所發表的一篇博客中,總結了微服務架構設計的一些共同特點,這應該是一個對微服務比較全面的描述。

這篇文章中認爲:“簡而言之,微服務架構風格是將單個應用程序作爲一組小型服務開發的方法,每個服務程序都在自己的進程中運行,並與輕量級機制(通常是HTTP資源API)進行通信。這些服務是圍繞業務功能構建的。可以通過全自動部署機器獨立部署。這些服務器可以用不同的編程語言編寫,使用不同的數據存儲技術,並儘量不用集中式方式進行管理“

	原文鏈接 https://martinfowler.com/articles/microservices.html

二、什麼是protobuf

protobuf是google旗下的一款平臺無關,語言無關,可擴展的序列化結構數據格式。
你可以理解爲類似json的傳輸格式,但是它比json傳輸更快,體積更小,也更安全。

protobuf是後起之秀,是谷歌開源的一種數據格式,適合高性能,對響應速度有要求的數據傳輸場景。因爲profobuf是二進制數據格式,需要編碼和解碼。數據本身不具有可讀性。因此只能反序列化之後得到真正可讀的數據。

2.1優點

相對於其它protobuf更具有優勢
1:序列化後體積相比Json和XML很小,適合網絡傳輸
2:支持跨平臺多語言
3:消息格式升級和兼容性還不錯
4:序列化反序列化速度很快,快於Json的處理速速

2.2缺點

Protobuf 與 XML 相比也有不足之處。它功能簡單,無法用來表示複雜的概念。
XML 已經成爲多種行業標準的編寫工具,Protobuf 只是 Google 公司內部使用的工具,在通用性上還差很多。 由於文本並不適合用來描述數據結構,所以 Protobuf 也不適合用來對基於文本的標記文檔(如 HTML)建模。
另外,由於 XML 具有某種程度上的自解釋性,它可以被人直接讀取編輯,在這一點上 Protobuf 不行,它以二進制的方式存儲,除非你有 .proto 定義,否則你沒法直接讀出 Protobuf 的任何內容。

三.Protobuf安裝步驟

Linux平臺

#下載 protoBuf: 
$ git clone https://github.com/protocolbuffers/protobuf.git 123
#安裝依賴庫 
$ sudo apt-get install autoconf automake libtool curl make g++ unzip libffi- dev -y 
#安裝
 $ cd protobuf/ 
 $ ./autogen.sh 
 $ ./configure 
 $ make 
 $ sudo make install $ sudo ldconfig 
 # 刷新共享庫 很重要的一步啊 #安裝的時候會比較卡 #成功後需要使用命令測試 
 $ protoc –h

windows平臺
1.下載安裝文件
https://github.com/protocolbuffers/protobuf/releases/tag/v3.10.0

2.解壓到任意目錄

3.配置環境變量

將上一步解壓出來的目錄/bin(即protoc.exe所在的目錄)添加到環境變量中

4.檢查

cmd輸入protoc查看是否安裝成功

四.加入golang的支持

1.獲取 proto包

#Go語言的proto API接口
 $ go get -v -u github.com/golang/protobuf/proto

2.安裝protoc-gen-go插件

#安裝 
$ go get -v -u github.com/golang/protobuf/protoc-gen-go
#編譯 
$ cd $GOPATH/src/github.com/golang/protobuf/protoc-gen-go/ 
$ go build
#將生成的 protoc-gen-go可執行文件,放在/bin目錄下 
$ sudo cp protoc-gen-go /bin/

五.demo

1.編寫test.proto測試類

syntax = "proto3";
package myproto;
message Test {
  string name = 1;
  int32 stature = 2 ;
  repeated int64 weight = 3;
  string motto = 4;
}

2.編譯

進入proto所在目錄,執行以下命令即可編譯成go文件

protoc --go_out=./ *.proto
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章