gRPC學習記錄(一)--概念性知識
標簽(空格分隔): javaWEB
前幾天剛發(fā)了一個如何學習一門新技術,現在正好遇到了要學習的東西,因為重新找了工作,所以新公司使用的技術需要自己快速上手,那么快速學習就是必須掌握的一門技能了.下面根據之前的博文展示如何快速入門一門新技術.(本篇很多內容都摘抄自網絡)
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 連接上的多復用請求等特吏颖。這些特性使得其在移動設備上表現更好,更省電和節(jié)省空間占用鞠柄。
gRPC基于定義服務的思想侦高,定義可以遠程調用的方法,包括方法的參數和返回類型厌杜。在服務器端奉呛,服務器實現此接口并運行一個gRPC服務器來處理客戶端調用计螺。在客戶端,客戶端有一個“存根stub”(簡稱為某些語言的客戶端)瞧壮,提供與服務器相同的方法登馒。所有的數據傳輸都使用protobuf。
關鍵詞: RPC HTTP/2 protobuf 3.x Netty 4.x (記錄關鍵詞,這些可能是需要你自己額外補充的知識)
gRPC有幾個優(yōu)點:
- 在服務定義方面很簡單咆槽,可以很輕松地搭建出一個RPC的調度或者是P2P相互之間調度的框架陈轿。
- gRPC是語言無關、平臺無關的秦忿,它有很多種不同的實現麦射。如果寫好一個Protobuf協議定義,可以輕松地去生成不同語言的協議框架灯谣。
- 它支持雙向的流的調用潜秋,在做一個分布式系統或者是相互調用的系統時.
2.同類技術有哪些?
這些搜一下作為了解知識.
http://colobu.com/2016/09/05/benchmarks-of-popular-rpc-frameworks/
3.gRPC解決的是什么問題?
這個問題可以理解為RPC解決了什么問題,gRPC在此基礎上做了哪些便捷優(yōu)化?
RPC 的主要目的是為組件提供一種相互通信的 方式,使這些組件之間能夠相互發(fā)出請求并傳遞這些請求的結果胎许。
gRPC客戶端應用程序可以就像調用本地對象方法一樣直接調用不同服務器上的應用程序方法峻呛,使您更容易創(chuàng)建分布式應用程序和服務。
參考: 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了.