国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【gRPC】go語言實現(xiàn)gRPC(示例實踐演示)

這篇具有很好參考價值的文章主要介紹了【gRPC】go語言實現(xiàn)gRPC(示例實踐演示)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

1、獲取gRPC和Protobuf依賴

2、安裝protobuf編譯器

3、安裝兩個插件

?4、編譯proto文件

5、服務端

6、客戶端

7、結果展示


1、獲取gRPC和Protobuf依賴

go get github.com/golang/protobuf/proto
go get google.golang.org/grpc
go get github.com/golang/protobuf/protoc-gen-go

goLand配置

【gRPC】go語言實現(xiàn)gRPC(示例實踐演示)

【gRPC】go語言實現(xiàn)gRPC(示例實踐演示)

2、安裝protobuf編譯器

Release Protocol Buffers v21.6 · protocolbuffers/protobuf · GitHubProtocol Buffers - Google's data interchange format - Release Protocol Buffers v21.6 · protocolbuffers/protobufhttps://github.com/protocolbuffers/protobuf/releases/tag/v21.6下載

【gRPC】go語言實現(xiàn)gRPC(示例實踐演示)

?創(chuàng)建文件夾

sudo mkdir /usr/local/proto
unzip protoc-21.6-linux-x86_64.zip

【gRPC】go語言實現(xiàn)gRPC(示例實踐演示)

配置環(huán)境變量

sudo vi /etc/profile
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin
export PATH=$PATH:/usr/local/proto/bin
export PATH=$PATH:/usr/local/proto/include
export PATH=$PATH:/home/cjs/go/bin

再執(zhí)行下面命令,然后重啟

source /etc/profile

重啟之后,檢查時候成功

protoc --version

【gRPC】go語言實現(xiàn)gRPC(示例實踐演示)

3、安裝兩個插件

go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest

【gRPC】go語言實現(xiàn)gRPC(示例實踐演示)

?4、編譯proto文件

目錄結構:

【gRPC】go語言實現(xiàn)gRPC(示例實踐演示)

?proto文件

syntax = "proto3"; // 指定proto版本
package hello;     // 指定默認包名

// 指定golang包名
option go_package = "./hello";

// 定義Hello服務
service Hello {
  // 定義SayHello方法
  rpc SayHello(HelloRequest) returns (HelloResponse) {}
}

// HelloRequest 請求結構
message HelloRequest {
  string name = 1;
}

// HelloResponse 響應結構
message HelloResponse {
  string message = 1;
}

進入下面文件夾下:

【gRPC】go語言實現(xiàn)gRPC(示例實踐演示)

?然后執(zhí)行

protoc --go_out=./ --go_opt=paths=source_relative --go-grpc_out=./ --go-grpc_opt=paths=source_relative hello.proto

生成

【gRPC】go語言實現(xiàn)gRPC(示例實踐演示)

5、服務端

package main

import (
	"fmt"
	"net"

	pb "awesomeProject/proto/hello" // 引入編譯生成的包
	"golang.org/x/net/context"
	"google.golang.org/grpc"
	"google.golang.org/grpc/grpclog"
)

const (
	// Address gRPC服務地址
	Address = "127.0.0.1:50052"
)

// 定義helloService并實現(xiàn)約定的接口
type HelloService struct {
	pb.UnimplementedHelloServer
}

// SayHello 實現(xiàn)Hello服務接口
func (h HelloService) SayHello(ctx context.Context, in *pb.HelloRequest) (*pb.HelloResponse, error) {
	resp := new(pb.HelloResponse)
	resp.Message = fmt.Sprintf("Hello %s.", in.Name)

	fmt.Println(in.Name)

	return resp, nil
}

func main() {
	listen, err := net.Listen("tcp", Address)
	if err != nil {
		grpclog.Fatalf("Failed to listen: %v", err)
	}

	// 實例化grpc Server
	s := grpc.NewServer()

	// 注冊HelloService
	pb.RegisterHelloServer(s, &HelloService{})

	grpclog.Info("Listen on " + Address)

	str := s.Serve(listen)
	fmt.Println(str)

}

