gRPC阅读日记(二)

简介: gRPC阅读日记(二)

gRPC基础教程(二)

生成客户端和服务端代码

官方给的.proto文件 routeguide/route_guide.proto

上文介绍了gRPC的几种RPC请求类型

下一步我们需要使用.proto文件生成gRPC客户端和服务端的接口代码。因为gRPC是支持多语言的,目前支持C#,c++,Go,Java,Python,PHP等。我选的Go的教程,其他的也一样,只不过生成对应语言的代码需要的插件不一样罢了。现在需要使用protocol buffer编译器protoc去生产Go的代码。

在同级目录下运行

$ protoc --go_out=. --go_opt=paths=source_relative \
    --go-grpc_out=. --go-grpc_opt=paths=source_relative \
    routeguide/route_guide.proto

在执行这条命令之后会生成以下文件

  • route_guide.pb.go,该文件包括所有protocol buffer代码包含填充,序列化,检索request和response的消息类型
  • route_guide_grpc.pb.go,包含
  • 客户端调用在RouteGuide服务中定义的方法接口
  • 服务端需要实现的接口,同样也在RouteGuide服务中预定义过

创建服务端

实现服务端的步骤分为两步

  • 实现我们先前在服务中定义的接口
  • 运行gRPC服务端去监听来在客户端的请求外加分发到正确的服务上去

用例server/server.go

下次会讲RouteGuide的具体实现


相关文章
|
6月前
|
程序员 测试技术 Docker
黑马程序员2024最新SpringCloud微服务开发与实战 个人学习心得、踩坑、与bug记录Day3 全网最全
黑马程序员2024最新SpringCloud微服务开发与实战 个人学习心得、踩坑、与bug记录Day3 全网最全(1)
434 1
|
6月前
|
Java 程序员 Docker
黑马程序员2024最新SpringCloud微服务开发与实战 个人学习心得、踩坑、与bug记录Day2 全网最快最全(上)
黑马程序员2024最新SpringCloud微服务开发与实战 个人学习心得、踩坑、与bug记录Day2 全网最快最全(上)
233 0
|
6月前
|
关系型数据库 MySQL Shell
黑马程序员2024最新SpringCloud微服务开发与实战 个人学习心得、踩坑、与bug记录Day2 全网最快最全(下)
黑马程序员2024最新SpringCloud微服务开发与实战 个人学习心得、踩坑、与bug记录Day2 全网最快最全(下)
283 0
|
7月前
|
Dubbo 中间件 应用服务中间件
【想进大厂还不会阅读源码】ShenYu源码-支持motan协议
ShenYu源码阅读📚。原来的插件只支持 motan2 协议,并且是硬编码的,本次修改使MotanRpcExt 得到增强。我们可以通过以上的线索来思考我们本次的阅读线索,贡献者是做了什么实现了增强motan插件、这个motan的插件的功能是什么。
|
Java 微服务 Spring
Github星标百万!终于有人将Spring技术精髓收录成册
全面剖析Spring Framework核心特征及新增功能,助你轻松掌握Java企业级应用程序开发深入介绍Spring Boot高级功能,助你将微服务快速部署到云端
|
7月前
深入浅出gRPC——极客时间李林锋
深入浅出gRPC——极客时间李林锋
119 0
GitHub阅读量最高的文章竟是图解Java,不愧是Alibaba内部资料
这篇《Java基础知识总结》是 JavaGuide 上阅读量最高的一篇文章,由于我对其进行了重构完善并且修复了很多小问题,所以,在头条同步一下!
|
安全 Java Serverless
65w字!阿里分布式开发小册Github新开源!原理实践双飞
我们都知道传统的集中式系统已无法满足当今的互联网三高需求,所以现在的系统架构都是向着分布式系统不断演进。同时,越来越多的企业选择通过云的方式发布和部署应用,这也大大促进了分布式系统的发展。未来将是分布式系统“爆发”的时代。
|
移动开发 网络协议 大数据
WebSocket全部内容及项目经验(一)
在websocket未出来之前,实现实时数据更新都是采用轮询http请求实现的,很明显这种方式有很大的缺陷,一条数据就需要发一次http请求。HTTP请求可能包含较长的头部,其中真正有效的数据可能只是很小的一部分,显然这样会浪费很多的带宽等资源。而比较新的技术去做轮询的效果是Comet。这种技术虽然可以双向通信,但依然需要反复发出请求。而且在Comet中,普遍采用的长链接,也会消耗服务器资源。在这种情况下,HTML5定义了WebSocket协议,能更好的节省服务器资源和带宽,并且能够更实时地进行通讯。
105 0
|
网络协议 JavaScript
WebSocket全部内容及项目经验(二)
Socket.readyState: 只读属性 readyState 表示连接状态。 Socket.bufferedAmount: 只读属性 bufferedAmount 已被 send() 放入正在队列中等待传输,但是还没有发出的 UTF-8 文本字节数。 下面的代码展示一个使用bufferedAmount 特性每秒发送更新的例子。如果网络无法承受这一速率,它会相应作出调整。

相关实验场景

更多