SlideShare una empresa de Scribd logo
1 de 24
PROTOCOL BUFFERS
ENRIQUE ZAMUDIO
@CHOCHOSMX
AL PRINCIPIO...
TODO ERA BINARIO
PROTOCOLOS BINARIOS
• Multitud de protocolos
• RPC
• COM, DCOM, CORBA, DDE, RMI
• Problemas de Codificación
• Incompatibilidad entre plataformas
HASTA QUE UN BUEN DÍA...
SOAP-RPC, PARA SER MÁS
PRECISOS.
<?xml version="1.0" ?>
<S:Envelope
xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<Request>
<id>1234</id>
<user>username</user>
<password>password</password>
<product>product</product>
<amount>12.34</amount>
<account>12345678</account>
<date>2017-03-27T18:45:07.361-06:00</date>
</Request>
</S:Body></S:Envelope>
• 315 bytes en total, sin espacios
• 246 bytes de XML
• 69 bytes de datos
• 78% del mensaje es transporte
{
"id":1234,
"user":"username",
"password":"password",
"product":"product",
"amount":12.34,
"account":"12345678",
"date":1490112726145
}
• 128 bytes en total, sin espacios
• 75 bytes de JSON
• 53 bytes de datos
• 58% del mensaje es transporte
Cliente Servidor
Petición
Respuesta
HTTP es síncrono
PROTOCOL BUFFERS
• Formato binario diseñado por Google
• Compacto
• Rápida codificación y decodificación
• Multiplataforma
• Independiente del esquema de comunicación
• Tipado estático
PROTOCOL BUFFERS
• Lenguaje para definir mensajes
• Se compilan para la plataforma deseada
• Java, PHP, ObjC, C++, C#, JS, Ruby, Python
• Incluye codificadores y parser
message Peticion {
int32 id = 1;
string user = 2;
string password = 3;
string product = 4;
float amount = 5;
string account = 6;
int64 date = 7;
}
08 d2 09 12 08 75 73 65 72 6e 61 6d 65 1a 08 70
61 73 73 77 6f 72 64 22 07 70 72 6f 64 75 63 74
2d a4 70 45 41 32 08 31 32 33 34 35 36 37 38 38
de 8b cf c3 af 2b
|.....username..p|
|assword".product|
|-.pEA2.123456788|
|.....+|
• 54 bytes en total
• 45 bytes de datos
• 9 bytes de protobuf
• 17% del mensaje es transporte
• Clientes móviles pagan por datos
• Nube/datacenter cobra por ancho de banda
• Parsers usan CPU y RAM
• CPU y RAM tienen un costo en donde sea
• Miles de clientes simultáneos
LIVE DEMO!
¿?
github.com/chochos

Más contenido relacionado

Similar a Introducción a Protocol Buffers

Aplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con RedisAplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con RedisAlberto Gimeno
 
Escalabilidad y alto rendimiento con Symfony2
Escalabilidad y alto rendimiento con Symfony2Escalabilidad y alto rendimiento con Symfony2
Escalabilidad y alto rendimiento con Symfony2Ricard Clau
 
Html5 y otras yerbas
Html5 y otras yerbasHtml5 y otras yerbas
Html5 y otras yerbasPeter Concha
 
Html5 y otras yerbas
Html5 y otras yerbasHtml5 y otras yerbas
Html5 y otras yerbasAvanet
 
Redis, base de datos NoSQL clave-valor
Redis, base de datos NoSQL clave-valorRedis, base de datos NoSQL clave-valor
Redis, base de datos NoSQL clave-valorAlberto Gimeno
 
Carbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshareCarbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshareJulián Castiblanco
 
Mecanismos de autenticación-identificación. Vulneración y cracking de contras...
Mecanismos de autenticación-identificación. Vulneración y cracking de contras...Mecanismos de autenticación-identificación. Vulneración y cracking de contras...
Mecanismos de autenticación-identificación. Vulneración y cracking de contras...Alejandro Ramos
 
Azure Realtime analytics: Análisis de datos en tiempo real
Azure Realtime analytics: Análisis de datos en tiempo realAzure Realtime analytics: Análisis de datos en tiempo real
Azure Realtime analytics: Análisis de datos en tiempo realSoftware Guru
 
Gánale la partida a tu SQL Server, configuración ideal para que todo vaya bie...
Gánale la partida a tu SQL Server, configuración ideal para que todo vaya bie...Gánale la partida a tu SQL Server, configuración ideal para que todo vaya bie...
Gánale la partida a tu SQL Server, configuración ideal para que todo vaya bie...SolidQ
 
VI Foro Evidencias Electrónicas en la Investigación Policial. Análisis forens...
VI Foro Evidencias Electrónicas en la Investigación Policial. Análisis forens...VI Foro Evidencias Electrónicas en la Investigación Policial. Análisis forens...
VI Foro Evidencias Electrónicas en la Investigación Policial. Análisis forens...Internet Security Auditors
 
12-Unidad 3: Webservices-3.3 Inicio del Proyecto
12-Unidad 3: Webservices-3.3 Inicio del Proyecto12-Unidad 3: Webservices-3.3 Inicio del Proyecto
12-Unidad 3: Webservices-3.3 Inicio del ProyectoLuis Fernando Aguas Bucheli
 
