SlideShare a Scribd company logo
1 of 16
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

What's hot

07 Database Access
07 Database Access07 Database Access
07 Database Access
eleksdev
 
12 Architecture
12 Architecture12 Architecture
12 Architecture
eleksdev
 
'GOLANG USAGE IN DEVELOPMENT OF NODE.JS APPLICATIONS (NODE.JS: IN GO WE TRUST...
'GOLANG USAGE IN DEVELOPMENT OF NODE.JS APPLICATIONS (NODE.JS: IN GO WE TRUST...'GOLANG USAGE IN DEVELOPMENT OF NODE.JS APPLICATIONS (NODE.JS: IN GO WE TRUST...
'GOLANG USAGE IN DEVELOPMENT OF NODE.JS APPLICATIONS (NODE.JS: IN GO WE TRUST...
OdessaJS Conf
 
08 Exceptions and AOP
08  Exceptions and AOP08  Exceptions and AOP
08 Exceptions and AOP
eleksdev
 

What's hot (20)

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

Viewers also liked (20)

G rpc lection1
G rpc lection1G rpc lection1
G rpc lection1
 
SDLC. PM Role
SDLC. PM RoleSDLC. PM Role
SDLC. PM Role
 
Improving rpc bkp
Improving rpc bkpImproving rpc bkp
Improving rpc bkp
 
Frontend basics
Frontend basicsFrontend basics
Frontend basics
 
SDLC. QA Role
SDLC. QA RoleSDLC. QA Role
SDLC. QA Role
 
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...
Continuous Delivery concept overview. Continuous Integration Systems. DevOps ...
 
SDLC. BA Role
SDLC. BA RoleSDLC. BA Role
SDLC. BA Role
 
SDLC. UX Role
SDLC. UX RoleSDLC. UX Role
SDLC. UX Role
 
Css animation, html5 api
Css animation, html5 apiCss animation, html5 api
Css animation, html5 api
 
SQL: Indexes, Select operator
SQL: Indexes, Select operatorSQL: Indexes, Select operator
SQL: Indexes, Select operator
 
tsql
tsqltsql
tsql
 
Sql 04n edited
Sql 04n editedSql 04n edited
Sql 04n edited
 
SQL Grouping, Joins
SQL Grouping, JoinsSQL Grouping, Joins
SQL Grouping, Joins
 
Communication in android
Communication in androidCommunication in android
Communication in android
 
Lecture android best practices
Lecture   android best practicesLecture   android best practices
Lecture android best practices
 
Hello android world
Hello android worldHello android world
Hello android world
 
sql introduction
sql introductionsql introduction
sql introduction
 
Android location and sensors API
Android location and sensors APIAndroid location and sensors API
Android location and sensors API
 
Lecture java basics
Lecture   java basicsLecture   java basics
Lecture java basics
 
#4 code quality
#4 code quality#4 code quality
#4 code quality
 

Similar to G rpc lection1_theory_bkp2

Alexey Borisenko - Network Programmability using Python
Alexey Borisenko - Network Programmability using PythonAlexey Borisenko - Network Programmability using Python
Alexey Borisenko - Network Programmability using Python
PyCon Odessa
 
Lec16 промiжне програмне забезпечення
Lec16 промiжне програмне забезпеченняLec16 промiжне програмне забезпечення
Lec16 промiжне програмне забезпечення
cit-cit
 
автоматизоване створення й публікація веб ресурсів
автоматизоване створення й публікація веб ресурсівавтоматизоване створення й публікація веб ресурсів
автоматизоване створення й публікація веб ресурсів
kissoli
 
Lec13 14 багатопоточнiсть
Lec13 14 багатопоточнiстьLec13 14 багатопоточнiсть
Lec13 14 багатопоточнiсть
cit-cit
 
Savitskyi Roman - Chrome Dev Tools. New & Tips
Savitskyi Roman - Chrome Dev Tools. New & TipsSavitskyi Roman - Chrome Dev Tools. New & Tips
Savitskyi Roman - Chrome Dev Tools. New & Tips
OdessaJS Conf
 
таблиця
таблицятаблиця
таблиця
chepesyuk
 

Similar to G rpc lection1_theory_bkp2 (20)

Alexey Borisenko - Network Programmability using Python
Alexey Borisenko - Network Programmability using PythonAlexey Borisenko - Network Programmability using Python
Alexey Borisenko - Network Programmability using Python
 
"Laravel Tips & Tricks - 7 Steps to Dramatically Improve Performance", Yehor ...
"Laravel Tips & Tricks - 7 Steps to Dramatically Improve Performance", Yehor ..."Laravel Tips & Tricks - 7 Steps to Dramatically Improve Performance", Yehor ...
"Laravel Tips & Tricks - 7 Steps to Dramatically Improve Performance", Yehor ...
 
"Key considerations in implementing a distributed message-sending system usin...
"Key considerations in implementing a distributed message-sending system usin..."Key considerations in implementing a distributed message-sending system usin...
"Key considerations in implementing a distributed message-sending system usin...
 
Lec16 промiжне програмне забезпечення
Lec16 промiжне програмне забезпеченняLec16 промiжне програмне забезпечення
Lec16 промiжне програмне забезпечення
 
"Simplifying the Complex: Effective Management of Large-Scale PHP Projects", ...
"Simplifying the Complex: Effective Management of Large-Scale PHP Projects", ..."Simplifying the Complex: Effective Management of Large-Scale PHP Projects", ...
"Simplifying the Complex: Effective Management of Large-Scale PHP Projects", ...
 
служби інтернету
служби інтернетуслужби інтернету
служби інтернету
 
автоматизоване створення й публікація веб ресурсів
автоматизоване створення й публікація веб ресурсівавтоматизоване створення й публікація веб ресурсів
автоматизоване створення й публікація веб ресурсів
 
Програмовані логічні контролери стандарту МЕК 61131
Програмовані логічні контролери стандарту МЕК 61131Програмовані логічні контролери стандарту МЕК 61131
Програмовані логічні контролери стандарту МЕК 61131
 
інтернет 15
інтернет 15інтернет 15
інтернет 15
 
Lec13 14 багатопоточнiсть
Lec13 14 багатопоточнiстьLec13 14 багатопоточнiсть
Lec13 14 багатопоточнiсть
 
JSLab. Роман Якобчук. "Flux в стиле FRP: связываем React и Bacon"
JSLab. Роман Якобчук. "Flux в стиле FRP: связываем React и Bacon"JSLab. Роман Якобчук. "Flux в стиле FRP: связываем React и Bacon"
JSLab. Роман Якобчук. "Flux в стиле FRP: связываем React и Bacon"
 
Лекція №16
Лекція №16Лекція №16
Лекція №16
 
Лекція №3
Лекція №3Лекція №3
Лекція №3
 
Oleksandr Brychuk "UniSender architecture. Growth from 100kk to 1.5kkk letter...
Oleksandr Brychuk "UniSender architecture. Growth from 100kk to 1.5kkk letter...Oleksandr Brychuk "UniSender architecture. Growth from 100kk to 1.5kkk letter...
Oleksandr Brychuk "UniSender architecture. Growth from 100kk to 1.5kkk letter...
 
The Revenant: Legend of ProZorro
The Revenant: Legend of ProZorroThe Revenant: Legend of ProZorro
The Revenant: Legend of ProZorro
 
Лабораторно-Практична робота
Лабораторно-Практична роботаЛабораторно-Практична робота
Лабораторно-Практична робота
 
Savitskyi Roman - Chrome Dev Tools. New & Tips
Savitskyi Roman - Chrome Dev Tools. New & TipsSavitskyi Roman - Chrome Dev Tools. New & Tips
Savitskyi Roman - Chrome Dev Tools. New & Tips
 
таблиця
таблицятаблиця
таблиця
 
Computers and Computing Works lecture №7
Computers and Computing Works lecture №7Computers and Computing Works lecture №7
Computers and Computing Works lecture №7
 
урок № 32. підсумкови й узагальнюючий урок комп'ютерні мережі
урок № 32. підсумкови й узагальнюючий урок комп'ютерні мережіурок № 32. підсумкови й узагальнюючий урок комп'ютерні мережі
урок № 32. підсумкови й узагальнюючий урок комп'ютерні мережі
 

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/