SlideShare una empresa de Scribd logo
Protocol Buffers Fantásticos
y donde encontrarlos
Katia Aresti, Infinispan Team, Red Hat
@karesti
Objetivo y reto de la próxima hora
Compartir el interés de utilizar Protocol Buffers en Java.
Mostrar ejemplos de proyectos que lo utilizan.
@karesti
@karesti
Serialization / Marshalling
_Heart_ Heart
@karesti
Serialization in Java - Desde 1997
public class PersonalShopper implements Serializable
{
private String id;
private String name;
private City city;
...
- ObjectInputStream
- ObjectOutputStream
@karesti
“The gift that keeps on giving”
"Ask The Architect" session from the
Devoxx UK 2018 conference,
Oracle's chief architect, Mark
Reinhold, shared his thoughts
about Java’s serialization
mechanism which he called a
“horrible mistake” and a
virtually endless source of security
vulnerabilities.
https://www.infoq.com/articles/java-serialization-aug18/
@karesti
Alternativas
- JSON
- XML
- Apache Thrift (Facebook)
- Apache Avro
- Microsoft Bond
- Protocol Buffers (Google)
@karesti
JSON
✅ HTTP/JSON es el estandard en la web, REST API standard
✅ Formato que podemos leer los seres humanos
✅ Javascript Nativo
❗Marshalling lento para formatos numéricos (problemas de latencia)
❗No es tan eficiente en la red (compresión de datos ayuda)
❗Sistema de tipos pobre
❗Java <-> Json Jackson, Gson
@karesti
@karesti
Protocol buffers - Protobuf
● Google (utilizado masivamente en interno)
● Formato Binario
● Open Source desde 2008
● Interoperabilidad entre muchos lenguajes languages: C++, C#, Java, Dart,
Python,Go
● Estructurado tipo XML, más ligero, compacto y rápido
● Mejor rendimiento que JSON
https://github.com/protocolbuffers/protobuf
@karesti
Paso 1: Define tu *.proto esquema
syntax = "proto2";
package mycompany;
message PersonalShopper {
optional string id = 1;
optional string name = 2;
optional string city = 3;
}
@karesti
Paso 2: Compila y genera el código
People.PersonalShopper shopper1 =
People.PersonalShopper.newBuilder()
.setId(UUID.randomUUID().toString())
.setCity("BILBAO")
.setName("Oihana").build();
…
shopper1.writeTo(output);
@karesti
Demo
Protoc
@karesti
Algunos lugares donde encontramos Protobuf
● gRPC
● Kafka
https://docs.confluent.io/platform/current/schema-registry/serdes-develop/serdes-protobuf.html
● Twitter
https://github.com/twitter/elephant-bird
● Infinispan
http://infinispan.org
@karesti
Algunos lugares donde encontramos Protobuf
● gRPC
● Kafka
https://docs.confluent.io/platform/current/schema-registry/serdes-develop/serdes-protobuf.html
● Twitter
https://github.com/twitter/elephant-bird
● Infinispan
http://infinispan.org
@karesti
Caso 1: gRPC
Remote Procedure Call (g-google)
https://grpc.io/docs/what-is-grpc/introduction/
gRPC Conf 2020
@karesti
gRPC + Quarkus https://quarkus.io/blog/quarkus-grpc/ by Clément Escoffier
@karesti
Demo
gRPC
@karesti
Caso 2: Infinispan (Datagrid )
● 100% Open-source, In-memory Distributed Data
Store*
○ ~ Redis, Apache Ignite, Hazelcast
● Cachés distribuidas con múltiples casos de uso
● Diseñado para soportar 50.000 peticiones en
paralelo
● High Availability/High Scalability
@karesti
Client/Server
Data
Data lives here
Defines encodings
Client APP
Connect a client
(Java, Node, C#...)
Use a marshaller
@karesti
Comparing Cache Encodings
Marshalled
Java
Text Protobuf
Infinispan Server Web Console ✅ + ❌ ✅ ✅
REST Client ✅ ✅ ✅
Java Hotrod* Client ✅ ✅ ✅
Other Hotrod Clients (C#, Node…) ❌ ✅ ✅
Search ✅ + ❌ ❌ ✅
Custom Java Objects - ❌ ✅
* Hot Rod is the Infinispan binary communication protocol implemented by Infinispan Server
@karesti
Protobuf Caches - Infinispan Protostream
@karesti
Demo
Spring-Boot
Infinispan Java Caches
Infinispan Protobuf Caches
@karesti
To go further
● Protobuf
https://developers.google.com/protocol-buffers
● gRPC
https://grpc.io/
● Infinispan Getting Started
https://infinispan.org/get-started/
● Demo with Spring-Boot
https://github.com/karesti/protobuf-marshalling-guide
@karesti
Conclusiones
Que la serialización de Java descanse en paz pronto.
Protobuf es una muy buena opción que merece la pena
utilizar en vuestros sistemas distribuidos.
@karesti
Alguna pregunta ... y gracias!

Más contenido relacionado

Similar a Protocol Buffer Fantásticos y donde encontrarlos

Un poco más allá con grails. PrimerViernes
Un poco más allá con grails. PrimerViernesUn poco más allá con grails. PrimerViernes
Un poco más allá con grails. PrimerViernesDani Latorre
 
Codemotion Madrid 2019 - ¡GraalVM y Micronaut: compañeros perfectos!
Codemotion Madrid 2019 - ¡GraalVM y Micronaut: compañeros perfectos!Codemotion Madrid 2019 - ¡GraalVM y Micronaut: compañeros perfectos!
Codemotion Madrid 2019 - ¡GraalVM y Micronaut: compañeros perfectos!Iván López Martín
 
Cloud para tu juego en una tarde
Cloud para tu juego en una tardeCloud para tu juego en una tarde
Cloud para tu juego en una tardeIgnacio Segura
 
Codemotion 2013 - Quiero tiempo real y lo quiero para ayer
Codemotion 2013 - Quiero tiempo real y lo quiero para ayerCodemotion 2013 - Quiero tiempo real y lo quiero para ayer
Codemotion 2013 - Quiero tiempo real y lo quiero para ayerIván López Martín
 
7 Recomendaciones para migrar tus aplicaciones a Jakarta EE utilizando Apache...
7 Recomendaciones para migrar tus aplicaciones a Jakarta EE utilizando Apache...7 Recomendaciones para migrar tus aplicaciones a Jakarta EE utilizando Apache...
7 Recomendaciones para migrar tus aplicaciones a Jakarta EE utilizando Apache...César Hernández
 
JSDays Desarrolla tu primera API
JSDays Desarrolla tu primera APIJSDays Desarrolla tu primera API
JSDays Desarrolla tu primera APICloudAppi
 
PHPAJAX
PHPAJAXPHPAJAX
PHPAJAXrodasc
 
Taller desarrollo de apis
Taller desarrollo de apisTaller desarrollo de apis
Taller desarrollo de apisCloudAppi
 
La Web como plataforma de referencia: viejos ataques y nuevas vulnerabilidades
La Web como plataforma de referencia: viejos ataques y nuevas vulnerabilidadesLa Web como plataforma de referencia: viejos ataques y nuevas vulnerabilidades
La Web como plataforma de referencia: viejos ataques y nuevas vulnerabilidadesNextel S.A.
 
La Web como plataforma de referencia: viejos ataques y nuevas vulnerabilidades
La Web como plataforma de referencia: viejos ataques y nuevas vulnerabilidadesLa Web como plataforma de referencia: viejos ataques y nuevas vulnerabilidades
La Web como plataforma de referencia: viejos ataques y nuevas vulnerabilidadesPablo Garaizar
 
Barcelona Workshop 2008
Barcelona Workshop 2008Barcelona Workshop 2008
Barcelona Workshop 2008Mitusin
 
Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007guestd24c393
 

Similar a Protocol Buffer Fantásticos y donde encontrarlos (20)

Arduino day
Arduino dayArduino day
Arduino day
 
Python & OSINT para proyectos de seguridad
Python & OSINT para proyectos de seguridadPython & OSINT para proyectos de seguridad
Python & OSINT para proyectos de seguridad
 
Un poco más allá con grails. PrimerViernes
Un poco más allá con grails. PrimerViernesUn poco más allá con grails. PrimerViernes
Un poco más allá con grails. PrimerViernes
 
Codemotion Madrid 2019 - ¡GraalVM y Micronaut: compañeros perfectos!
Codemotion Madrid 2019 - ¡GraalVM y Micronaut: compañeros perfectos!Codemotion Madrid 2019 - ¡GraalVM y Micronaut: compañeros perfectos!
Codemotion Madrid 2019 - ¡GraalVM y Micronaut: compañeros perfectos!
 
JRuby al Rescate de J2EE
JRuby al Rescate de J2EEJRuby al Rescate de J2EE
JRuby al Rescate de J2EE
 
Cloud para tu juego en una tarde
Cloud para tu juego en una tardeCloud para tu juego en una tarde
Cloud para tu juego en una tarde
 
S4-PD1.pptx
S4-PD1.pptxS4-PD1.pptx
S4-PD1.pptx
 
Codemotion 2013 - Quiero tiempo real y lo quiero para ayer
Codemotion 2013 - Quiero tiempo real y lo quiero para ayerCodemotion 2013 - Quiero tiempo real y lo quiero para ayer
Codemotion 2013 - Quiero tiempo real y lo quiero para ayer
 
[Run Reloaded] Estrategias de Caching Distribuído con Microsoft Velocity Proj...
[Run Reloaded] Estrategias de Caching Distribuído con Microsoft Velocity Proj...[Run Reloaded] Estrategias de Caching Distribuído con Microsoft Velocity Proj...
[Run Reloaded] Estrategias de Caching Distribuído con Microsoft Velocity Proj...
 
Arquitectura
Arquitectura Arquitectura
Arquitectura
 
7 Recomendaciones para migrar tus aplicaciones a Jakarta EE utilizando Apache...
7 Recomendaciones para migrar tus aplicaciones a Jakarta EE utilizando Apache...7 Recomendaciones para migrar tus aplicaciones a Jakarta EE utilizando Apache...
7 Recomendaciones para migrar tus aplicaciones a Jakarta EE utilizando Apache...
 
Python para desarrolladores web
Python para desarrolladores webPython para desarrolladores web
Python para desarrolladores web
 
introducción a flutter
introducción a flutterintroducción a flutter
introducción a flutter
 
JSDays Desarrolla tu primera API
JSDays Desarrolla tu primera APIJSDays Desarrolla tu primera API
JSDays Desarrolla tu primera API
 
PHPAJAX
PHPAJAXPHPAJAX
PHPAJAX
 
Taller desarrollo de apis
Taller desarrollo de apisTaller desarrollo de apis
Taller desarrollo de apis
 
La Web como plataforma de referencia: viejos ataques y nuevas vulnerabilidades
La Web como plataforma de referencia: viejos ataques y nuevas vulnerabilidadesLa Web como plataforma de referencia: viejos ataques y nuevas vulnerabilidades
La Web como plataforma de referencia: viejos ataques y nuevas vulnerabilidades
 
La Web como plataforma de referencia: viejos ataques y nuevas vulnerabilidades
La Web como plataforma de referencia: viejos ataques y nuevas vulnerabilidadesLa Web como plataforma de referencia: viejos ataques y nuevas vulnerabilidades
La Web como plataforma de referencia: viejos ataques y nuevas vulnerabilidades
 
Barcelona Workshop 2008
Barcelona Workshop 2008Barcelona Workshop 2008
Barcelona Workshop 2008
 
Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007
 

Más de Katia Aresti

Quand un lock a besoin d'être distribué
Quand un lock a besoin d'être distribuéQuand un lock a besoin d'être distribué
Quand un lock a besoin d'être distribuéKatia Aresti
 
How and why we evolved a legacy Java web application to Scala... and we are s...
How and why we evolved a legacy Java web application to Scala... and we are s...How and why we evolved a legacy Java web application to Scala... and we are s...
How and why we evolved a legacy Java web application to Scala... and we are s...Katia Aresti
 
Trivial Java Second
Trivial Java SecondTrivial Java Second
Trivial Java SecondKatia Aresti
 
Trivial Java Second
Trivial Java SecondTrivial Java Second
Trivial Java SecondKatia Aresti
 
Trivial java First
Trivial java FirstTrivial java First
Trivial java FirstKatia Aresti
 
Mongo db et java en pratique
Mongo db et java en pratiqueMongo db et java en pratique
Mongo db et java en pratiqueKatia Aresti
 

Más de Katia Aresti (8)

Quand un lock a besoin d'être distribué
Quand un lock a besoin d'être distribuéQuand un lock a besoin d'être distribué
Quand un lock a besoin d'être distribué
 
How and why we evolved a legacy Java web application to Scala... and we are s...
How and why we evolved a legacy Java web application to Scala... and we are s...How and why we evolved a legacy Java web application to Scala... and we are s...
How and why we evolved a legacy Java web application to Scala... and we are s...
 
Mongo db devfestw
Mongo db devfestwMongo db devfestw
Mongo db devfestw
 
Jongo mongo sv
Jongo mongo svJongo mongo sv
Jongo mongo sv
 
Trivial Java Second
Trivial Java SecondTrivial Java Second
Trivial Java Second
 
Trivial Java Second
Trivial Java SecondTrivial Java Second
Trivial Java Second
 
Trivial java First
Trivial java FirstTrivial java First
Trivial java First
 
Mongo db et java en pratique
Mongo db et java en pratiqueMongo db et java en pratique
Mongo db et java en pratique
 

Último

Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfjjfch3110
 
¡Mira mi nuevo diseño hecho en Canva!.pdf
¡Mira mi nuevo diseño hecho en Canva!.pdf¡Mira mi nuevo diseño hecho en Canva!.pdf
¡Mira mi nuevo diseño hecho en Canva!.pdf7adelosriosarangojua
 
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...Luis Fernando Uribe Villamil
 
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docxwerito139410
 
Diagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiegoCampos433849
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxLeidyfuentes19
 
Herramientas informáticas. Sara Torres R.
Herramientas informáticas. Sara Torres R.Herramientas informáticas. Sara Torres R.
Herramientas informáticas. Sara Torres R.saravalentinat22
 
HIGADO Y TRAUMA HEPATICO UDABOL 2024 (3).pdf
HIGADO  Y TRAUMA HEPATICO UDABOL 2024 (3).pdfHIGADO  Y TRAUMA HEPATICO UDABOL 2024 (3).pdf
HIGADO Y TRAUMA HEPATICO UDABOL 2024 (3).pdfIsabelHuairaGarma
 
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...Kevin Serna
 
proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusraquelariza02
 
Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.AlejandraCasallas7
 
Presentacion y Extension de tema para Blogger.pptx
Presentacion y Extension de tema para Blogger.pptxPresentacion y Extension de tema para Blogger.pptx
Presentacion y Extension de tema para Blogger.pptxTaim11
 
herramientas informaticas mas utilizadas
herramientas informaticas mas utilizadasherramientas informaticas mas utilizadas
herramientas informaticas mas utilizadaspqeilyn0827
 
Robótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptxRobótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptx44652726
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informáticavazquezgarciajesusma
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfcj3806354
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informáticavazquezgarciajesusma
 
Diagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestreDiagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestrerafaelsalazar0615
 
Diagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdfDiagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdfManuelCampos464987
 
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Telefónica
 

Último (20)

Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
 
¡Mira mi nuevo diseño hecho en Canva!.pdf
¡Mira mi nuevo diseño hecho en Canva!.pdf¡Mira mi nuevo diseño hecho en Canva!.pdf
¡Mira mi nuevo diseño hecho en Canva!.pdf
 
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
 
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
 
Diagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestre
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
 
Herramientas informáticas. Sara Torres R.
Herramientas informáticas. Sara Torres R.Herramientas informáticas. Sara Torres R.
Herramientas informáticas. Sara Torres R.
 
HIGADO Y TRAUMA HEPATICO UDABOL 2024 (3).pdf
HIGADO  Y TRAUMA HEPATICO UDABOL 2024 (3).pdfHIGADO  Y TRAUMA HEPATICO UDABOL 2024 (3).pdf
HIGADO Y TRAUMA HEPATICO UDABOL 2024 (3).pdf
 
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
 
proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmus
 
Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.
 
Presentacion y Extension de tema para Blogger.pptx
Presentacion y Extension de tema para Blogger.pptxPresentacion y Extension de tema para Blogger.pptx
Presentacion y Extension de tema para Blogger.pptx
 
herramientas informaticas mas utilizadas
herramientas informaticas mas utilizadasherramientas informaticas mas utilizadas
herramientas informaticas mas utilizadas
 
Robótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptxRobótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptx
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
Diagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestreDiagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestre
 
Diagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdfDiagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdf
 
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
 

Protocol Buffer Fantásticos y donde encontrarlos

  • 1. Protocol Buffers Fantásticos y donde encontrarlos Katia Aresti, Infinispan Team, Red Hat
  • 2. @karesti Objetivo y reto de la próxima hora Compartir el interés de utilizar Protocol Buffers en Java. Mostrar ejemplos de proyectos que lo utilizan.
  • 5. @karesti Serialization in Java - Desde 1997 public class PersonalShopper implements Serializable { private String id; private String name; private City city; ... - ObjectInputStream - ObjectOutputStream
  • 6. @karesti “The gift that keeps on giving” "Ask The Architect" session from the Devoxx UK 2018 conference, Oracle's chief architect, Mark Reinhold, shared his thoughts about Java’s serialization mechanism which he called a “horrible mistake” and a virtually endless source of security vulnerabilities. https://www.infoq.com/articles/java-serialization-aug18/
  • 7. @karesti Alternativas - JSON - XML - Apache Thrift (Facebook) - Apache Avro - Microsoft Bond - Protocol Buffers (Google)
  • 8. @karesti JSON ✅ HTTP/JSON es el estandard en la web, REST API standard ✅ Formato que podemos leer los seres humanos ✅ Javascript Nativo ❗Marshalling lento para formatos numéricos (problemas de latencia) ❗No es tan eficiente en la red (compresión de datos ayuda) ❗Sistema de tipos pobre ❗Java <-> Json Jackson, Gson
  • 10. @karesti Protocol buffers - Protobuf ● Google (utilizado masivamente en interno) ● Formato Binario ● Open Source desde 2008 ● Interoperabilidad entre muchos lenguajes languages: C++, C#, Java, Dart, Python,Go ● Estructurado tipo XML, más ligero, compacto y rápido ● Mejor rendimiento que JSON https://github.com/protocolbuffers/protobuf
  • 11. @karesti Paso 1: Define tu *.proto esquema syntax = "proto2"; package mycompany; message PersonalShopper { optional string id = 1; optional string name = 2; optional string city = 3; }
  • 12. @karesti Paso 2: Compila y genera el código People.PersonalShopper shopper1 = People.PersonalShopper.newBuilder() .setId(UUID.randomUUID().toString()) .setCity("BILBAO") .setName("Oihana").build(); … shopper1.writeTo(output);
  • 14. @karesti Algunos lugares donde encontramos Protobuf ● gRPC ● Kafka https://docs.confluent.io/platform/current/schema-registry/serdes-develop/serdes-protobuf.html ● Twitter https://github.com/twitter/elephant-bird ● Infinispan http://infinispan.org
  • 15. @karesti Algunos lugares donde encontramos Protobuf ● gRPC ● Kafka https://docs.confluent.io/platform/current/schema-registry/serdes-develop/serdes-protobuf.html ● Twitter https://github.com/twitter/elephant-bird ● Infinispan http://infinispan.org
  • 16. @karesti Caso 1: gRPC Remote Procedure Call (g-google) https://grpc.io/docs/what-is-grpc/introduction/ gRPC Conf 2020
  • 17. @karesti gRPC + Quarkus https://quarkus.io/blog/quarkus-grpc/ by Clément Escoffier
  • 19. @karesti Caso 2: Infinispan (Datagrid ) ● 100% Open-source, In-memory Distributed Data Store* ○ ~ Redis, Apache Ignite, Hazelcast ● Cachés distribuidas con múltiples casos de uso ● Diseñado para soportar 50.000 peticiones en paralelo ● High Availability/High Scalability
  • 20. @karesti Client/Server Data Data lives here Defines encodings Client APP Connect a client (Java, Node, C#...) Use a marshaller
  • 21. @karesti Comparing Cache Encodings Marshalled Java Text Protobuf Infinispan Server Web Console ✅ + ❌ ✅ ✅ REST Client ✅ ✅ ✅ Java Hotrod* Client ✅ ✅ ✅ Other Hotrod Clients (C#, Node…) ❌ ✅ ✅ Search ✅ + ❌ ❌ ✅ Custom Java Objects - ❌ ✅ * Hot Rod is the Infinispan binary communication protocol implemented by Infinispan Server
  • 22. @karesti Protobuf Caches - Infinispan Protostream
  • 24. @karesti To go further ● Protobuf https://developers.google.com/protocol-buffers ● gRPC https://grpc.io/ ● Infinispan Getting Started https://infinispan.org/get-started/ ● Demo with Spring-Boot https://github.com/karesti/protobuf-marshalling-guide
  • 25. @karesti Conclusiones Que la serialización de Java descanse en paz pronto. Protobuf es una muy buena opción que merece la pena utilizar en vuestros sistemas distribuidos.