注意:根據(jù)自己工程包結構實現(xiàn)

【gRPC】go語言實現(xiàn)gRPC(示例實踐演示)

6、客戶端

package main

import (
	pb "awesomeProject/proto/hello" // 引入proto包
	"fmt"
	"golang.org/x/net/context"
	"google.golang.org/grpc"
	"google.golang.org/grpc/credentials/insecure"
	"google.golang.org/grpc/grpclog"
)

const (
	// Address gRPC服務地址
	Address = "127.0.0.1:50052"
)

func main() {
	// 連接
	conn, err := grpc.Dial(Address, grpc.WithTransportCredentials(insecure.NewCredentials()))
	if err != nil {
		grpclog.Fatalln(err)
	}
	fmt.Println("連接成功")
	defer conn.Close()

	// 初始化客戶端
	c := pb.NewHelloClient(conn)

	// 調用方法
	req := &pb.HelloRequest{Name: "gRPC"}
	res, err := c.SayHello(context.Background(), req)

	if err != nil {
		grpclog.Fatalln(err)
	}

	fmt.Println(res.Message)
	grpclog.Info(res.Message)
}

7、結果展示

【gRPC】go語言實現(xiàn)gRPC(示例實踐演示)文章來源地址http://www.zghlxwxcb.cn/news/detail-407796.html

