+ All Categories
Home > Technology > gRPC Overview

gRPC Overview

Date post: 07-Jan-2017
Category:
Upload: varun-talwar
View: 636 times
Download: 2 times
Share this document with a friend
26
Google confidential Do not distribute Google confidential Do not distribute gRPC: A multi-platform RPC system Louis Ryan 26th February 2016
Transcript
Page 1: gRPC Overview

Google confidential │ Do not distribute Google confidential │ Do not distribute

gRPC:A multi-platform RPC systemLouis Ryan

26th February 2016

Page 2: gRPC Overview

Google confidential │ Do not distribute

Microservices at Google ~O(1010) RPCs per second.

Images by Connie Zhou

Page 3: gRPC Overview

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

OVERVIEW

Page 5: gRPC Overview

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

● 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

Multiple Languages C/C++

Page 8: gRPC Overview

HTTP/2HTTP/1.1

http://www.http2demo.io/

Page 9: gRPC Overview

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

● 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

USE CASES

Page 12: gRPC Overview

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

HOW TO GET STARTED

Page 14: gRPC Overview

● 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

● 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

ARCHITECTURE

Page 17: gRPC Overview

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

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

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

● 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

ADVANCED FEATURES

Page 22: gRPC Overview

gRPC: Naming

client nameserver

servers

name

addresses, ...

Page 23: gRPC Overview

gRPC: LoadBalancing

client LB Controller

servers

Control RPC

address-list

Page 24: gRPC Overview

ROADMAP..sorta !

Page 25: gRPC Overview

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

Page 26: gRPC Overview

Thank you!Thank you!

Twitter: @grpcioSite: grpc.ioGroup: [email protected]


Recommended