The document discusses gRPC, an open source framework for building microservices. It was created by Google to be a high performance, open source universal RPC framework. gRPC uses HTTP/2 for transport, Protocol Buffers as the interface definition language, and generated client/server code for many languages to make cross-platform communications simple and efficient. The document provides an overview of gRPC's goals and architecture, how to define a service using .proto files, and examples of common RPC patterns like unary, streaming, and bidirectional calls.
Presentation at NetPonto community: "We’re going to discuss gRPC, Google’s open-source RPC framework. I’ll dive a bit into the history of RPC as a protocol, and what its historical use has been. I’ll also highlight some benefits to adopt gRPC and how its possible to swap out parts of gRPC and still take advantage of gRPC’s benefits. Finally I’ll answer the question that has been on many lips since gRPC was announced — what does this mean for REST?"
Introduction to gRPC: A general RPC framework that puts mobile and HTTP/2 fir...Codemotion
gRPC is a high performance, language-neutral, general RPC framework developed and open sourced by Google. Built on the HTTP/2 standard, gRPC brings many benefits such as bidirectional streaming, flow control, header compression, multiplexing and more. In this session, you will learn about gRPC and how you can use it in your applications.
Presentation at NetPonto community: "We’re going to discuss gRPC, Google’s open-source RPC framework. I’ll dive a bit into the history of RPC as a protocol, and what its historical use has been. I’ll also highlight some benefits to adopt gRPC and how its possible to swap out parts of gRPC and still take advantage of gRPC’s benefits. Finally I’ll answer the question that has been on many lips since gRPC was announced — what does this mean for REST?"
Introduction to gRPC: A general RPC framework that puts mobile and HTTP/2 fir...Codemotion
gRPC is a high performance, language-neutral, general RPC framework developed and open sourced by Google. Built on the HTTP/2 standard, gRPC brings many benefits such as bidirectional streaming, flow control, header compression, multiplexing and more. In this session, you will learn about gRPC and how you can use it in your applications.
Przemek Nowakowski: Podejście mikroserwisowe w naszym projekcie, oprócz oczywistych zalet, potrafi wygenerować też szereg problemów – między innymi z komunikacją pomiędzy poszczególnymi serwisami. W prezentacji omówimy od podstaw framework gRPC, dzięki któremu będziemy w stanie w szybki i przyjemny sposób połączyć nasze serwisy. Sprawdzimy też, do czego się nadaje, do czego nie oraz prześledzimy podstawowe problemy, jakie możemy napotkać przy takim podejściu. Nie obejdzie się również bez porównania z obecnymi na rynku alternatywami i sprawdzenia, co z tą obiecywaną wysoką wydajnością.
gRPC in Golang presentation
In this talk, I introduced gRPC, Protocol buffer, and how to use them with golang.
Source code used in the presentation: http://github.com/AlmogBaku/grpc-in-go
Slides for the talk in Ruby SG meetup. (Apr 2018)
https://github.com/sathiyaseelan/grpc-client-ruby
https://github.com/sathiyaseelan/grpc-client-go
https://github.com/sathiyaseelan/grpc-rails-api
Spend some time working with OpenAPI and gRPC and you’ll notice that these two technologies have a lot in common. Both are open source efforts, both describe APIs, and both promise better experiences for API producers and consumers. So why do we need both? If we do, what value does each provide? What can each project learn from the other? We’ll bring the two together for a side-by-side comparison and pose answers to these and other questions about two API methodologies that will do much to influence the future of networked APIs.
gRPC is used to communicate between microservices. You can generate code in more than 12 languages using gRPC .It is 25 times more performant than REST API. The session covers grpc internals deep dive and types of streaming possible in gRPC and short demo on grpc
During my journey in micro-services, it became apparent that the REST standard has been widely used in communication between micro-services for a long time. But recently the gRPC started to invade its territory. It turns out that there are some good reasons for this. In this lecture, I will present an introduction to gRCP, its main characteristics and the reasons why companies like Google, Netflix, and Docker are adopting this flexible and performative medium of communication.
gRPC is designed to be fast and high performance. It's basically can overcome performance issues caused by REST communications between different dependent microservices.
gRPC supports Binary data transfer in the form of Protocol Buffers which makes it extremely efficient in the Microservice cloud environment.
gRPC can help minimize the barrier of cross-system communication by providing language-agnostic API definitions, backward and forward compatible versioning with protocol buffers, and pluggable load balancing and tracing. You will see how to quickly get up and running with the gRPC framework using Node.js from creating a protocol definition, creating meaningful health checks, and securing the endpoint. Additionally, this session will go over best practices and how to take full advantage of what gRPC has to offer.
Back in 2015, Square and Google collaborated to launch gRPC, an open source RPC framework backed by protocol buffers and HTTP/2, based on real-world experiences operating microservices at scale. If you build microservices, you will be interested in gRPC.
This webcast covers:
- a technical overview of gRPC
- use cases and applicability in your stack
- a deep dive into the practicalities of operationalizing gRPC
Protocol buffers are a flexible, efficient, automated mechanism for serializing structured data, it's used due to its simplicity and performance. It supports many languages and can be used with scala using Scala PB.
Przemek Nowakowski: Podejście mikroserwisowe w naszym projekcie, oprócz oczywistych zalet, potrafi wygenerować też szereg problemów – między innymi z komunikacją pomiędzy poszczególnymi serwisami. W prezentacji omówimy od podstaw framework gRPC, dzięki któremu będziemy w stanie w szybki i przyjemny sposób połączyć nasze serwisy. Sprawdzimy też, do czego się nadaje, do czego nie oraz prześledzimy podstawowe problemy, jakie możemy napotkać przy takim podejściu. Nie obejdzie się również bez porównania z obecnymi na rynku alternatywami i sprawdzenia, co z tą obiecywaną wysoką wydajnością.
gRPC in Golang presentation
In this talk, I introduced gRPC, Protocol buffer, and how to use them with golang.
Source code used in the presentation: http://github.com/AlmogBaku/grpc-in-go
Slides for the talk in Ruby SG meetup. (Apr 2018)
https://github.com/sathiyaseelan/grpc-client-ruby
https://github.com/sathiyaseelan/grpc-client-go
https://github.com/sathiyaseelan/grpc-rails-api
Spend some time working with OpenAPI and gRPC and you’ll notice that these two technologies have a lot in common. Both are open source efforts, both describe APIs, and both promise better experiences for API producers and consumers. So why do we need both? If we do, what value does each provide? What can each project learn from the other? We’ll bring the two together for a side-by-side comparison and pose answers to these and other questions about two API methodologies that will do much to influence the future of networked APIs.
gRPC is used to communicate between microservices. You can generate code in more than 12 languages using gRPC .It is 25 times more performant than REST API. The session covers grpc internals deep dive and types of streaming possible in gRPC and short demo on grpc
During my journey in micro-services, it became apparent that the REST standard has been widely used in communication between micro-services for a long time. But recently the gRPC started to invade its territory. It turns out that there are some good reasons for this. In this lecture, I will present an introduction to gRCP, its main characteristics and the reasons why companies like Google, Netflix, and Docker are adopting this flexible and performative medium of communication.
gRPC is designed to be fast and high performance. It's basically can overcome performance issues caused by REST communications between different dependent microservices.
gRPC supports Binary data transfer in the form of Protocol Buffers which makes it extremely efficient in the Microservice cloud environment.
gRPC can help minimize the barrier of cross-system communication by providing language-agnostic API definitions, backward and forward compatible versioning with protocol buffers, and pluggable load balancing and tracing. You will see how to quickly get up and running with the gRPC framework using Node.js from creating a protocol definition, creating meaningful health checks, and securing the endpoint. Additionally, this session will go over best practices and how to take full advantage of what gRPC has to offer.
Back in 2015, Square and Google collaborated to launch gRPC, an open source RPC framework backed by protocol buffers and HTTP/2, based on real-world experiences operating microservices at scale. If you build microservices, you will be interested in gRPC.
This webcast covers:
- a technical overview of gRPC
- use cases and applicability in your stack
- a deep dive into the practicalities of operationalizing gRPC
Protocol buffers are a flexible, efficient, automated mechanism for serializing structured data, it's used due to its simplicity and performance. It supports many languages and can be used with scala using Scala PB.
Introduction to gRPC - Mete Atamel - Codemotion Rome 2017Codemotion
gRPC is a high performance, language-neutral, general RPC framework developed and open sourced by Google. Built on the HTTP/2 standard, gRPC brings many benefits such as bidirectional streaming, flow control, header compression, multiplexing and more. In this session, you will learn about gRPC and how you can use it in your applications.
CocoaConf: The Language of Mobile Software is APIsTim Burks
We’re all excited about using the same language to write our mobile apps and cloud services, but as we do, we’ll still need to work with a few things that aren’t written with Swift. Fortunately, there are some great patterns that we can use for doing that. In this session we’ll talk about two technologies that you can use to make your app speak with APIs written in any language: OpenAPI and Protocol Buffers, and then we’ll see how to use them from clients and servers that are written in Swift.
Presented Friday November 4, 2016 in San Jose.
What I learned about APIs in my first year at GoogleTim Burks
Tim Burks spent a decade building Electronic Design Automation systems and another building mobile apps. Now he's focused on the thing that holds them all together: APIs. In 2016 he joined Google where he works on open source software that helps developers use gRPC and OpenAPI.
Linux HTTPS/TCP/IP Stack for the Fast and Secure WebAll Things Open
Presented at All Things Open 2018
Presented by Alexander Krizhanovsky with Tempesta Technologies INC
10/23/18 - 2:00 PM - Networking/Infrastructure Track
There’s a lot of exciting new stuff in .NET Core, and more on the way! We’ll take a look at some top features in 3.1, including Blazor, desktop support (WPF and Windows Forms), single file executables, language features, and more. We'll also take an early look at what's on the way in .NET 5, and how you can start planning for it today.
describing and comparing different protocols when it come to deploying apis on edge computing devices.
5 different categories are analyzed and 7 protocols are examined
An introduction to KrakenD, the ultra-high performance API Gateway with middlewares. An opensource tool built using go that is currently serving traffic in major european sites.
When we desire a communication between two applications possibly running on different machines, we need sockets. This presentation aims to provide knowledge of basic socket programming to undergraduate students. Basically, this presentation gives the importance of socket in the area of networking and Unix Programming. The presentation of Topic (Sockets) has designed according to the Network Programming Subject, B.Tech, 6th Semester syllabus of Punjab Technical University Kapurthala, Punjab.
Retention Strategies in Mobile E-CommerceAboutYouGmbH
The app is the fastest growing product at ABOUT YOU and already generates a large portion of its sales. New app users to win over different marketing channels is not exactly cheap.
It is thus all the more important to keep the commitment and the retention of the won users high.
E-commerce is a fast-growing market, but most online shops lag behind the conceptual and technical possibilities. Inspiring online experiences are rare and all customers usually see the same, non-personalized, online shop.
By integrating external content from Influencers, Fashion and Consumer Brands as well as users themselves, ABOUTYOU makes online shopping more inspiring and ventures into the field of Discovery Commerce. In addition, ABOUTYOU consistently focuses on personalization and distinguished itself from the competition by an individually tailored shopping experience for its users.
Bridging the Digital Gap Brad Spiegel Macon, GA Initiative.pptxBrad Spiegel Macon GA
Brad Spiegel Macon GA’s journey exemplifies the profound impact that one individual can have on their community. Through his unwavering dedication to digital inclusion, he’s not only bridging the gap in Macon but also setting an example for others to follow.
# Internet Security: Safeguarding Your Digital World
In the contemporary digital age, the internet is a cornerstone of our daily lives. It connects us to vast amounts of information, provides platforms for communication, enables commerce, and offers endless entertainment. However, with these conveniences come significant security challenges. Internet security is essential to protect our digital identities, sensitive data, and overall online experience. This comprehensive guide explores the multifaceted world of internet security, providing insights into its importance, common threats, and effective strategies to safeguard your digital world.
## Understanding Internet Security
Internet security encompasses the measures and protocols used to protect information, devices, and networks from unauthorized access, attacks, and damage. It involves a wide range of practices designed to safeguard data confidentiality, integrity, and availability. Effective internet security is crucial for individuals, businesses, and governments alike, as cyber threats continue to evolve in complexity and scale.
### Key Components of Internet Security
1. **Confidentiality**: Ensuring that information is accessible only to those authorized to access it.
2. **Integrity**: Protecting information from being altered or tampered with by unauthorized parties.
3. **Availability**: Ensuring that authorized users have reliable access to information and resources when needed.
## Common Internet Security Threats
Cyber threats are numerous and constantly evolving. Understanding these threats is the first step in protecting against them. Some of the most common internet security threats include:
### Malware
Malware, or malicious software, is designed to harm, exploit, or otherwise compromise a device, network, or service. Common types of malware include:
- **Viruses**: Programs that attach themselves to legitimate software and replicate, spreading to other programs and files.
- **Worms**: Standalone malware that replicates itself to spread to other computers.
- **Trojan Horses**: Malicious software disguised as legitimate software.
- **Ransomware**: Malware that encrypts a user's files and demands a ransom for the decryption key.
- **Spyware**: Software that secretly monitors and collects user information.
### Phishing
Phishing is a social engineering attack that aims to steal sensitive information such as usernames, passwords, and credit card details. Attackers often masquerade as trusted entities in email or other communication channels, tricking victims into providing their information.
### Man-in-the-Middle (MitM) Attacks
MitM attacks occur when an attacker intercepts and potentially alters communication between two parties without their knowledge. This can lead to the unauthorized acquisition of sensitive information.
### Denial-of-Service (DoS) and Distributed Denial-of-Service (DDoS) Attacks
1.Wireless Communication System_Wireless communication is a broad term that i...JeyaPerumal1
Wireless communication involves the transmission of information over a distance without the help of wires, cables or any other forms of electrical conductors.
Wireless communication is a broad term that incorporates all procedures and forms of connecting and communicating between two or more devices using a wireless signal through wireless communication technologies and devices.
Features of Wireless Communication
The evolution of wireless technology has brought many advancements with its effective features.
The transmitted distance can be anywhere between a few meters (for example, a television's remote control) and thousands of kilometers (for example, radio communication).
Wireless communication can be used for cellular telephony, wireless access to the internet, wireless home networking, and so on.
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024APNIC
Ellisha Heppner, Grant Management Lead, presented an update on APNIC Foundation to the PNG DNS Forum held from 6 to 10 May, 2024 in Port Moresby, Papua New Guinea.
Multi-cluster Kubernetes Networking- Patterns, Projects and GuidelinesSanjeev Rampal
Talk presented at Kubernetes Community Day, New York, May 2024.
Technical summary of Multi-Cluster Kubernetes Networking architectures with focus on 4 key topics.
1) Key patterns for Multi-cluster architectures
2) Architectural comparison of several OSS/ CNCF projects to address these patterns
3) Evolution trends for the APIs of these projects
4) Some design recommendations & guidelines for adopting/ deploying these solutions.
This 7-second Brain Wave Ritual Attracts Money To You.!nirahealhty
Discover the power of a simple 7-second brain wave ritual that can attract wealth and abundance into your life. By tapping into specific brain frequencies, this technique helps you manifest financial success effortlessly. Ready to transform your financial future? Try this powerful ritual and start attracting money today!
9. 9@hostirosti @grpcio
Today statistics show that there are on average:
12 distinct hosts per page
78 distinct requests per page
1,232 KB transferred per page
Resulting in typical render times of 2.6-5.6 seconds
(50th and 90th percentiles).
So what’s up with HTTP/1?
* Numbers are medians, based on latest HTTP Archive crawl data.
10. 10@hostirosti @grpcio
HTTP Pipelining
Queue responses not requests
Domain Sharding
Need more than 6 connections per origin?
Add more origins!
Concatenation and Spriting
Multiple JavaScript/CSS/Image files
combined into a single resource
Resource Inlining
Inline JS/CSS/Images in the page
img1.example.com
img2.example.com
img3.example.com
...
Coping Strategies
11. 11@hostirosti @grpcio
HTTP Pipelining
Head of Line blocking
Domain Sharding
Over sharding can kill performance
Concatenation and Spriting
Increased complexity, can hurt cache
performance and page load
Resource Inlining
Can hurt cache performance, hard to get
granularity right
img1.example.com
img2.example.com
img3.example.com
...
Copying Strategies - The downsides
12. 12
● Improve end-user perceived latency
● Address the "head of line blocking"
● Not require multiple connections
● Retain the semantics of HTTP/1.1
Ilya Grigorik - hpbn.co/http2 - High Performance Browser Networking
"HTTP/2 is a protocol designed for low-
latency transport of content
over the World Wide Web"
13. 13@hostirosti @grpcio
One TCP connection
Request → Stream
Streams are multiplexed
Streams are prioritized
Binary framing layer
Prioritization
Flow control
Server push
Header compression
HTTP/2 in one slide ...
14. 14
“... we’re not replacing all of HTTP — the
methods, status codes, and most of the
headers you use today will be the same.
Instead, we’re redefining how it gets used
“on the wire” so it’s more efficient, and so
that it is more gentle to the Internet itself ....”
- Mark Nottingham (HTTPbis chair)
15. 15@hostirosti @grpcio
Sits between Socket interface and the API
HTTP messages are decomposed into one or
more frames
HEADERS for meta-data
DATA for payload
RST_STREAM to cancel
…
Each frame has a common header
9-byte, length prefixed
Easy and efficient to parse
HTTP/2 binary framing 101
17. 17@hostirosti @grpcio
Streams are multiplexed, because frames can
be interleaved
All frames (e.g. HEADERS, DATA, etc) are sent
over single TCP connection
Frame delivery is prioritized based on stream
dependencies and weights
DATA frames are subject to per-stream and
connection flow control
Basic data flow in HTTP 2.0...
18. 18@hostirosti @grpcio
Each stream can have a weight
[1-256] integer value
Each stream can have a dependency
parent is another stream ID
1. E.g.. style.css (“A”) should get 2/3rd’s of available resources as compared to logo.jpg (“B”)
2. E.g.. product-photo-1.jpg (“D”) should be delivered before product-photo-2.jpg (“C”)
NOTE: Prioritization is an advisory optimization hint to the server
Stream prioritization in HTTP/2...
19. 19@hostirosti @grpcio
HTTP/2 server: “You asked for /product/123,
I know you’ll also need app.js and product-
photo-1.jpg, so… I promise to deliver these to
you, no need to ask for them. That is, unless
you decline or cancel.”
GET /product/123
/product/123
/app.js
/product-photo-1.jpg
● Server push is optional and can be disabled by the client
● Server push is subject to flow control - e.g. “you can only push 5Kb”
● Pushed resources can be cached and prioritized individually
Server push, “because you’ll also need…”
20. 20@hostirosti @grpcio
HTTP/2 client: “I want photo.jpg, please send
the first 20KB.”
HTTP/2 server: “Ok, 20KB… pausing stream
until you tell me to send more.”
HTTP/2 client: “Send me the rest now.”
GET /product-photo.jpg
/product-photo.jpg
/product-photo.jpg
WINDOW_UPDATE
● Flow control allows the client to pause stream delivery, and resume it later
● Flow control is a “credit-based” scheme
○ Sending DATA frames decrements the window
○ WINDOW_UPDATE frames update the window
Per-stream flow control
21. 21@hostirosti @grpcio
● Literal values are (optionally) encoded with a static Huffman code
● Previously sent values are (optionally) indexed
○ e.g. “2” in above example expands to “method: GET”
HPACK header compression
23. 23@hostirosti @grpcio
Structured representation of data
Google's lingua franca for data
48k+ Message Types
12k+ Proto files
Evolutionary Development
Incrementally solved problems, Now used for:
RPC Systems
Persistent Data Storage
What are Protocol Buffers?
24. 24@hostirosti @grpcio
Protocol buffers:
Efficient and compact binary data representation
Clear compatibility rules; can easily be extended over time
Generates idiomatic, easy to use classes for many languages
Strongly typed; less error prone
Why Protocol Buffers?
25. 25@hostirosti @grpcio
Protocol Buffers also are:
No use as a markup language
Not human readable (native format)
Only meaningful if you have the message definition
Why not?
26. 26@hostirosti @grpcio
Uniquely numbered fields
Typed
Hierarchical Structure
Optional and Repeated fields
Extensible without breaking backward compatibility
message Person {
required string name = 1;
required int32 id = 2;
optional string email = 3;
enum PhoneType {
MOBILE = 0;
HOME = 1;
WORK = 2;
}
message PhoneNumber {
required string number = 1;
optional PhoneType type = 2 [default = HOME];
}
repeated PhoneNumber phone = 4;
}
Message Format (proto2)
27. 27@hostirosti @grpcio
Protocol Buffers language version 3
Specified by syntax = “proto3”;
All fields are optional in proto3
No user specified default values
No groups (FYI for those that use them)
syntax = “proto3”;
message Person {
string name = 1;
int32 id = 2;
string email = 3;
enum PhoneType {
MOBILE = 0;
HOME = 1;
WORK = 2;
}
message PhoneNumber {
string number = 1;
PhoneType type = 2;
}
repeated PhoneNumber phone = 4;
}
Message Format (proto3)
28. 28@hostirosti @grpcio
Add new fields without breaking backwards-
compatibility
old implementations ignore the new fields
when parsing
In proto3 any field can be removed, but don’t
renumber existing fields
syntax = “proto3”;
message Person {
string name = 1;
int32 id = 2;
string email = 3;
address addr = 5;
message address {
string firstLine = 1;
string secondLine = 2;
string postalCode = 3;
string country = 4;
}
...
}
Extensible
31. 31@hostirosti @grpcio
gRPC goals
Build an open source, standards-based, best-of-breed, feature-rich RPC system
Enable developers to build
microservice-based
applications
Build an open source, standards-based, best-of-breed, feature-rich RPC system
Create easy-to-use, efficient
and idiomatic libraries
micro-servicesperformant and scalableefficient and idiomatic
Provide a performant and
scalable RPC framework
32. 32@hostirosti @grpcio
IDL to describe the API
Automatically generated servers and clients in 10+
languages
Takes advantage of feature set of HTTP/2
Lightweight open connections
Point to point
Streaming! Bidirectional streaming!
gRPC in a nutshell
34. 34@hostirosti @grpcio
Define a service in a .proto file using Protocol
Buffers IDL
Generate server and client code using the
protocol buffer compiler with grpc plugin
Use the gRPC API to write a simple client and
server for your service in the languages of your
choice
Getting Started
38. 38@hostirosti @grpcio
service RouteGuide {
rpc ListFeatures (Rectangle) returns (stream Features);
...
}
message Rectangle {
Point lo = 1;
Point hi = 2;
}
Server Streaming RPC Definition
41. 41@hostirosti @grpcio
Implementations
● C core
○ Native bindings in C++, Node.js, Python, Ruby, ObjC, PHP, C#
● Java using Netty or OkHttp (+ inProcess for testing)
● Go
gRPC Language Support
42. 42@hostirosti @grpcio
SSL/TLS
gRPC has SSL/TLS integration and promotes the use of SSL/TLS to authenticate the server, and encrypt
all the data exchanged between the client and the server. Optional mechanisms are available for clients
to provide certificates to accomplish mutual authentication.
OAuth 2.0
gRPC provides a generic mechanism to attach metadata to requests and responses. Can be used to
attach OAuth 2.0 Access Tokens to RPCs being made at a client.
Authentication
43. 43@hostirosti @grpcio
Multi-language
Freedom to pick the language independently for each micro-service, based
on performance, library availability, team expertise etc
Loosely coupled development
Blocks of functionality can be broken off into separate MicroService. Allows
organic growth
High Performance
Make use of the strengths of HTTP/2 and Protocol Buffers
MicroServices using gRPC
44. 44@hostirosti @grpcio
C++ Service
gRPC server
Golang Service
gRPC server
gRPC
Stub
Java Service
gRPC
Stub
Python Service
gRPC server
gRPC
Stub
Polyglot Microservices Architecture
47. 47@hostirosti @grpcio
Photo-sharing App
Mobile Clients communicate with gRPC endpoint
Clients for iOS and Android
https://cloud.google.com/solutions/mobile/image-management-mobile-apps-grpc
Abelana Mobile Sample App
50. 50@hostirosti @grpcio
grpc is Open Source
We want your help!
http://grpc.io/contribute
https://github.com/grpc
irc.freenode.net #grpc
@grpcio
grpc-io@googlegroups.com