Go:grpc
一、grpc安装
将 https://github.com/google/go-genproto 修改文件名放到 $GOPATH/src/google.golang.org/genproto
将 https://github.com/grpc/grpc-go 修改文件名放到 $GOPATH/src/google.golang.org/grpc
将 https://github.com/golang/text 放到 $GOPATH/src/golang.org/x/text
将 https://github.com/golang/net 放到 $GOPATH/src/golang.org/x/net 然后
cd $GOPATH/src/
go install google.golang.org/grpc
PS:protobuf的安装不做介绍。
二、grpc的helloworld示例
服务端:
package main import (
"context"
"log"
"net" "google.golang.org/grpc"
pb "google.golang.org/grpc/examples/helloworld/helloworld"
) const (
PORT = ":8080"
) type server struct{} // SayHello实现了helloworld.pb.go中的GreeterServer接口
func (s *server) SayHello(ctx context.Context, in *pb.HelloRequest) (*pb.HelloReply, error) {
log.Printf("Received: %v", in.Name)
return &pb.HelloReply{Message: "Hello " + in.Name}, nil
} func main() {
// 监听
lis, err := net.Listen("tcp", PORT)
if err != nil {
log.Fatalf("failed to listen: %v", err)
}
// new服务对象
s := grpc.NewServer()
// 注册服务
pb.RegisterGreeterServer(s, &server{})
if err := s.Serve(lis); err != nil {
log.Fatalf("failed to serve: %v", err)
}
}
客户端:
package main import (
"context"
"log"
"time" "google.golang.org/grpc"
pb "google.golang.org/grpc/examples/helloworld/helloworld"
) const (
ADDR = "localhost:8080"
NAME = "World"
) func main() {
// 建立与服务器的连接
conn, err := grpc.Dial(ADDR, grpc.WithInsecure())
if err != nil {
log.Fatalf("连接失败: %v", err)
}
defer conn.Close() // 调用proto的函数创建客户端连接句柄
c := pb.NewGreeterClient(conn) ctx, cancel := context.WithTimeout(context.Background(), time.Second)
defer cancel() // 调用proto的SayHello函数
r, err := c.SayHello(ctx, &pb.HelloRequest{Name: NAME})
if err != nil {
log.Fatalf("调用SayHello失败: %v", err)
}
log.Println(r.Message)
}
Go:grpc的更多相关文章
- 基于HTTP/2和protobuf的RPC框架:GRPC
谷歌发布的首款基于HTTP/2和protobuf的RPC框架:GRPC Google 刚刚开源了grpc, 一个基于HTTP2 和 Protobuf 的高性能.开源.通用的RPC框架.Protobu ...
- 带入gRPC:gRPC Streaming, Client and Server
带入gRPC:gRPC Streaming, Client and Server 原文地址:带入gRPC:gRPC Streaming, Client and Server 前言 本章节将介绍 gRP ...
- 带入gRPC:gRPC Deadlines
带入gRPC:gRPC Deadlines 原文地址:带入gRPC:gRPC Deadlines项目地址:https://github.com/EDDYCJY/go... 前言 在前面的章节中,已经介 ...
- 跟我一起学Go系列:gRPC 入门必备
RPC 的定义这里就不再说,看文章的同学都是成熟的开发.gRPC 是 Google 开源的高性能跨语言的 RPC 方案,该框架的作者 Louis Ryan 阐述了设计这款框架的动机,有兴趣的同学可以看 ...
- 跟我一起学 Go 系列:gRPC 拦截器
Go gRPC 学习系列: 跟我一起学Go系列:gRPC 入门必备 第一篇内容我们已经基本了解到 gRPC 如何使用 .对应的三种流模式.现在已经可以让服务端和客户端互相发送消息.本篇仍然讲解功能性的 ...
- grpc-gateway:grpc对外提供http服务的解决方案
我所在公司的项目是采用基于Restful的微服务架构,随着微服务之间的沟通越来越频繁,就希望可以做成用rpc来做内部的通讯,对外依然用Restful.于是就想到了google的grpc. 使用grpc ...
- ScalaPB(3): gRPC streaming
接着上期讨论的gRPC unary服务我们跟着介绍gRPC streaming,包括: Server-Streaming, Client-Streaming及Bidirectional-Streami ...
- grpc-gateway:grpc转换为http协议对外提供服务
我所在公司的项目是采用基于Restful的微服务架构,随着微服务之间的沟通越来越频繁,就希望可以做成用rpc来做内部的通讯,对外依然用Restful.于是就想到了google的grpc. 使用grpc ...
- grpc:gRPC Concepts
本文介绍一些主要的gRPC概念. 服务定义 gRPC支持4种方法: 1.Unary RPCs where the client sends a single request to the server ...
随机推荐
- C# 13位时间戳(unix时间戳)
1.转义字符用在中间. "\"' 2.C#获取13位时间戳(unix时间戳) /// <summary> /// 将c# DateTime时间格式转换为Unix时间 ...
- Linux重定向用法详解
大家好,我是良许. 相信大家平时都会有需要复制粘贴数据的时候,如果是打开文件进行复制粘贴,就不可避免的需要较多的鼠标与键盘的操作,就会比较繁琐.那么有没有可以省掉这些繁琐操作的复制粘贴的方法呢? 答案 ...
- SQLyog无操作一段时间后重新操作会卡死问题(解决办法)
这种是因为一段时间不操作后,服务器将空闲连接丢弃了,而客户端(sqlyog)不知道,导致长时间无响应,而超时之后,sqlyog 使用了新的连接,所以又可以顺畅操作了. 将会话空闲时间默认改为自定义,填 ...
- PHP imagecolorallocatealpha - 为一幅图像分配颜色和透明度
imagecolorallocatealpha — 为一幅图像分配颜色和透明度.高佣联盟 www.cgewang.com 语法 int imagecolorallocatealpha ( resour ...
- luogu P4515 [COCI2009-2010#6] XOR 容斥
LINK:XOR 一个不常见的容斥套路题. 以往是只求三角形面积的交 现在需要求被奇数次覆盖的区域的面积. 打住 求三角形面积的交我也不会写 不过这道题的三角形非常特殊 等腰直角 且直角点都在左下方 ...
- 网络安全传输系统-sprint2线程池技术优化
part1:线程池工作原理 为满足多客户端可同时登陆的要求,服务器端必须实现并发工作方式.当服务器主进程持续等待客户端连接时,每连接上一个客户端都需一个单独的进程或线程处理客户端的任务.但考虑到多进程 ...
- 013_go语言中的函数多返回值
代码演示 package main import "fmt" func vals() (int, int) { return 3, 7 } func main() { a, b : ...
- Python安装工具
1.官网下载地址是:https://www.python.org/downloads/ 默认下载安装时记得勾选配置PATH路径 PIP工具包(我是选择Python 3.5的) 2.Windows 下 ...
- data argumentation 数据增强汇总
几何变换 flip:水平翻转,也叫镜像:垂直翻转 rotation:图片旋转一定的角度,这个可以通过opencv来操作,各个框架也有自己的算子 crop:随机裁剪,比如说,在ImageNet中可以将输 ...
- 致敬平凡的程序员--《SOD框架“企业级”应用数据架构实战》自序
“简单就是美” “平凡即是伟大” 上面两句话不知道是哪位名人说的,又或者是广大劳动人民总结的,反正我很小的时候就常常听到这两句话,这两句话也成了我的人生格言,而且事实上我也是一个生活过得比较简单的平凡 ...