SlideShare a Scribd company logo
eleks.comeleks.com
Google RPC.
Ще раз про концепцію RPC
• RPC – Remote Procedure Call
• Ідея полягає в передачі керування і даних з
однієї програми в іншу, яка може(і
здебільшого) знаходитись на іншому
фізичному компютері через мережу.
Які технології з забезпеченням RPC
є на даний момент ?
Ось тільки вершина айсберга: (з Вікі)
• Sun RPC (бінарний протокол на базі TCP та UDP)
• Net Remoting (бінарний протокол на базі TCP, UDP, HTTP)
• XML-RPC (текстовий протокол на базі HTTP)
• SOAP — Simple Object Access Protocol (текстовий протокол на
базі HTTP)
• Java RMI — Java Remote Method Invocation
• JSON-RPC JavaScript Object Remote Procedure Calls
(текстовий, на базі HTTP)
Нічого не нагадує? 
В чому недоліки існуючих
стандартів?
• Близько ¾ клієнт-серверних стандартів базуються на REST +
HTTP/1.1.
• Основний їх недолік
– неефективність протоколу HTTP/1.1
– нестиснені заголовки, відсутність повноцінного двостороннього
звязку, неефективний підхід до викоричтання ресурсів ОС
– Надлишковий трафік, затримки.
– Необхідність «натягувати» свою модель даних на REST, що
часто є надлишковим
And Here’s Johnny ! (gRPC)
Protobuf
• Protobuf – це гнучкий, ефективний автоматизований механізм для
серіалізації структурованих даних. (Уявіть собі ХМЛ, але менший,
швидший і простіший)
• Ви визначаєте, як хочете, щоб ваші дані були структуровані один
раз, а потім можете використовувати згенерований код для легкого
зчитування/запису даних, з використанням різних мов
• На даний момент останя версія Protobuf - proto3, в якій є спрощений
синтаксис, деякі корисні нові функції, підтримує багато мов
• Google каже, що protobuf до 10 разів ефективніший, ніж XML-based
протоколи, not bad, а? :))
• Детально про protobuf можна дізнатися тут.
Як працює Protobuf
• Програміст визначає, як він хоче серіалізувати інформацію за
допомогою визначення цього в .proto файлі
• Кожне повідомлення в protocol buffer є логічним записом, який
містить серію пар «ключ-значення»
• Детальний опис синтаксису protobuf – тут
• Після визначення повідомлень, потрібно викликати компілятор
protobuf для .proto файла, який згенерує код на відповідній мові (C#,
C++, Java напр.)
• (!) Можна додавати до повідомлень нові поля без втрати сумісності з
попередніми версіями
І ще раз: XML vs Protobuf
• Простіші (ага )
• Від 3 до 10 разів менший обєм
• Від 20 до 100 разів швидші
• Є менш неоднозначні (мається на увазі чітке визначення типів в
protobuf)
• Згенеровані класи легше використовувати програмно
Приклад
Визначення інтерфейсу сервіса
Що під капотом?
HTTP/2
• HTTP/2 – лежить в основі транспортування даних gRPC.
• Збільшення ефективності використання мережевих ресурсів за
рахунок використання пріоритетів запитів, стиснення заголовків
HTTP та ін.
• Серйозне збільшення продуктивності для сучасних браузерів і
мобільних пристроїв.
• Забезпечення сучасних вимог до безпеки
Конкуренти!
• Так, вони є.
• Головний конкурент – це Apach Thrift
Порівняння:
Корисні посилання:
• Офіційний github gRPC:
https://github.com/grpc/grpc
• Документація, інструкції, туторіали, ВСЕ 
http://www.grpc.io/docs/

More Related Content

PPTX
Web service lecture
PPTX
PPTX
PPTX
11 web services
PPTX
Windows service
PPTX
10 asp.net
PPTX
Version control
PPTX
.NET Platform. C# Basics
Web service lecture
11 web services
Windows service
10 asp.net
Version control
.NET Platform. C# Basics

What's hot (20)

