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/


相关文章
|
4月前
|
Dubbo Java 应用服务中间件
从源码全面解析 dubbo 服务端服务调用的来龙去脉
从源码全面解析 dubbo 服务端服务调用的来龙去脉
|
2月前
|
运维 前端开发 Oracle
再有人问你WebSocket为什么牛逼,就把这篇文章发给他!
再有人问你WebSocket为什么牛逼,就把这篇文章发给他!2008年6月诞生了一个影响计算机世界的通信协议,原先需要二十台计算机资源才能支撑的业务场景,现在只需要一台,这得帮"抠门"老板们省下多少钱,它就是大名鼎鼎的WebSocket协议。很快在下一年也就是2009年的12月,Google浏览器就宣布成为第一个支持WebSocket标准的浏览器。WebSocket的推动者和设计者就是下面的Michael Carter,他设计的WebSocket协议技术现在每天在全地球有超过的设备在使用。
335 1
再有人问你WebSocket为什么牛逼,就把这篇文章发给他!
|
2月前
|
存储 前端开发 Go
golang怎么搭建Websocket聊天室服务端
连接的添加和移除 添加连接: 当一个新的WebSocket连接建立时,服务器需要将这个连接添加到全局的连接列表中。多个连接可能同时建立,从而导致多个并发操作试图修改连接列表。 移除连接: 当一个WebSocket连接断开时,服务器需要将这个连接从全局的连接列表中移除。如果多个连接同时断开,可能会导致并发修改连接列表。
|
11月前
|
编解码 Rust 自然语言处理
gRPC源码分析(三):从Github文档了解gRPC的项目细节
从这里可以看出,gRPC虽然是支持多语言,但原生的实现并不多。如果想在一些小众语言里引入gRPC,还是有很大风险的,有兴趣的可以搜索下TiDB在探索rust的gRPC的经验分享。
174 1
|
4月前
|
存储 Kubernetes 安全
Nacos常见问题之服务端grpc请求服务端端口一直不可用
Nacos是一款易于使用的动态服务发现、配置管理和服务管理平台,针对不同版本可能出现的兼容性和功能问题,本汇总贴心整理了用户在使用Nacos时可能遇到的版本相关问题及答案,以便用户能够更顺畅地进行服务治理和配置管理。
241 0
|
11月前
|
负载均衡
gRPC源码分析(二):从官网文档看gRPC的特性
在第一部分,我们学习了gRPC的基本调用过程,这样我们对全局层面有了一定了解。接下来,我们将结合官方文档,继续深入学习、探索下去。
60 0
|
11月前
|
Java 编译器 API
gRPC 初探与简单使用
gRPC 初探与简单使用
53 0
|
安全 Go
gRPC(七)进阶:自定义身份验证
gRPC为每个gRPC方法调用提供了Token认证支持,可以基于用户传入的Token判断用户是否登陆、以及权限等,实现Token认证的前提是,需要定义一个结构体,并实现credentials.PerRPCCredentials接口。
1047 1
gRPC(七)进阶:自定义身份验证
|
Java Go Maven
一个简单的案例入门 gRPC
一个简单的案例入门 gRPC
|
Go 流计算
gRPC阅读日记(六)来看看客户端的rpc请求如何实现
gRPC阅读日记(六)来看看客户端的rpc请求如何实现