本文為go mod 簡單搭建grpc服務(wù)demo實踐嚼贡。也記錄了其中的一些官方未交待的坑。
總結(jié)步驟:
1秩霍、下載依賴包gRPC齐婴。主要關(guān)注底下的protobuf和protol-gen-go包,用于處理協(xié)議文件的矮冬。
2谈宛、下載protoc.exe執(zhí)行文件,將bin目錄配置到環(huán)境變量胎署。該文件主要用于執(zhí)行對.proto協(xié)議文件轉(zhuǎn)為.pb.go對應(yīng)語言文件吆录。
3、安裝插件protol-gen-go生成.exe可執(zhí)行文件(可在依賴包對應(yīng)目錄下直接執(zhí)行命令生成exe后拷貝出去)琼牧,放入環(huán)境變量中恢筝,如剛剛設(shè)置的bin目錄。
4巨坊、項目目錄中編寫如Hi.proto文件撬槽,并cmd進入該目錄執(zhí)行protoc --go_out=plugins=grpc:. Hi.proto命令,將在文件指定的包下生成Hi.pb.go文件(grpc接口協(xié)議文件代碼)抱究。
5恢氯、編寫服務(wù)端實現(xiàn)協(xié)議文件中的結(jié)構(gòu)體接口,客戶端調(diào)用鼓寺。
下來就來詳細介紹勋拟。
一、下載依賴包gRPC
IDE創(chuàng)建項目目錄grpcDemo妈候,并配置代理敢靡。
然后我們下載依賴包就簡單了,直接在項目目錄下創(chuàng)建go.mod文件苦银,如下:
然后基本的main.go里面寫mian函數(shù)啸胧,執(zhí)行命令go mod init赶站。等待下載完,如下:
依賴包我們下完了纺念。
我們打開看一下贝椿,能看到這個,
我們要的就是這兩個插件,但是這還不算裝完,因為protoc-gen-go并沒有安裝生成exe 文件存和,這個我們后面再講。
github.com/golang/protobuf
github.com/golang/protobuf/protoc-gen-go
二渣窜、下載protoc.exe執(zhí)行文件,將bin目錄配置到環(huán)境變量
這個要自己額外地去下宪躯,地址看這里乔宿。下載解壓將看到如下目錄。protoc.exe文件就在bin文件夾下访雪,把bin目錄配置到環(huán)境變量详瑞。可以cmd下執(zhí)行protoc --version看看是不是裝好了冬阳。
該文件主要用于執(zhí)行對.proto協(xié)議文件轉(zhuǎn)為.pb.go對應(yīng)語言文件蛤虐。當然我們前面還講到,這樣還是不夠的肝陪,還需要一個插件驳庭。
三、安裝插件protol-gen-go生成.exe可執(zhí)行文件
可在依賴包對應(yīng)目錄下直接執(zhí)行g(shù)o build命令生成exe后拷貝出去氯窍,放入環(huán)境變量中饲常,如剛剛設(shè)置的bin目錄和protoc.exe文件放一起(這里為圖方便),當然也可以自行存在路徑狼讨,然后把路徑配置到環(huán)境變量即可贝淤。
四、編寫如Hi.proto協(xié)議文件政供,并用命令轉(zhuǎn)成對應(yīng)語言(協(xié)議)文件
上面播聪,我們把插件的工具都準備好了,意味著我們可以執(zhí)行命令來處理協(xié)議文件了布隔。
在項目目錄中編寫如Hi.proto文件离陶,并cmd進入該目錄執(zhí)行protoc --go_out=plugins=grpc:. Hi.proto命令(注意這里IDE直接執(zhí)行這個命令是不行的),將在文件指定的包下生成Hi.pb.go文件(grpc接口協(xié)議文件代碼)衅檀。 這里的--go_out 必須protol-gen-go.exe的支持招刨。
這里指定的包名就是將生成協(xié)議文件的文件夾。執(zhí)行完命令后看到的文件:
五哀军、編寫服務(wù)端代碼
實現(xiàn)協(xié)議中的接口沉眶,提供邏輯服務(wù)打却。
main文件自然必不可少。
我們啟動服務(wù)端谎倔,監(jiān)聽8081端口柳击。這里需要注意,如果直接run go build main.go有可能不成功片习。go build 整個項目倒是每次都成功的腻暮。
六、編寫客戶端
客戶端和服務(wù)端也一樣的先創(chuàng)建項目毯侦,go mod grpc依賴包。只是客戶端可以直接使用.pd.go文件具垫,所以不用處理協(xié)議生成這個動作(裝插件和寫.proto文件后命名轉(zhuǎn)換)侈离。直接拷貝Hi.pb.go文件,然后實現(xiàn)客戶端的調(diào)用代碼即可筝蚕。其他注意點同上(必須go build 整個項目)卦碾。然后我們啟動客戶端就可以看到服務(wù)端的應(yīng)答了。
好了起宽,一個GRPC服務(wù)就寫好了洲胖。