gRPC阅读日记(五)创建grpc的服务端和客户端

简介: gRPC阅读日记(五)创建grpc的服务端和客户端

gRPC阅读日记(五)

学下如何创建一个rpc server

当我们实现了所有的方法之后,我们需要去创建一个gRPC服务,这样客户端才能真正的请求我们的服务,让我们gRPC是如何创建服务的。

flag.Parse()
lis, err := net.Listen("tcp", fmt.Sprintf("localhost:%d", *port))
if err != nil {
  log.Fatalf("failed to listen: %v", err)
}
var opts []grpc.ServerOption
...
grpcServer := grpc.NewServer(opts...)
pb.RegisterRouteGuideServer(grpcServer, newServer())
grpcServer.Serve(lis)

在创建时我们做了:

  1. 指定监听接口:
    lis, err := net.Listen()
  2. 创建gRPC实例,grpc.NewServer()
  3. 将我们的服务注册到gRPC服务器上
  4. 调用 Serve() 做一个阻塞,直到进程被kill调或者 stop() 被调用的时候。

创建客户端和服务存根

完整客户端实现用例

为了去调用服务方法,首先需要创建gRPC channel去跟服务器建立联系,通过传入服务器地址和端口给grpc.Dial()

var opts []grpc.DialOption
...
conn, err := grpc.Dial(*serverAddr, opts...)
if err != nil {
  ...
}
defer conn.Close()

可以使用DialOptinos去设置认证凭据(例如TLS),将它传给grpc.Dial()。

当gRPC channel设置成功,我们需要一个客户端存根来执行RPC,可以从之前写好了.proto文件生成的pb包提供的NewRouteGuideClient方法来获取它。

也就是实例化客户端了

client := pb.NewRouteGuideClient(conn)

Reference

https://grpc.io/docs/languages/go/basics/


相关文章
|
NoSQL Ubuntu 测试技术
GRPC C++开发环境搭建
GRPC C++开发环境搭建
856 1
|
4月前
|
设计模式 消息中间件 存储
【设计模式】【行为型模式】观察者模式(Observer)
一、入门 什么是观察者模式? 观察者模式(Observer Pattern)是一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会收到通知并自动更新。
232 9
|
测试技术 API 数据库
gRPC Status 状态码枚举类型 介绍文档 (更新 gRPC Status 状态码 实操 代码技巧介绍)
gRPC Status 状态码枚举类型 介绍文档 (更新 gRPC Status 状态码 实操 代码技巧介绍)
287 5
|
10月前
|
缓存 IDE Java
SpringBoot入门(7)- 配置热部署devtools工具
SpringBoot入门(7)- 配置热部署devtools工具
470 2
 SpringBoot入门(7)- 配置热部署devtools工具
|
C++
gRPC 四模式之 服务器端流RPC模式
gRPC 四模式之 服务器端流RPC模式
293 0
|
Java
Postman调试grpc
Postman调试grpc
489 1
|
运维 Linux
在Linux中,如何排查硬件故障?
在Linux中,如何排查硬件故障?
|
网络协议 Linux KVM
在Linux中,如何配置网络桥接?
在Linux中,如何配置网络桥接?
|
存储 C语言
C语言链表详解 & 两类重要链表的实现
本文详细介绍了链表数据结构,包括链表的非连续、非顺序的物理存储和逻辑顺序通过指针链接的概念。文章以C语言实现链表,并计划更新两种链表(无头单向非循环链表和带头双向循环链表)的代码实现。目前提供了链表的逻辑和物理结构图解,帮助读者理解链表的工作原理,强调了画图在学习数据结构中的重要性。此外,文章指出链表的分类有多种组合形式,并预告将对常用类型的链表进行代码实现。
380 4
|
存储 算法 程序员
红黑树探险:从理论到实践,一站式掌握C++红黑树
红黑树探险:从理论到实践,一站式掌握C++红黑树
291 0