iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Go gRPC怎么实现Simple RPC
  • 597
分享到

Go gRPC怎么实现Simple RPC

2023-07-02 10:07:29 597人浏览 泡泡鱼
摘要

本篇内容介绍了“Go grpc怎么实现Simple rpc”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言gRPC主要

本篇内容介绍了“Go grpc怎么实现Simple rpc”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

前言

gRPC主要有4种请求和响应模式,分别是简单模式(Simple RPC)、服务端流式(Server-side streaming RPC)、客户端流式(Client-side streaming RPC)、和双向流式(Bidirectional streaming RPC)。

  • 简单模式(Simple RPC):客户端发起请求并等待服务端响应。

  • 服务端流式(Server-side streaming RPC):客户端发送请求到服务器,拿到一个流去读取返回的消息序列。 客户端读取返回的流,直到里面没有任何消息。

  • 客户端流式(Client-side streaming RPC):与服务端数据流模式相反,这次是客户端源源不断的向服务端发送数据流,而在发送结束后,由服务端返回一个响应。

  • 双向流式(Bidirectional streaming RPC):双方使用读写流去发送一个消息序列,两个流独立操作,双方可以同时发送和同时接收。

新建proto文件

定义发送消息的信息

message SimpleRequest{    // 定义发送的参数,采用驼峰命名方式,小写加下划线,如:student_name    string data = 1;//发送数据}

定义响应信息

message SimpleResponse{    // 定义接收的参数    // 参数类型 参数名 标识号(不可重复)    int32 code = 1;  //状态码    string value = 2;//接收值}

定义服务方法Route

// 定义我们的服务(可定义多个服务,每个服务可定义多个接口)service Simple{    rpc Route (SimpleRequest) returns (SimpleResponse){};}

编译proto文件

我这里使用上一篇介绍的vscode-proto3插件,保存后自动编译。

指令编译方法,进入simple.proto文件所在目录,运行:

protoc --go_out=plugins=grpc:./ ./simple.proto

创建Server端

定义我们的服务,并实现Route方法

import ("context""log""net""google.golang.org/grpc"pb "go-grpc-example/proto")// SimpleService 定义我们的服务type SimpleService struct{}// Route 实现Route方法func (s *SimpleService) Route(ctx context.Context, req *pb.SimpleRequest) (*pb.SimpleResponse, error) {res := pb.SimpleResponse{Code:  200,Value: "hello " + req.Data,}return &res, nil}

该方法需要传入RPC的上下文context.Context,它的作用结束超时或取消的请求。更具体的说请参考该文章

启动gRPC服务器

const (// Address 监听地址Address string = ":8000"// Network 网络通信协议Network string = "tcp")func main() {// 监听本地端口listener, err := net.Listen(Network, Address)if err != nil {log.Fatalf("net.Listen err: %v", err)}log.Println(Address + " net.Listing...")// 新建gRPC服务器实例grpcServer := grpc.NewServer()// 在gRPC服务器注册我们的服务pb.ReGISterSimpleServer(grpcServer, &SimpleService{})//用服务器 Serve() 方法以及我们的端口信息区实现阻塞等待,直到进程被杀死或者 Stop() 被调用err = grpcServer.Serve(listener)if err != nil {log.Fatalf("grpcServer.Serve err: %v", err)}}

里面每个方法的作用都有注释,这里就不解析了。
运行服务端

go run server.go:8000 net.Listing...

创建Client端

import ("context""log""google.golang.org/grpc"pb "go-grpc-example/proto")const (// Address 连接地址Address string = ":8000")func main() {// 连接服务器conn, err := grpc.Dial(Address, grpc.WithInsecure())if err != nil {log.Fatalf("net.Connect err: %v", err)}defer conn.Close()// 建立gRPC连接grpcClient := pb.NewSimpleClient(conn)// 创建发送结构体req := pb.SimpleRequest{Data: "grpc",}// 调用我们的服务(Route方法)// 同时传入了一个 context.Context ,在有需要时可以让我们改变RPC的行为,比如超时/取消一个正在运行的RPCres, err := grpcClient.Route(context.Background(), &req)if err != nil {log.Fatalf("Call Route err: %v", err)}// 打印返回值log.Println(res)}

运行客户端

go run client.gocode:200 value:"hello grpc"

成功调用Server端的Route方法并获取返回的数据。

“Go gRPC怎么实现Simple RPC”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: Go gRPC怎么实现Simple RPC

本文链接: https://www.lsjlt.com/news/341144.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Go gRPC怎么实现Simple RPC
    本篇内容介绍了“Go gRPC怎么实现Simple RPC”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言gRPC主要...
    99+
    2023-07-02
  • Go gRPC教程实现Simple RPC
    目录前言新建proto文件创建Server端创建Client端总结前言 gRPC主要有4种请求和响应模式,分别是简单模式(Simple RPC)、服务端流式(Server-side ...
    99+
    2024-04-02
  • Go语言Grpc Stream的实现
    目录Stream GrpcStream Grpc演示BookListStreamCreateBookStreamFindBookByIdStreamStream Grpc 在我们单次...
    99+
    2024-04-02
  • Go gRPC服务proto数据验证怎么实现
    今天小编给大家分享一下Go gRPC服务proto数据验证怎么实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。创...
    99+
    2023-07-02
  • Go中的gRPC怎么用
    这篇文章主要讲解了“Go中的gRPC怎么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Go中的gRPC怎么用”吧!Go GRPC 入门1,安装包grpcgolang-grpc 包提供了 g...
    99+
    2023-06-29
  • go实现grpc四种数据流模式
    目录1. 什么是数据流2. grpc的四种数据流2.1 简单模式2.2 服务端数据流模式2.3 客户端数据流模式2.4 双向数据流3. 上代码3.1 代码目录3.2 编写stream...
    99+
    2024-04-02
  • dubbo怎么实现rpc调用
    Dubbo是一个基于Java的高性能RPC框架,可以实现远程服务的调用。以下是使用Dubbo实现RPC调用的步骤:1. 定义服务接口...
    99+
    2023-10-23
    dubbo
  • 什么是RPC?聊聊node中怎么实现 RPC 通信
    RPC vs HTTP相同点都是两台计算机之间的网络通信。ajax是浏览器和服务器之间的通行,RPC是服务器与服务器之间的通行需要双方约定一个数据格式不同点寻址服务器不同ajax 是使用 DNS作为寻址服务获取域名所对应的ip地址,浏览器拿...
    99+
    2022-11-22
    Node.js RPC
  • 怎么用Springboot和Netty实现rpc
    这篇文章主要介绍“怎么用Springboot和Netty实现rpc”,在日常操作中,相信很多人在怎么用Springboot和Netty实现rpc问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用Spring...
    99+
    2023-06-29
  • Go创建Grpc链接池实现过程详解
    目录常规用法创建链接池创建链接池接口实现链接池接口关闭链接扩缩容性能测试常规用法 gRPC 四种基本使用 请求响应模式客户端数据流模式服务端数据流模式双向流模式 常见的gRPC调用...
    99+
    2023-03-03
    Go创建Grpc链接池 Go Grpc
  • Go gRPC超时控制Deadlines怎么使用
    这篇文章主要介绍了Go gRPC超时控制Deadlines怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Go gRPC超时控制Deadlines怎么使用文章都会有所收获,下面我们一起...
    99+
    2023-07-02
  • php实现通过JSON RPC与go通讯(附代码)
    本篇文章给大家带来了关于php与golang的相关知识,其中主要介绍了php是怎么通过JSON RPC和go进行通讯的,下面一起来看一下,希望对需要的朋友有所帮助。php 通过 JSON RPC 与 golang 通讯此方法为解决php处理...
    99+
    2023-05-14
    php Golang
  • 使用Java怎么实现一个RPC框架
    使用Java怎么实现一个RPC框架?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、RPC简介RPC,全称为Remote Procedure Call,即远程过程调用,它是一个...
    99+
    2023-05-30
    java rpc
  • 高并发RPC:使用Go WaitGroup实现分布式调用
    在Go中,可以使用sync包中的WaitGroup来实现高并发RPC的分布式调用。WaitGroup是一个计数器,用于等待一组gor...
    99+
    2023-10-12
    Go语言
  • 怎样实现简单的RPC框架
    怎样实现简单的RPC框架,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1.定义上下文对象在RpcContext对象中增加一个map类型的参数对象,可以存放任意扩展的参数。2.R...
    99+
    2023-06-04
  • go语言rpc调用失败怎么解决
    出现RPC调用失败的情况可能有很多原因,以下是一些常见的解决方法: 检查网络连接:首先确保客户端和服务器之间的网络连接是正常的,...
    99+
    2024-03-06
    go语言
  • 怎么用Python语言的grpc实现消息传送
    这篇“怎么用Python语言的grpc实现消息传送”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么用Python语言的gr...
    99+
    2023-07-05
  • GoLang与Java各自生成grpc代码怎么实现
    本篇内容介绍了“GoLang与Java各自生成grpc代码怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.背景由于公司的日志系统使...
    99+
    2023-07-05
  • python怎么使用SimpleXMLRPCServer实现简单的rpc过程
    这篇文章主要介绍了python怎么使用SimpleXMLRPCServer实现简单的rpc过程的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python怎么使用SimpleXMLRPCServer实现简单的rp...
    99+
    2023-07-02
  • Go怎么实现WebSockets
    这篇文章主要介绍了Go怎么实现WebSockets的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Go怎么实现WebSockets文章都会有所收获,下面我们一起来看看吧。什么是 WebSockets简而言之,We...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作