introducción a protocol buffers

Post on 15-Apr-2017

13 Views

Category:

Software

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

PROTOCOL BUFFERSENRIQUE 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 ServidorPetició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

top related