Consistencia Eventual Fuerte y Elasticidad superlativa con Akka

Consistencia Eventual Fuerte y Elasticidad superlativa con Akka

Presentación para el DevFest de colombia-dev.

Ba65fa609c1140652825f69e58fe427e?s=128

Yuji Kiriki

October 08, 2015
Tweet

Transcript

  1. Consistencia Eventual Fuerte y Elasticidad superlativa con Akka DevFest2015 @colombia_dev

    @scalaMDE
  2. Advertencia.

  3. Un lenguaje es una herramienta ¿qué puedo hacer con ella?

  4. Quiero mostrarles qué pueden hacer gracias a las características de

    scala y su ecosistema de tecnologías.
  5. un sistema distribuído Red Envío y recibo datos ¡Yo también!

  6. 8 falacias de los sistemas distribuidos + La red es

    confiable. + La latencia es 0. + El ancho de banda es infinito. + La red es segura. + La topología no cambia. + Sólo hay un administrador. + El costo de transporte es 0. + La red es homogenea. Tomado de https://blogs.oracle.com/jag/resource/Fallacies.html el 15/10/2015
  7. y las otras falacias, en consecuencia:

  8. Hay un sólo reloj.

  9. Spanner: Google’s Globally Distributed Database. Corbett, James C. and Dean,

    Jeffrey and Epstein, Michael and Fikes, Andrew and Frost, Christopher and Furman, J. J. and Ghemawat, Sanjay and Gubarev, Andrey and Heiser, Christopher and Hochschild, Peter and Hsieh, Wilson and Kanthak, Sebastian and Kogan, Eugene and Li, Hongyi and Lloyd, Alexander and Melnik, Sergey and Mwaura, David and Nagle, David and Quinlan, Sean and Rao, Rajesh and Rolig, Lindsay and Saito, Yasushi and Szymaniak, Michal and Taylor, Christopher and Wang, Ruth and Woodford, Dale . ACM Trans. Comput. Syst. August 2013. Volume 31, number 3. ACM New York, NY, USA.
  10. Coordinar es fácil.

  11. Tomado de http://www.cs.rice.edu/~druschel/comp413/lectures/replication.html el 14/10/215.

  12. Un mensaje puede ser entregado exactamente una vez.

  13. Exactly-once semantics in a replicated messaging system. Conference Proceedings: Data

    Engineering, 2001. Proceedings. 17th International Conference. Yongqiang Huang; Garcia-Molina, H. IEEE 2001.
  14. Es posible que los nodos de un DistSys lleguen a

    un acuerdo.
  15. Tomado de https://groups.csail.mit.edu/tds/papers/Lynch/jacm85.pdf el 15/10/2015

  16. problema de los dos generales "2-generals" by Jens Erat -

    created by myself. Licensed under GFDL via Commons - https: //commons.wikimedia.org/wiki/File:2-generals.svg#/media/File:2-generals.svg
  17. Puedo hacer un DistSys que sea simultáneamente: + 100% Consistente

    + 100% Disponible + y tolerar particiones de red.
  18. Tomado de https://groups.csail.mit.edu/tds/papers/Gilbert/Brewer2.pdf el 15/10/2015

  19. En conclusión, hacer distsys es muy muy muy difícil.

  20. None
  21. None
  22. Convergent or Commutative Replicated Data Types (CRDT) CRDT

  23. Son una alternativa para construir distsys con estado altamente disponibles

    y eventualmente consistentes.
  24. CRDT, primer párrafo Is a partially ordered set that has

    a join (a least upper bound) for any nonempty finite subset.
  25. Tomado de http://mommasaid.net/wp-content/uploads/2010/04/baby-cries.jpg el 10/10/15

  26. CRDT, segundo párrafo Have associative, commutative, idempotent binary operations

  27. Tomado de http://mommasaid.net/wp-content/uploads/2010/04/baby-cries.jpg el 10/10/15

  28. CRDT, tercer párrafo … and any such operation induces a

    partial order such that the result of the operation for any two elements is the least upper bound of the elements with respect to this partial order.
  29. Tomado de http://mommasaid.net/wp-content/uploads/2010/04/baby-cries.jpg el 10/10/15

  30. Lo clave es:

  31. Que dados dos o más CRDT, se pueden fundir (merge)

    en: + Cualquier órden + Con cualquier procedencia + Cualquier número de veces + Y los resultados siempre convergerán consistentemente.
  32. La verdad

  33. |+| |+| |+| = La verdad

  34. |+| |+| |+| = La verdad Conmutativa Convergente

  35. val laVerdad = merge( CRDT1, CRDT2, … , CRDTn )

  36. Matemática DistSys CRDT

  37. Y una pregunta:

  38. Si un CRTD es un semilattice ¿podemos implementarlo en un

    monoide?
  39. Semilattice. (2015, June 10). In Wikipedia, The Free Encyclopedia. Retrieved

    21:35, October 14, 2015, from https://en.wikipedia.org/w/index.php? title=Semilattice&oldid=666316943
  40. None
  41. Matemática DistSys CRDT Programación funcional

  42. Ahora un ejemplo. Pero... ¡Por qué en Scala!

  43. Por Akka: + Actor model. + Accrual failure detector. +

    Epidemic gossip protocols. + Consistent hashing. + Descentralized P2P. + Vector clocks. + Próximamente RAFT.
  44. Por las librerías para typeclasses: cats, scalaz, discipline.

  45. None
  46. código, o es mentira. ¿Qué vamos a ver?

  47. LB Crear carritos de compras y agregarle artículos

  48. LB ¿Qué pasa si los nodos empiezan a fallar?

  49. Algunas reflexiones finales.

  50. Excusa #1: Es “muy” académico entonces no es práctico.

  51. Excusa #2: Ya hay cajas negras que solucionan “esos” problemas.

  52. Excusa #3: Yo no tengo ese problema.

  53. Tomado de https://springbokasmr.wordpress.com/page/3/ el 15/10/2015 sad red panda :-(

  54. Lo que sabemos Lo que podemos saber

  55. ¡Gracias! @scalaMDE @ykiriki Tomado de https://g.twimg.com/Twitter_logo_blue.png el 15/10/2015