Final proyecto acme
Final proyecto acmeFinal proyecto acme
Final proyecto acmemojogarco
 

Similar a Introducción a Protocol Buffers (20)

Aplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con RedisAplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con Redis
 
Escalabilidad y alto rendimiento con Symfony2
Escalabilidad y alto rendimiento con Symfony2Escalabilidad y alto rendimiento con Symfony2
Escalabilidad y alto rendimiento con Symfony2
 
Web20
Web20Web20
Web20
 
Evolución de Protocolos de Internet 2017
Evolución de Protocolos de Internet 2017Evolución de Protocolos de Internet 2017
Evolución de Protocolos de Internet 2017
 
Introducción a SignalR
Introducción a SignalRIntroducción a SignalR
Introducción a SignalR
 
Html5 y otras yerbas
Html5 y otras yerbasHtml5 y otras yerbas
Html5 y otras yerbas
 
Html5 y otras yerbas
Html5 y otras yerbasHtml5 y otras yerbas
Html5 y otras yerbas
 
Redis, base de datos NoSQL clave-valor
Redis, base de datos NoSQL clave-valorRedis, base de datos NoSQL clave-valor
Redis, base de datos NoSQL clave-valor
 
Carbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshareCarbura tusql sesion1_slideshare
Carbura tusql sesion1_slideshare
 
Full-stack JavaScript: Desarrollo integral de aplicaciones Web con JavaScript
Full-stack JavaScript: Desarrollo integral de aplicaciones Web con JavaScriptFull-stack JavaScript: Desarrollo integral de aplicaciones Web con JavaScript
Full-stack JavaScript: Desarrollo integral de aplicaciones Web con JavaScript
 
Mecanismos de autenticación-identificación. Vulneración y cracking de contras...
Mecanismos de autenticación-identificación. Vulneración y cracking de contras...Mecanismos de autenticación-identificación. Vulneración y cracking de contras...
Mecanismos de autenticación-identificación. Vulneración y cracking de contras...
 
Azure Realtime analytics: Análisis de datos en tiempo real
Azure Realtime analytics: Análisis de datos en tiempo realAzure Realtime analytics: Análisis de datos en tiempo real
Azure Realtime analytics: Análisis de datos en tiempo real
 
Gánale la partida a tu SQL Server, configuración ideal para que todo vaya bie...
Gánale la partida a tu SQL Server, configuración ideal para que todo vaya bie...Gánale la partida a tu SQL Server, configuración ideal para que todo vaya bie...
Gánale la partida a tu SQL Server, configuración ideal para que todo vaya bie...
 
VI Foro Evidencias Electrónicas en la Investigación Policial. Análisis forens...
VI Foro Evidencias Electrónicas en la Investigación Policial. Análisis forens...VI Foro Evidencias Electrónicas en la Investigación Policial. Análisis forens...
VI Foro Evidencias Electrónicas en la Investigación Policial. Análisis forens...
 
12-Unidad 3: Webservices-3.3 Inicio del Proyecto
12-Unidad 3: Webservices-3.3 Inicio del Proyecto12-Unidad 3: Webservices-3.3 Inicio del Proyecto
12-Unidad 3: Webservices-3.3 Inicio del Proyecto
 
Final proyecto acme
Final proyecto acmeFinal proyecto acme
Final proyecto acme
 
Microservicios con .NET
Microservicios con .NETMicroservicios con .NET
Microservicios con .NET
 
ASP.NET MVC Workshop Día 3
ASP.NET MVC Workshop Día 3ASP.NET MVC Workshop Día 3
ASP.NET MVC Workshop Día 3
 
Social Erlang
Social ErlangSocial Erlang
Social Erlang
 
Las cronicas de redis
Las cronicas de redisLas cronicas de redis
Las cronicas de redis
 

Más de Enrique Zamudio López

Más de Enrique Zamudio López (8)

Bulletproofing your foot for Kotlin
Bulletproofing your foot for KotlinBulletproofing your foot for Kotlin
Bulletproofing your foot for Kotlin
 
Developing Android applications with Ceylon
Developing Android applications with Ceylon Developing Android applications with Ceylon
Developing Android applications with Ceylon
 
Sistemas de tipos: Lo bueno, lo malo y lo feo
Sistemas de tipos: Lo bueno, lo malo y lo feoSistemas de tipos: Lo bueno, lo malo y lo feo
Sistemas de tipos: Lo bueno, lo malo y lo feo
 
Criptografía para simples mortales
Criptografía para simples mortalesCriptografía para simples mortales
Criptografía para simples mortales
 
Diseño de compiladores: Un vistazo a Ceylon-JS
Diseño de compiladores: Un vistazo a Ceylon-JSDiseño de compiladores: Un vistazo a Ceylon-JS
Diseño de compiladores: Un vistazo a Ceylon-JS
 
Introducción a Ceylon
Introducción a CeylonIntroducción a Ceylon
Introducción a Ceylon
 
PCJ Sesión 9: Threads
PCJ Sesión 9: ThreadsPCJ Sesión 9: Threads
PCJ Sesión 9: Threads
 
Introducción a jAlarms
Introducción a jAlarmsIntroducción a jAlarms
Introducción a jAlarms
 

Introducción a Protocol Buffers