国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當前位置: 首頁 > news >正文

做網(wǎng)站跳轉(zhuǎn)怎么收費網(wǎng)絡營銷軟件推廣

做網(wǎng)站跳轉(zhuǎn)怎么收費,網(wǎng)絡營銷軟件推廣,wordpress頁面woo分類,彩虹云主機gone是可以高效開發(fā)Web服務的Golang依賴注入框架 github地址:https://github.com/gone-io/gone 文檔地址:https://goner.fun/zh/ 文章目錄 使用gRPC通信編寫proto文件,生成golang代碼編寫服務端代碼注冊客戶端編寫配置文件測試總結(jié) 使用gRPC通…

gone是可以高效開發(fā)Web服務的Golang依賴注入框架
github地址:https://github.com/gone-io/gone
文檔地址:https://goner.fun/zh/

文章目錄

  • 使用gRPC通信
    • 編寫proto文件,生成golang代碼
    • 編寫服務端代碼
    • 注冊客戶端
    • 編寫配置文件
    • 測試
    • 總結(jié)

使用gRPC通信

首先創(chuàng)建一個grpc目錄,在這個目錄中初始化一個golang mod:

mkdir grpc
cd grpc
go mod init grpc

編寫proto文件,生成golang代碼

  • 編寫協(xié)議文件
    定義一個簡單的Hello服務,包含一個Say方法
    文件名:proto/hello.proto
syntax = "proto3";option go_package="/proto";package Business;service Hello {rpc Say (SayRequest) returns (SayResponse);
}message SayResponse {string Message = 1;
}message SayRequest {string Name = 1;
}
  • 生成golang代碼
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
protoc --go_out=. --go_opt=paths=source_relative \
--go-grpc_out=. --go-grpc_opt=paths=source_relative \
proto/hello.proto

其中,protoc的安裝參考Protocol Buffer 編譯器安裝

編寫服務端代碼

文件名:server/main.go

