introducción a protocol buffers
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