gRPC学习记录(一)--概念性知识
gRPC学习记录(一)--概念性知识
标签(空格分隔): javaWEB
前几天刚发了一个如何学习一门新技术,现在正好遇到了要学习的东西,因为重新找了工作,所以新公司使用的技术需要自己快速上手,那么快速学习就是必须掌握的一门技能了.下面根据之前的博文展示如何快速入门一门新技术.(本篇很多内容都摘抄自网络)
1.gRPC是什么?
搜寻百科博客之类的可以查看到很多资料.

gRPC 是一个高性能、开源和通用的 RPC 框架,面向移动和 HTTP/2 设计,基于protobuf 3.x,基于Netty 4.x +。目前提供 C、Java 和 Go 语言版本,分别是:grpc, grpc-java, grpc-go. 其中 C 版本支持 C, C++, Node.js,Python, Ruby, Objective-C,PHP和C#支持.gRPC基于HTTP/2标准设计,带来诸如双向流、流控、头部压缩、单 TCP 连接上的多复用请求等特。这些特性使得其在移动设备上表现更好,更省电和节省空间占用。
gRPC基于定义服务的思想,定义可以远程调用的方法,包括方法的参数和返回类型。在服务器端,服务器实现此接口并运行一个gRPC服务器来处理客户端调用。在客户端,客户端有一个“存根stub”(简称为某些语言的客户端),提供与服务器相同的方法。所有的数据传输都使用protobuf。
关键词: RPC HTTP/2 protobuf 3.x Netty 4.x (记录关键词,这些可能是需要你自己额外补充的知识)
gRPC有几个优点:
- 在服务定义方面很简单,可以很轻松地搭建出一个RPC的调度或者是P2P相互之间调度的框架。
- gRPC是语言无关、平台无关的,它有很多种不同的实现。如果写好一个Protobuf协议定义,可以轻松地去生成不同语言的协议框架。
- 它支持双向的流的调用,在做一个分布式系统或者是相互调用的系统时.
2.同类技术有哪些?
这些搜一下作为了解知识.
http://colobu.com/2016/09/05/benchmarks-of-popular-rpc-frameworks/
3.gRPC解决的是什么问题?
这个问题可以理解为RPC解决了什么问题,gRPC在此基础上做了哪些便捷优化?
RPC 的主要目的是为组件提供一种相互通信的 方式,使这些组件之间能够相互发出请求并传递这些请求的结果。
gRPC客户端应用程序可以就像调用本地对象方法一样直接调用不同服务器上的应用程序方法,使您更容易创建分布式应用程序和服务。
参考: http://www.tuicool.com/articles/VNnae2
4.在这之前都是怎么解决这些问题的?
这个还真不清楚,可能是http接口吧
5.gRPC的组成部分
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-netty</artifactId>
<version>1.0.3</version>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-protobuf</artifactId>
<version>1.0.3</version>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-stub</artifactId>
<version>1.0.3</version>
</dependency>
这一步主要是对整个技术的了解,不需要很深入,我现在对这个东西还是不懂,只知道他能帮我的A项目调用B服务的接口.下一步就是入门的Hello world了.