package mainimport ("context""github.com/gone-io/gone""github.com/gone-io/gone/goner""github.com/gone-io/gone/goner/cmux""google.golang.org/grpc""grpc/proto""log"
)type server struct {gone.Flagproto.UnimplementedHelloServer // 嵌入UnimplementedHelloServer
}// 重載協(xié)議中定義的服務
func (s *server) Say(ctx context.Context, in *proto.SayRequest) (*proto.SayResponse, error) {log.Printf("Received: %v", in.GetName())return &proto.SayResponse{Message: "Hello " + in.GetName()}, nil
}// 實現(xiàn) gone_grpc.Service接口的RegisterGrpcServer方法,該方法在服務器啟動時會被自動調(diào)用
func (s *server) RegisterGrpcServer(server *grpc.Server) {proto.RegisterHelloServer(server, s)
}func main() {gone.Prepare(func(cemetery gone.Cemetery) error {_ = cmux.Priest(cemetery) // 注冊cmux,可以讓gRPC服務 和 HTTP服務共享一個端口_ = goner.GrpcServerPriest(cemetery) // 注冊gRPC服務器cemetery.Bury(&server{}) // 注冊gRPC服務return nil}).// 啟動服務Serve()
}

注冊客戶端

文件名:client/main.go

package mainimport ("context""fmt""github.com/gone-io/gone""github.com/gone-io/gone/goner""google.golang.org/grpc""grpc/proto""log"
)type helloClient struct {gone.Flagproto.HelloClient // 嵌入HelloClienthost string `gone:"config,server.host"`port string `gone:"config,server.port"`
}// 實現(xiàn) gone_grpc.Client接口的Address方法,該方法在客戶端啟動時會被自動調(diào)用
// 該方法的作用是告訴客戶端gRPC服務的地址
func (c *helloClient) Address() string {return fmt.Sprintf("%s:%s", c.host, c.port)
}// 實現(xiàn) gone_grpc.Client接口的Stub方法,該方法在客戶端啟動時會被自動調(diào)用
// 在該方法中,完成 HelloClient的初始化
func (c *helloClient) Stub(conn *grpc.ClientConn) {c.HelloClient = proto.NewHelloClient(conn)
}func main() {gone.Prepare(func(cemetery gone.Cemetery) error {_ = goner.GrpcClientPriest(cemetery) // 注冊gRPC客戶端注冊器Gonercemetery.Bury(&helloClient{}) //注冊我們的實現(xiàn)的helloClientreturn nil}).Run(func(in struct {hello *helloClient `gone:"*"`// 在Run方法的參數(shù)中,注入 helloClient}) {// 調(diào)用Say方法,給服務段發(fā)送消息say, err := in.hello.Say(context.Background(), &proto.SayRequest{Name: "gone"})if err != nil {log.Printf("er:%v", err)return}log.Printf("say result: %s", say.Message)})
}

編寫配置文件

文件名:config/default.properties

# 設置grpc服務的端口和host
server.port=9001
server.host=127.0.0.1# 設置客戶端使用的grpc服務端口和host
server.grpc.port=${server.port}
server.grpc.host=${server.host}

測試

  • 先運行服務端:
go run server/main.go

程序等待請求,屏幕打印內(nèi)容:

2024-06-19 22:02:41.971|INFO|/Users/jim/works/gone-io/gone/goner/grpc/server.go:84||Register gRPC service *main.server
2024-06-19 22:02:41.971|INFO|/Users/jim/works/gone-io/gone/goner/grpc/server.go:88||gRPC server now listen at 127.0.0.1:9001
  • 然后,另外開窗口啟動客戶端:
go run client/main.go

程序執(zhí)行完退出,屏幕打印內(nèi)容如下:

2024-06-19 22:06:20.713|INFO|/Users/jim/works/gone-io/gone/goner/grpc/client.go:59||register gRPC client *main.helloClient on address 127.0.0.1:90012024/06/19 22:06:20 say result: Hello gone
  • 回到服務端窗口,可以看到服務器接收到請求,新打印一行日志:
2024/06/19 22:06:08 Received: gone

總結(jié)

在Gone中使用gRPC,需要完成以下幾步:

  • 編寫服務端

    1. 編寫服務端Goner,匿名嵌入proto協(xié)議生成代碼的 默認實現(xiàn)
    2. 重載proto文件中定義的接口方法,編寫提供服務的具體業(yè)務邏輯
    3. 實現(xiàn)gone_grpc.Service接口的RegisterGrpcServer方法,在該方法中完成服務注冊
    4. 將 服務端Goner 注冊到 Gone框架
    5. 啟動服務
  • 編寫客戶端

    1. 編寫客戶端Goner,嵌入proto協(xié)議生成代碼的客戶端接口
    2. 實現(xiàn)gone_grpc.Client接口的AddressStub方法,Address方法返回服務端地址,Stub初始化客服端接口
    3. 將 客戶端Goner 注冊到 Gone框架
    4. 啟動客戶端,調(diào)用客服端接口方法

本文的代碼開源在: https://github.com/gone-io/gone/tree/main/example/grpc

http://aloenet.com.cn/news/38394.html

相關(guān)文章:

  • 詳情頁制作網(wǎng)站seo交互論壇
  • 建立一個小程序多少錢小紅書關(guān)鍵詞排名優(yōu)化
  • 去哪找人做網(wǎng)站seo技術(shù)網(wǎng)網(wǎng)
  • 人大網(wǎng)站建設方案湖南省人民政府
  • 機械類畢業(yè)設計代做網(wǎng)站推薦官網(wǎng)seo關(guān)鍵詞排名系統(tǒng)
  • 哪里有做雜志的免費模板下載網(wǎng)站網(wǎng)絡服務合同
  • 做網(wǎng)站買空間谷歌廣告開戶
  • 浙江建筑信息監(jiān)管平臺seo建站公司
  • 做網(wǎng)站視頻 上傳到哪兒百度手機版下載
  • 網(wǎng)站招工費怎么做會計分錄企業(yè)推廣策劃
  • 幫人做網(wǎng)站在徐州被敲詐五萬網(wǎng)站開發(fā)軟件
  • 網(wǎng)站收錄做關(guān)鍵詞排名百度網(wǎng)站優(yōu)化
  • 自助微信網(wǎng)站芭蕉視頻app無限次數(shù)
  • 互聯(lián)網(wǎng)網(wǎng)站建設情況統(tǒng)計表關(guān)鍵詞資源
  • 哈爾濱微網(wǎng)站建設太原seo優(yōu)化
  • 哪些網(wǎng)站做批發(fā)衣服電子商務網(wǎng)站建設與維護
  • 南通做網(wǎng)站baidu tg做網(wǎng)站公司排名
  • 電子商城網(wǎng)站開發(fā)教程網(wǎng)絡推廣引流是做什么工作
  • bootstrap微網(wǎng)站模板下載新聞播報最新
  • 網(wǎng)站域名備案資料seo客服
  • 青島正規(guī)的網(wǎng)站建設公司沈陽網(wǎng)頁建站模板
  • 企業(yè)宣傳網(wǎng)站制作外鏈系統(tǒng)
  • 做創(chuàng)意ppt網(wǎng)站有哪些網(wǎng)頁在線生成
  • asp汽車租憑網(wǎng)站源碼搜索引擎推廣的關(guān)鍵詞
  • 西安 網(wǎng)站搭建深圳seo網(wǎng)絡優(yōu)化公司
  • wordpress tag 去掉優(yōu)化公司排行榜
  • 無錫企業(yè)網(wǎng)站的建設競價廣告是怎么推廣的
  • 引流軟件下載站網(wǎng)推和地推的區(qū)別
  • 網(wǎng)站建設的日常工作有什么做個公司網(wǎng)站多少錢
  • 購物網(wǎng)站的功能網(wǎng)站建設策劃書