gRPC Overview
-
Upload
varun-talwar -
Category
Technology
-
view
649 -
download
2
Transcript of gRPC Overview
![Page 1: gRPC Overview](https://reader031.fdocuments.net/reader031/viewer/2022012310/586fdd321a28ab18428b67bb/html5/thumbnails/1.jpg)
Google confidential │ Do not distribute Google confidential │ Do not distribute
gRPC:A multi-platform RPC systemLouis Ryan
26th February 2016
![Page 2: gRPC Overview](https://reader031.fdocuments.net/reader031/viewer/2022012310/586fdd321a28ab18428b67bb/html5/thumbnails/2.jpg)
Google confidential │ Do not distribute
Microservices at Google ~O(1010) RPCs per second.
Images by Connie Zhou
![Page 3: gRPC Overview](https://reader031.fdocuments.net/reader031/viewer/2022012310/586fdd321a28ab18428b67bb/html5/thumbnails/3.jpg)
Open source on Github for C, C++, Java, Node.js, Python, Ruby, Go, C#, PHP, Objective-C
gRPC core
gRPC java
![Page 4: gRPC Overview](https://reader031.fdocuments.net/reader031/viewer/2022012310/586fdd321a28ab18428b67bb/html5/thumbnails/4.jpg)
OVERVIEW
![Page 5: gRPC Overview](https://reader031.fdocuments.net/reader031/viewer/2022012310/586fdd321a28ab18428b67bb/html5/thumbnails/5.jpg)
gRPC is ...
Open Source RPC framework that makes it easy to build a heterogenous distributed system.
● Free as in beer! (and licensing)● Based on HTTP/2 today (multiplexed, works with the Internet)● Payload agnostic (we’ve implemented proto)● Streaming & Flow-Controlled● Designed for harsh environments (timeout, lameducking, load-balancing,
cancellation, …)● Support in 10 languages & first class mobile support● Layered & Pluggable - Bring your own monitoring, auth, naming, load
balancing ...
![Page 6: gRPC Overview](https://reader031.fdocuments.net/reader031/viewer/2022012310/586fdd321a28ab18428b67bb/html5/thumbnails/6.jpg)
● Core features and protocol are fully specified● Rolled out for public Google APIs and widely used internally
○ Lots of mobile adoption● Approaching 1.0 (GA) release in all languages
○ Stable APIs for key features● Benefit of layering on top of HTTP/2 standard
○ Interoperability with 3rd party proxies, tools, libraries..○ WHATWG Fetch
Project Status
![Page 7: gRPC Overview](https://reader031.fdocuments.net/reader031/viewer/2022012310/586fdd321a28ab18428b67bb/html5/thumbnails/7.jpg)
Multiple Languages C/C++
![Page 9: gRPC Overview](https://reader031.fdocuments.net/reader031/viewer/2022012310/586fdd321a28ab18428b67bb/html5/thumbnails/9.jpg)
message SubscribeRequest {
string topic = 1;
}
message Event {
string details = 1;
}
service Topics {
rpc Subscribe(SubscribeRequest)
returns (stream Event);
}
IDL (Interface definition language)Describe once and generate interfaces for any language.
Data ModelStructure of the request and response.
Binary format for network transmission.Wire Format
Protocol Buffers
![Page 10: gRPC Overview](https://reader031.fdocuments.net/reader031/viewer/2022012310/586fdd321a28ab18428b67bb/html5/thumbnails/10.jpg)
● Three complete stacks: C/C++, Java and Go.● Other language implementations wrap C-Runtime libraries.
○ Hand-written wrappers to maintain language idioms● Why wrap C?
○ Development costs & Implementation Consistency○ Performance○ Feature evolution
● Easy one line installation via packages e.g npm install grpc
Implementation Details
![Page 11: gRPC Overview](https://reader031.fdocuments.net/reader031/viewer/2022012310/586fdd321a28ab18428b67bb/html5/thumbnails/11.jpg)
USE CASES
![Page 12: gRPC Overview](https://reader031.fdocuments.net/reader031/viewer/2022012310/586fdd321a28ab18428b67bb/html5/thumbnails/12.jpg)
Google confidential │ Do not distribute
Use Cases
Client-server communication
Access Google Cloud Services
Build distributed applications
Images by Connie Zhou
• In data-centers
• In public/private cloud
• Clients and servers across:
• Mobile• Web• Cloud
• Also• Embedded
systems, IoT
• From GCP
• From Android and iOS devices
• From everywhere else
![Page 13: gRPC Overview](https://reader031.fdocuments.net/reader031/viewer/2022012310/586fdd321a28ab18428b67bb/html5/thumbnails/13.jpg)
HOW TO GET STARTED
![Page 14: gRPC Overview](https://reader031.fdocuments.net/reader031/viewer/2022012310/586fdd321a28ab18428b67bb/html5/thumbnails/14.jpg)
● Install○ apt-get install protobuf-compiler○ pip install grpcio
● Write the protos● Use protoc to generate service interfaces, messages & stubs● Implement services in server● Client instantiates stub● Test & Deploy
Typical development workflow
![Page 15: gRPC Overview](https://reader031.fdocuments.net/reader031/viewer/2022012310/586fdd321a28ab18428b67bb/html5/thumbnails/15.jpg)
● Auth & Security - TLS [Mutual], Plugin auth mechanism (e.g. OAuth)● Proxies - nghttp2, haproxy, Google LB, Nginx (in progress)● Client-side load balancing - etcd, Zookeeper, Eureka, …● Monitor & Trace - Zipkin, Google, DIY● Mobile - Reconnect, QUIC● Web - REST Adapter, WHATWG Fetch● API Evolution - Protobuf, Versioning
Advanced Deployment...
![Page 16: gRPC Overview](https://reader031.fdocuments.net/reader031/viewer/2022012310/586fdd321a28ab18428b67bb/html5/thumbnails/16.jpg)
ARCHITECTURE
![Page 17: gRPC Overview](https://reader031.fdocuments.net/reader031/viewer/2022012310/586fdd321a28ab18428b67bb/html5/thumbnails/17.jpg)
gRPC Core
Http 2.0
SSL
Code Generated API
Planned in:C/C++, Java, GoApplication Layer
Framework Layer
Transport Layer
Architecture: Native Implementation in Language
![Page 18: gRPC Overview](https://reader031.fdocuments.net/reader031/viewer/2022012310/586fdd321a28ab18428b67bb/html5/thumbnails/18.jpg)
Generic Low Level API in C
Python
Code-Generated Language Idiomatic API
Obj-C, C#, C++, ...Ruby PHPPython
gRPC Core in C
Http 2.0
SSL
Language Bindings
Code Generated
Ruby PHP Obj-C, C#, C++,...
Application Layer
Framework Layer
Transport Layer
Architecture: Derived Stack
![Page 19: gRPC Overview](https://reader031.fdocuments.net/reader031/viewer/2022012310/586fdd321a28ab18428b67bb/html5/thumbnails/19.jpg)
Wire Implementation across languages
gRPC Core
Http 2.0
SSL
Code Generated API
Auth Architecture and API
Credentials API
Auth-Credentials Implementation
Auth Plugin API
![Page 20: gRPC Overview](https://reader031.fdocuments.net/reader031/viewer/2022012310/586fdd321a28ab18428b67bb/html5/thumbnails/20.jpg)
● Generic mechanism for attaching metadata to requests and responses ● Built into the gRPC protocol - always available● Plugin API to attach “bearer tokens” to requests for Auth
○ OAuth2 access tokens○ OIDC Id Tokens
● Session state for specific Auth mechanisms is encapsulated in an Auth-credentials object
Metadata and Auth
![Page 21: gRPC Overview](https://reader031.fdocuments.net/reader031/viewer/2022012310/586fdd321a28ab18428b67bb/html5/thumbnails/21.jpg)
ADVANCED FEATURES
![Page 22: gRPC Overview](https://reader031.fdocuments.net/reader031/viewer/2022012310/586fdd321a28ab18428b67bb/html5/thumbnails/22.jpg)
gRPC: Naming
client nameserver
servers
name
addresses, ...
![Page 23: gRPC Overview](https://reader031.fdocuments.net/reader031/viewer/2022012310/586fdd321a28ab18428b67bb/html5/thumbnails/23.jpg)
gRPC: LoadBalancing
client LB Controller
servers
Control RPC
address-list
![Page 24: gRPC Overview](https://reader031.fdocuments.net/reader031/viewer/2022012310/586fdd321a28ab18428b67bb/html5/thumbnails/24.jpg)
ROADMAP..sorta !
![Page 25: gRPC Overview](https://reader031.fdocuments.net/reader031/viewer/2022012310/586fdd321a28ab18428b67bb/html5/thumbnails/25.jpg)
Initial Alpha Release
Beta Release
Stability, Easy
installation, 1.0 release
Q1 ‘16
Roadmap: Timeline
Q2 ‘15 Q3 ‘15, Q4’15
Q1 ‘15 Q2 ‘16 Q3 16
Additional Alpha
Releases
Load balancing, Naming,
Performance
Debugging and Tracing,Browser support