PPTX
Aspnet core
PPTX
07 Database Access
PPTX
Advanced c sharp part 3
PPTX
System programing module 1
PPTX
System programing module 2
PPTX
NoSQL basics
PDF
iPhone Objective-C Development (ukr) (2009)
PPTX
System programing module 3
PDF
"Request Lifecycle at Prom.ua", Vitaliy Kharytonskiy
PPTX
Angular. presentation
PPTX
Advanced styles
PPTX
Wcf module 3.3
PPTX
Data Structures
PPTX
Wcf module 2
PPTX
Wcf module 3.1
PPTX
12 Architecture
PPTX
'GOLANG USAGE IN DEVELOPMENT OF NODE.JS APPLICATIONS (NODE.JS: IN GO WE TRUST...
PDF
Xdebug (ukr)
PPTX
Wcf module 1
PPTX
08 Exceptions and AOP
Aspnet core
07 Database Access
Advanced c sharp part 3
System programing module 1
System programing module 2
NoSQL basics
iPhone Objective-C Development (ukr) (2009)
System programing module 3
"Request Lifecycle at Prom.ua", Vitaliy Kharytonskiy
Angular. presentation
Advanced styles
Wcf module 3.3
Data Structures
Wcf module 2
Wcf module 3.1
12 Architecture
'GOLANG USAGE IN DEVELOPMENT OF NODE.JS APPLICATIONS (NODE.JS: IN GO WE TRUST...
Xdebug (ukr)
Wcf module 1
08 Exceptions and AOP
Ad

Viewers also liked (20)

PPTX
G rpc lection1
PPTX
SDLC. PM Role
PPTX
Improving rpc bkp
PPTX
Frontend basics
PPTX
SDLC. QA Role
PPTX
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...
PPTX
SDLC. BA Role
PPTX
SDLC. UX Role
PPTX
Css animation, html5 api
PPTX
SQL: Indexes, Select operator
PPTX
tsql
PPTX
Sql 04n edited
PPTX
SQL Grouping, Joins
PPTX
Communication in android
PPTX
Lecture android best practices
PPTX
Hello android world
PPTX
sql introduction
PPTX
Android location and sensors API
PPTX
Lecture java basics
PPTX
#4 code quality
G rpc lection1
SDLC. PM Role
Improving rpc bkp
Frontend basics
SDLC. QA Role
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...
SDLC. BA Role
SDLC. UX Role
Css animation, html5 api
SQL: Indexes, Select operator
tsql
Sql 04n edited
SQL Grouping, Joins
Communication in android
Lecture android best practices
Hello android world
sql introduction
Android location and sensors API
Lecture java basics
#4 code quality
Ad

Similar to G rpc lection1_theory_bkp2 (20)

PDF
Alexey Borisenko - Network Programmability using Python
PPTX
"How we optimized our product without paid solutions", Dmytro Nemesh
PDF
"gRPC-based microservice communication: pros and cons based on our experience...
PDF
"Laravel Tips & Tricks - 7 Steps to Dramatically Improve Performance", Yehor ...
PDF
"Key considerations in implementing a distributed message-sending system usin...
PPT
Lec16 промiжне програмне забезпечення
PDF
"Simplifying the Complex: Effective Management of Large-Scale PHP Projects", ...
PPT
служби інтернету
PPTX
автоматизоване створення й публікація веб ресурсів
PDF
Програмовані логічні контролери стандарту МЕК 61131
PPTX
інтернет 15
PPT
Lec13 14 багатопоточнiсть
PDF
JSLab. Роман Якобчук. "Flux в стиле FRP: связываем React и Bacon"
PPT
Лекція №16
PPTX
СВЯТ ЛОГІН «Що можна витягнути з мобільних додатків»
PPT
Лекція №3
PPTX
Oleksandr Brychuk "UniSender architecture. Growth from 100kk to 1.5kkk letter...
PDF
Лабораторно-Практична робота
PPTX
Savitskyi Roman - Chrome Dev Tools. New & Tips
Alexey Borisenko - Network Programmability using Python
"How we optimized our product without paid solutions", Dmytro Nemesh
"gRPC-based microservice communication: pros and cons based on our experience...
"Laravel Tips & Tricks - 7 Steps to Dramatically Improve Performance", Yehor ...
"Key considerations in implementing a distributed message-sending system usin...
Lec16 промiжне програмне забезпечення
"Simplifying the Complex: Effective Management of Large-Scale PHP Projects", ...
служби інтернету
автоматизоване створення й публікація веб ресурсів
Програмовані логічні контролери стандарту МЕК 61131
інтернет 15
Lec13 14 багатопоточнiсть
JSLab. Роман Якобчук. "Flux в стиле FRP: связываем React и Bacon"
Лекція №16
СВЯТ ЛОГІН «Що можна витягнути з мобільних додатків»
Лекція №3
Oleksandr Brychuk "UniSender architecture. Growth from 100kk to 1.5kkk letter...
Лабораторно-Практична робота
Savitskyi Roman - Chrome Dev Tools. New & Tips

