首先我们来了解一下最简单的 RPC 形式:客户端发出单个请求,获得单个响应 。
服务端流式 RPC 除了在得到客户端请求信息后发送回一个应答流之外,与我们的简单例子一样 。在发送完所有应答后 , 服务端的状态详情(状态码和可选的状态信息)和可选的跟踪元数据被发送回客户端,以此来完成服务端的工作 。客户端在接收到所有服务端的应答后也完成了工作 。
客户端流式 RPC 也基本与我们的简单例子一样 , 区别在于客户端通过发送一个请求流给服务端,取代了原先发送的单个请求 。服务端通常(但并不必须)会在接收到客户端所有的请求后发送回一个应答,其中附带有它的状态详情和可选的跟踪数据 。
双向流式 RPC,调用由客户端调用方法来初始化,而服务端则接收到客户端的元数据,方法名和截止时间 。服务端可以选择发送回它的初始元数据或等待客户端发送请求 。下一步怎样发展取决于应用,因为客户端和服务端能在任意顺序上读写 - 这些流的操作是完全独立的 。例如服务端可以一直等直到它接收到所有客户端的消息才写应答,或者服务端和客户端可以像"乒乓球"一样:服务端后得到一个请求就回送一个应答 , 接着客户端根据应答来发送另一个请求,以此类推 。
通过运行下面的命令克隆并安装grpc-go代码库:
下载protobuf源码包
安装golang-protobuf
第一步使用 protocol buffers去定义 gRPC service 和方法 request 以及 response 的类型 。
要定义一个服务,必须在.proto 文件中指定 service:
然后在服务中定义 rpc 方法,指定请求的和响应类型,gRPC 允许定义4种类型的 service 方法 。
服务.proto文件如下所示:
go语言能做什么?很多朋友可能知道Go语言的优势在哪 , 却不知道Go语言适合用于哪些地方 。
1、 Go语言作为服务器编程语言,很适合处理日志、数据打包、虚拟机处理、文件系统、分布式系统、数据库代理等;网络编程方面 。Go语言广泛应用于Web应用、API应用、下载应用等;除此之外 , Go语言还可用于内存数据库和云平台领域,目前国外很多云平台都是采用Go开发 。
2、 其实Go语言主要用作服务器端开发 。其定位是用来开发"大型软件"的 , 适合于很多程序员一起开发大型软件,并且开发周期长 , 支持云计算的网络服务 。Go语言能够让程序员快速开发 , 并且在软件不断的增长过程中,它能让程序员更容易地进行维护和修改 。它融合了传统编译型语言的高效性和脚本语言的易用性和富于表达性 。
3、 Go语言成功案例 。Nsq:Nsq是由Go语言开发的高性能、高可用消息队列系统 , 性能非常高 , 每天能处理数十亿条的消息;
4、 Docker:基于lxc的一个虚拟打包工具,能够实现PAAS平台的组建 。
5、 Packer:用来生成不同平台的镜像文件,例如VM、vbox、AWS等,作者是vagrant的作者
6、 Skynet:分布式调度框架 。
7、 Doozer:分布式同步工具 , 类似ZooKeeper 。
8、 Heka:mazila开源的日志处理系统 。
9、 Cbfs:couchbase开源的分布式文件系统 。
10、 Tsuru:开源的PAAS平台,和SAE实现的功能一模一样 。
11、 Groupcache:memcahe作者写的用于Google下载系统的缓存系统 。
12、 God:类似redis的缓存系统,但是支持分布式和扩展性 。
13、 Gor:网络流量抓包和重放工具 。
以上的就是关于go语言能做什么的内容介绍了 。
【go语言服务器客户端 go语言开发游戏服务器】
推荐阅读
- 吉林市直播吃肉串的主播,吉林吃货
- 微信小店如何做广告推广,微信店铺小程序怎么推广
- word目录超链接怎么做,word目录超链接怎么设置
- 体育游戏的音乐,体育游戏音乐游戏还有哪些游戏?
- 怎么创建用户mysql 怎么创建用户样式
- 安卓怎么传送照片到苹果机,安卓怎么传照片到另一个苹果手机上
- 重庆拉屎的视频叫什么,拉屎事件
- hbc面板路由器怎么设置,hbc路由器上网设置
- c语言将函数的段地址打印 c语言 打印地址