到了這里,關于【gRPC】go語言實現(xiàn)gRPC(示例實踐演示)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Go 語言實現(xiàn)冒泡排序算法的簡單示例

    以下是使用 Go 語言實現(xiàn)冒泡排序算法的簡單示例: 在這個例子中, bubbleSort 函數(shù)接收一個整數(shù)切片,對切片中的元素進行冒泡排序。在 main 函數(shù)中,我們定義了一個示例數(shù)組,調用 bubbleSort 函數(shù)對其進行排序,并輸出結果。 注意,冒泡排序算法的時間復雜度為 O(n^2),因此對

    2024年01月23日
    瀏覽(27)
  • go語言 grpc 攔截器

    go語言 grpc 攔截器

    gRPC攔截器(interceptor)是一種函數(shù),它可以在gRPC調用之前和之后執(zhí)行一些邏輯,例如認證、授權、日志記錄、監(jiān)控和統(tǒng)計等。攔截器函數(shù)是gRPC中非常重要的概念,它允許我們在服務端和客戶端添加自定義邏輯,以滿足業(yè)務需求和運維需求。 在gRPC中,攔截器函數(shù)通常通過實現(xiàn)

    2024年02月04日
    瀏覽(18)
  • Go 語言實現(xiàn)歸并排序算法的簡單示例(附上源碼)

    以下是使用 Go 語言實現(xiàn)歸并排序算法的簡單示例: 在這個例子中, mergeSort 函數(shù)接收一個整數(shù)切片,使用遞歸的方式進行歸并排序。 merge 函數(shù)用于合并兩個已排序的切片。在 main 函數(shù)中,我們定義了一個示例數(shù)組,調用 mergeSort 函數(shù)對其進行排序,并輸出結果。 歸并排序算

    2024年01月21日
    瀏覽(26)
  • go語言面試題:grpc和http的區(qū)別

    作者簡介 :一名后端開發(fā)人員,每天分享后端開發(fā)以及人工智能相關技術,行業(yè)前沿信息,面試寶典。 座右銘 :未來是不可確定的,慢慢來是最快的。 個人主頁 :極客李華-CSDN博客 合作方式 :私聊+ 這個專欄內容 :BAT等大廠常見后端java開發(fā)面試題詳細講解,更新數(shù)目10

    2024年02月12日
    瀏覽(17)
  • 【gRPC實現(xiàn)java端調用go的服務】

    【gRPC實現(xiàn)java端調用go的服務】

    在lib下面的存在一個simple.proto文件,我們使用插件protobuf-maven-plugin對其進行編譯。配置如下: 利用插件進行編譯 后可以獲得對應的文件。 在client下創(chuàng)建一個grpc的包,并將以上兩個文件放入。最后創(chuàng)建一個SimpleClient。 最后在Application中調用即可

    2024年02月04日
    瀏覽(24)
  • Go之流程控制大全: 細節(jié)、示例與最佳實踐

    Go之流程控制大全: 細節(jié)、示例與最佳實踐

    本文深入探討Go語言中的流程控制語法,包括基本的 if-else 條件分支、 for 循環(huán)、 switch-case 多條件分支,以及與特定數(shù)據(jù)類型相關的流程控制,如 for-range 循環(huán)和 type-switch 。文章還詳細描述了 goto 、 fallthrough 等跳轉語句的使用方法,通過清晰的代碼示例為讀者提供了直觀的指

    2024年02月08日
    瀏覽(17)
  • 2023-05-04:用go語言重寫ffmpeg的scaling_video.c示例,用于實現(xiàn)視頻縮放(Scaling)功能。

    2023-05-04:用go語言重寫ffmpeg的scaling_video.c示例,用于實現(xiàn)視頻縮放(Scaling)功能。

    2023-05-04:用go語言重寫ffmpeg的scaling_video.c示例,用于實現(xiàn)視頻縮放(Scaling)功能。 答案2023-05-04: 這段代碼實現(xiàn)了使用 libswscale 庫進行視頻縮放的功能。下面是程序的主要流程: 1.獲取命令行參數(shù),包括輸出文件名和目標圖像大小。 2.解析目標圖像大小,生成指定大小的輸出

    2024年02月02日
    瀏覽(19)
  • Go gRPC etcd實現(xiàn)服務注冊發(fā)現(xiàn)與負載均衡

    Go gRPC etcd實現(xiàn)服務注冊發(fā)現(xiàn)與負載均衡

    如果不了解go + grpc 調用方式和實現(xiàn)細節(jié),可以參考上一篇文章 golang grpc配置使用實戰(zhàn)教程 技術點 版本 描述 golang 1.19 基礎版本 grpc v1.41.0 gRPC golang包 etcd server 3.5.0 注冊中心 etcd client v3.5.8 客戶端服務發(fā)現(xiàn)和負載均衡 服務注冊依賴etcd的 key-value操作,key作為gRPC服務唯一標識,

    2024年02月05日
    瀏覽(37)
  • 2023-04-30:用go語言重寫ffmpeg的resampling_audio.c示例,它實現(xiàn)了音頻重采樣的功能。

    2023-04-30:用go語言重寫ffmpeg的resampling_audio.c示例,它實現(xiàn)了音頻重采樣的功能。

    2023-04-30:用go語言重寫ffmpeg的resampling_audio.c示例,它實現(xiàn)了音頻重采樣的功能。 答案2023-04-30: resampling_audio.c 是 FFmpeg 中的一個源文件,其主要功能是實現(xiàn)音頻重采樣。 音頻重采樣是指將一段音頻數(shù)據(jù)從一個采樣率、聲道數(shù)或樣本格式轉換為另一種采樣率、聲道數(shù)或樣本格式

    2024年02月02日
    瀏覽(18)
  • Go語言精進之路目錄

    目錄 第一章、 Go語言基礎全攻略:從入門到精通 一、介紹 01.Go 語言的前生今世 二、開發(fā)環(huán)境搭建 01.Go 語言開發(fā)環(huán)境搭建 三、初識GO語言 01.Go 多版本管理工具 02.第一個 Go 程序“hello,world“ 與 main 函數(shù) 03.Go 常用命令介紹 04.Go 項目代碼布局 05.探索 GO 項目依賴包管理與Go M

    2024年02月08日
    瀏覽(49)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包