G rpc lection1_theory_bkp2

  • 2. Ще раз про концепцію RPC • RPC – Remote Procedure Call • Ідея полягає в передачі керування і даних з однієї програми в іншу, яка може(і здебільшого) знаходитись на іншому фізичному компютері через мережу.
  • 3. Які технології з забезпеченням RPC є на даний момент ? Ось тільки вершина айсберга: (з Вікі) • Sun RPC (бінарний протокол на базі TCP та UDP) • Net Remoting (бінарний протокол на базі TCP, UDP, HTTP) • XML-RPC (текстовий протокол на базі HTTP) • SOAP — Simple Object Access Protocol (текстовий протокол на базі HTTP) • Java RMI — Java Remote Method Invocation • JSON-RPC JavaScript Object Remote Procedure Calls (текстовий, на базі HTTP)
  • 5. В чому недоліки існуючих стандартів? • Близько ¾ клієнт-серверних стандартів базуються на REST + HTTP/1.1. • Основний їх недолік – неефективність протоколу HTTP/1.1 – нестиснені заголовки, відсутність повноцінного двостороннього звязку, неефективний підхід до викоричтання ресурсів ОС – Надлишковий трафік, затримки. – Необхідність «натягувати» свою модель даних на REST, що часто є надлишковим
  • 7. Protobuf • Protobuf – це гнучкий, ефективний автоматизований механізм для серіалізації структурованих даних. (Уявіть собі ХМЛ, але менший, швидший і простіший) • Ви визначаєте, як хочете, щоб ваші дані були структуровані один раз, а потім можете використовувати згенерований код для легкого зчитування/запису даних, з використанням різних мов • На даний момент останя версія Protobuf - proto3, в якій є спрощений синтаксис, деякі корисні нові функції, підтримує багато мов • Google каже, що protobuf до 10 разів ефективніший, ніж XML-based протоколи, not bad, а? :)) • Детально про protobuf можна дізнатися тут.
  • 8. Як працює Protobuf • Програміст визначає, як він хоче серіалізувати інформацію за допомогою визначення цього в .proto файлі • Кожне повідомлення в protocol buffer є логічним записом, який містить серію пар «ключ-значення» • Детальний опис синтаксису protobuf – тут • Після визначення повідомлень, потрібно викликати компілятор protobuf для .proto файла, який згенерує код на відповідній мові (C#, C++, Java напр.) • (!) Можна додавати до повідомлень нові поля без втрати сумісності з попередніми версіями
  • 9. І ще раз: XML vs Protobuf • Простіші (ага ) • Від 3 до 10 разів менший обєм • Від 20 до 100 разів швидші • Є менш неоднозначні (мається на увазі чітке визначення типів в protobuf) • Згенеровані класи легше використовувати програмно
  • 13. HTTP/2 • HTTP/2 – лежить в основі транспортування даних gRPC. • Збільшення ефективності використання мережевих ресурсів за рахунок використання пріоритетів запитів, стиснення заголовків HTTP та ін. • Серйозне збільшення продуктивності для сучасних браузерів і мобільних пристроїв. • Забезпечення сучасних вимог до безпеки
  • 14. Конкуренти! • Так, вони є. • Головний конкурент – це Apach Thrift
  • 16. Корисні посилання: • Офіційний github gRPC: https://github.com/grpc/grpc • Документація, інструкції, туторіали, ВСЕ  http://www.grpc.io/docs/