Los mejores documentos de JPoint 2018: Java / JVM y su rendimiento, Kotlin, Spring, Docker

Ya publicamos videos de los informes de JPoint 2018 en YouTube y, especialmente para el centro de Java en Habré, hicimos una selección tradicional de los mejores según los visitantes de la conferencia.


Como de costumbre, hay informes "junior" en la parte superior, con la calificación más alta al final. Por supuesto, esto no significa que un informe sea mucho peor que otro: si cambia la metodología de cálculo, los lugares pueden cambiar fácilmente. En realidad, lo cambiamos, ahora se utiliza la versión de "quórum suave" de la calificación, teniendo en cuenta el número de participantes presentes en el informe. Este enfoque tiene sus inconvenientes (por ejemplo, más personas llegan a la nota clave que a un informe regular, simplemente porque el público no tiene otra opción), pero en general da una mejor idea de lo que sucedió.


Debajo del corte, y videos de los mejores informes, y enlaces a sus presentaciones, y descripciones breves, y un enlace a la lista de reproducción completa.



Lista de reproducción completa


La lista de reproducción completa con todos los videos discutidos a continuación está disponible aquí .


10. Herramientas de rendimiento de contenedores de Linux para aplicaciones JVM


Descargar diapositivas



La revolución de los contenedores barrió a todos: el mundo de Java no estuvo exento de ella. Sin embargo, Java siempre ha tenido y hay ciertos problemas y características, que serán discutidos en el informe de Sasha Goldstein.


Sasha es el creador en serie de la actuación hardcore. El año pasado, en JPoint, hizo una excelente charla sobre el uso del filtro de paquetes Berkeley para la JVM (recomiendo desesperadamente ver una publicación de YouTube), y fue solo cuestión de tiempo antes de que analizara detalladamente la contenedorización. El mundo se mete en las nubes y los acopladores, lo que a su vez nos trae muchos problemas nuevos. Como habrá notado, la mayoría de los sistemas de depuración y creación de perfiles de bajo nivel, después de aplicarlos a los contenedores, están rodeados de diferentes características y jambas. Sasha recorrió los escenarios principales (utilización de CPU, capacidad de respuesta de E / S, acceso a bases de datos compartidas, etc.) a través del prisma de usar herramientas modernas en la plataforma GNU / Linux, incluidos BCC y perf.


No todos necesitan esta especificidad. Esta es una de las razones por las cuales el informe solo ocupaba el décimo lugar: asistieron unas doscientas personas (en comparación con más de mil de Tolkachev y Borisov), y nuestro algoritmo de cálculo de calificación es muy sensible al tamaño de la audiencia.


Para aquellos que de alguna manera están conectados con contenedores, este informe debe ser visto. Ahorrará mucho tiempo en una búsqueda independiente de todos los detalles mediante una búsqueda completa de innumerables utilidades y cómo usarlas.


También quiero señalar que el informe de Sasha de los 10 principales es casi el más denso en términos de la cantidad de información práctica por unidad de tiempo. Desde casi todas las diapositivas puedes copiarte algunas cosas útiles. Para no participar en un recuento detallado, mostraré solo la estructura de la superficie de la presentación:


Resumen del informe
  • ¿Cómo están dispuestos los contenedores?
    • Grupos de control: CPU, memoria, bloque de E / S;
    • Espacios de nombres: espacio de nombres pid, espacio de nombres de montaje, espacio de nombres de red;
  • La diferencia entre los problemas que surgen:
    • En el anfitrión;
    • En el contenedor;
    • Ejemplos de problemas con soluciones:
      • Conexión a JVM?
      • Datos de rendimiento de JVM?
    • Herramientas de demostración JVM en el host;
  • Herramientas de información de recursos:
    • sidecar para monitoreo;
    • estadísticas del acoplador;
    • systemd-cgtop;
    • htop + cgroup ID;
    • nsenter o docker exec;
    • Monitoreo de demostración de los recursos del contenedor;
  • Perfiles de CPU de perfil:
    • perf en el host: -G, mapeo de símbolos, mapeo PID, compartir mapa de perf (perf-map-agent);
    • Demostración con flamegramas; oos;
    • perf en el contenedor en modo no privilegiado;
    • honest-profiler, async-profiler, perf vs async-profiler;
    • Demo async-profiler;
    • BCC es una herramienta de creación de perfiles (resuelve una serie de problemas por sí solo, pero solo funciona en Linux 4.9+);
    • Estrangulamiento;
  • Otros métodos de monitoreo:
    • cAdvisor, SysDig, New Relic, DataDog ...

9. Una vez al año, los jardines florecen: analizando la semántica de Apache Kafka "exactamente una vez"


Descargar diapositivas



Victor Gamov tiene una ventaja completamente injusta sobre otros oradores. Este es el hombre que lanzó casi doscientos números del podcast Debriefing, el autor de un montón de informes, textos, publicaciones e incluso el libro "Enterprise Web Development" de O'Reilly. La sola presencia de Gamow hace algo mejor. Estoy seguro de que podría decir con la misma entonación no sobre Kafka, sino sobre el crecimiento de geranio en el alféizar de la ventana, y esto aún sería fascinante.


Aquí tenemos un caso especial: el tema inicialmente holivorny sobre la semántica de "exactamente una vez". Kafka se apresuró a usar todo en una escala extraordinaria, que requería el procesamiento de la semántica tradicional de entrega de mensajes. No se meta un dedo en la boca: cambiaron sus zapatos sobre la marcha con el protocolo y formato de mensaje correctos e hicieron todo lo que necesitaban. A lo largo del informe, Víctor habla sobre cómo está organizado dentro y qué afecta.


Dos noticias, buenas y malas. Bien: todo está configurado en Kafka. Malo: todo está configurado en Kafka. Para vivir con él, debes comprender cómo funciona y dónde subir con tus manos sucias.


Uno podría esperar algún tipo de batido de Víctor, pero luego obtuvo un hardcore desesperado, y el plan es algo como esto:


Resumen del informe
  • Introducción a Kafka:
    • Temas
    • Particiones
    • Registros y compensaciones
    • Señales y líderes
    • Clientes: productores y consumidores
  • Productor
    • Cómo funciona en ejemplos
    • Protocolo del productor
  • Consumidor
    • Cómo funciona en ejemplos
    • Protocolo de consumo
  • Modelo de procesamiento
    • Leído, contado, grabado
    • Tipos de fallas (todo se rompió, zombies)
  • Semántica de procesamiento
    • Al menos una vez, a lo sumo una vez, exactamente una vez
  • Semántica "exactamente una vez"
    • Con ejemplos
    • Debilidades
      • reintentos inseguros
      • grabación offset no atómica
      • zombies
  • Arreglando la primera debilidad: un productor idempotente
  • Arregla la segunda debilidad:
    • Instantáneas de Chandy Lamport
      • Principio
      • ¿Cómo vivir con fracasos?
        • Difícil: bloqueo durante el procesamiento
        • Suave: bloqueo antes o durante la eliminación de instantáneas
    • Transacciones en Kafka
      • Dos tipos de marcadores (COMPROMISO, ABORTAR)
      • Grabación atómica en muchas particiones (¡Incluyendo! _Consumer_offsets)
  • Repara la tercera debilidad: la esgrima zombie
  • Aislamiento de lectura del consumidor
  • eos de extremo a extremo
    • Fuente de conexión Kafka
    • Kafka arroyos
    • Lavabo Kafka Connect

8. Lucha contra los piratas informáticos rusos con Kafka Streams y Firehose API


Descargar diapositivas



De nuevo Kafka! Gamow de nuevo! Sí, y con Baruch Sadogursky ( jbaruch ) ahora. Sin embargo, este informe no es un licuado, sino una pieza práctica muy específica sobre cómo, en la plataforma Bintray (de la cual Baruch es el dios), usando Apache Kafka (de quien es responsable Víctor) y Firehose, analizan patrones de comportamiento y procesan grandes cantidades de datos.


Si el informe anterior sobre el interior de Kafka tenía 245 diapositivas, entonces este solo tiene 17. ¡Esto es porque necesitas verlo! Este es principalmente un diálogo animado entre demostraciones principales y en vivo. No te demores, abre la vidosik y mira.


7. Memoria transaccional de hardware en Java


Descargar diapositivas



Nikita Koval ( ndkoval ) es investigador en JetBrains en el equipo de Kotlin y estudiante de doctorado en IST Austria (estaba en Devexperts en el momento de la charla). Su informe está en marcado contraste con los "hackers rusos", porque no es un tema de lectura ligero y entretenido, sino una historia sobre los intrincados componentes internos de VM. Si observa las diapositivas , puede encontrar 150 hojas, la mayoría de las cuales son códigos.


Si estuvieras en JBreak a principios de 2018, es posible que hayas encontrado la historia de Nikita sobre cosas completamente diferentes, sobre cómo escribir una tabla hash rápida de múltiples subprocesos utilizando el poder de las arquitecturas modernas de múltiples núcleos y algoritmos especiales. De acuerdo, Nikita tiene un estilo . Inmediatamente recuerdo a Shipilev.


Esta vez hablaremos sobre la memoria transaccional, que está apareciendo gradualmente en los procesadores modernos, pero que aún no está claro cómo usarla para una persona común del mundo JVM. Fuera de la JVM, por supuesto, todo es más simple. Pero imagina lo que le dices a un desarrollador web habitual de Spring: "Sí, solo edita vmstructs, acumula tus intrínsecos, reconstruye OpenJDK y ¡listo!" Y él es así: "Bueno, por supuesto, ¡lo hago todos los días!". Nikita habla muy claramente sobre formas de uso, qué optimizaciones ya están en OpenJDK y cómo realizar transacciones directamente desde el código Java.


Resumen del informe
  • Introducción: por qué necesitamos multihilo
  • Enfoques de construcción de algoritmos
    • Cerradura áspera
    • Cerradura delgada
    • Sincronización sin bloqueo
    • Los tres tipos se ilustran en la tarea de ejemplo sobre un banco de juguetes.
  • Multithreading es complicado. Que hacer
    • Transacciones en un mundo perfecto. ¡Solo escribe atomic!
    • De dónde obtener atómica:
      • Memoria transaccional de software (STM). Scala STM, NOrec, Coroutines.
      • Memoria transaccional de hardware (HTM). Haswell, Poder 8.
      • Memoria transaccional híbrida
    • Intel RTM por ejemplos
      • XBEGIN, XEND, XABORT, XTEST
      • Intel RTM + Java
        • Bloquear elision
        • java.util.concurrent.RTMSupport
      • Intrínsecos: intérprete, C1, C2
      • Granulado grueso / sin bloqueo + RTMS Soporte en gráficos

6. Perfilamos con precisión los microsegundos y las instrucciones del procesador


Descargar diapositivas



Sergey Melnikov ( RainM ) de Raiffeisenbank nos trajo el segundo informe de perfil. Curiosamente, antes de trabajar en código Java de baja latencia, trabajó en Intel como ingeniero de rendimiento de compiladores para lenguajes C / C ++ / FORTRAN. Este informe también tiene perf! :-) También se trata de las características de hardware de los procesadores y la tecnología Intel Processor Trace, que le permite dar el siguiente paso en la precisión del perfil y reconstruir la ejecución de una sección del programa. Hay pocos informes de este tipo (por ejemplo, puede encontrar el informe de Andi Kleen en la Cumbre de seguimiento 2015), generalmente dejan un mar de preguntas y no brillan con practicidad en relación con Java. Aquí, no solo tenemos una persona que ha visitado ambos mundos (Intel y Java en el banco), sino que también sabe cómo explicar claramente temas complejos.


Resumen del informe
  • ¿Qué es y por qué es necesario?
    • Área temática: aplicaciones de baja latencia
    • Ejemplo de intercambio de Moscú
  • Elige un perfilador
    • ¿Cómo perfilar? Muestreo y perfiladores de instrumentación
    • async-profiler
  • Enseñamos al perfilador a armar un perfil detallado
    • Cómo ejecutar perf
    • Cómo mirar en el perfil, en la pila de llamadas
    • perf-map-agent, sysctl, dmesg ...
  • Uso de eventos PMU / PEBS en perf
  • Intel Processor Trace: qué es y cómo perfilar Java
    • Requisitos: paquetes, hardware, sistema operativo
    • Cómo correr en Skylake-X (Xeon e i9)

5. VMStructs: ¿Por qué la aplicación necesita saber acerca de los componentes internos de JVM?


Descargar diapositivas



Andrey ( apangin ) es una persona que, una y otra vez, recopila los informes más profundos y poderosos. En el pasado, Joker reunió a un poco menos de mil personas; este es un récord en términos de tamaño de audiencia en un informe regular que no es una nota clave. En esto le ayuda una década de experiencia trabajando en máquinas virtuales y la capacidad de explicar el hardcore técnico para que pueda repetirse en la práctica.


Muchos no entienden por qué profundizar en una máquina virtual si tiene una aplicación regular en un tomcat, con una base de datos y todo es como debería ser. Este informe tiene un buen argumento a nivel de "¿cómo entender qué consulta extraerá muchos datos?" Si intenta instruir el código usando JMX, entonces algo extraño comienza a suceder con el rendimiento. En primer lugar, puede comprender por qué sucede esto y, en segundo lugar, qué se puede hacer al respecto. En mi opinión, este informe es valioso no tanto con un conjunto de herramientas (aunque hay un poco de ayuda allí), sino con una demostración de la mentalidad correcta del desarrollador de OpenJDK y cómo comportarse en situaciones difíciles. Expresa la presencia y explica el significado de cosas específicas como TLAB, Code Cache, Constant Pool, etc.


4. Corutinas en Kotlin


Descargar diapositivas



Solo el perezoso no sabe sobre Kotlin ahora, y usted, el lector, una vez leyó hasta el cuarto párrafo, obviamente no de los perezosos. Roman ( elizarov ) es un antiguo desarrollador de software comercial de alto rendimiento, y ahora es líder en las bibliotecas de Kotlin. Ya hicimos una entrevista con Roma sobre las corutinas , y puede valer la pena volver a leerla antes o después de ver el informe. Las rutinas son un concepto muy antiguo, ya que desde la época de Simula, pero no todos los lenguajes principales las admiten, no aparecerán en Java pronto. Pero en Kotlin ya están en la versión estable.


Este informe responde a todas las preguntas relevantes sobre las rutinas, es decir, todas las cuestiones relevantes de nuestro tiempo en general :-)


Resumen del informe
  • Cuadro general del desarrollo de los idiomas.
  • Programación de devolución de llamada asincrónica
  • Futuros / Promesas / Rx
  • Corutinas en Kotlin
    • bucles regulares, manejo de excepciones, funciones de orden superior
    • funciones personalizadas de orden superior
    • ¡todo se ve en el código de bloqueo!
  • Como funciona
    • funciones de suspensión, código con puntos de suspensión
  • Integración
    • Actualización asíncrona
    • Callbacks y continuaciones (call / cc from Scheme!)
    • contlinx-coroutines-core
      • jdk, guayaba, nio, reactor, rx1, rx2
  • ¿Cómo ejecutar corutinas?
  • asíncrono / espera
    • ¿Por qué no hay palabras clave en espera en Kotlin?
    • La concurrencia es difícil. Necesitas hacer esto explícitamente.
    • El enfoque de Kotlin para asíncrono
  • Concepto Corutin: hilos muy ligeros
  • Interoperabilidad con Java
  • Corutinas sincrónicas - generar / rendir
    • Ejemplo de números de Fibonacci
  • Comunicando procesos secuenciales (CSP)
  • Biblioteca vs idioma
    • ¡El núcleo de la lengua debe ser pequeño!
    • Palabras clave: asíncrono / espera, generar / rendimiento
    • Modificadores: suspender
    • kotlinx-coroutines: lanzamiento, asíncrono, ejecución de bloqueo, futuro, retraso, trabajo, diferido, ...

3. Sobre los hombros de los gigantes: los idiomas que estudió Kotlin


Descargar diapositivas



Informe sobre Kotlin de uno de los creadores del lenguaje: ¿qué más se necesita para la felicidad? La esencia y estructura de la presentación es completamente diferente de la del informe anterior de Elizarov. La novela hablaba de cosas específicas: qué, cómo y por qué en el diseño de la rutina y cómo usarla, y necesito esto para mejorar la habilidad de programación en Kotlin. Aquí Andrei ( abreslav ) habla sobre cosas que mejoran la erudición en general en la vida y dan una comprensión del lugar de uno en el mundo. Si vio todos estos lenguajes con sus propios ojos (Java, C #, Scala, Groovy, Python, Gosu), esto es aún más interesante, porque hay razones para la discusión (los asistentes a la conferencia probablemente podrían aprovechar esta oportunidad y realmente discutir su comprensión de las cosas en vivo en el área de discusión ) Esto es "siete idiomas en siete semanas", pero solo en una hora.


Por cierto, recientemente hicimos una entrevista por separado con Andrey, pero no se trata solo de Kotlin, sino de muchas cosas diferentes.


2. Las aventuras de Senior Holmes y Junior Watson en el mundo del desarrollo de software


Descargar diapositivas



Hacer presentaciones con más de un orador es extremadamente difícil. A menudo se ve así: la mitad de las veces uno de ellos se para en el escenario y se aburre, y se ve muy aburrido. ¿Qué puede decir sobre la actuación conjunta de Baruch Sadogursky y Evgeny Borisov ( EvgenyBorisov )? Por el contrario, se hizo espléndidamente, es una obra de arte. Las estrellas se unieron en el orden correcto, y dos oradores principales con gran experiencia y la práctica de realizar informes emparejados aparecieron en el escenario para discutir un tema que era interesante para ambos. ¿Por qué enfatizo esto? Por lo general, los espectadores no tienen idea de cuál es la creación de tal presentación, y dan todo por sentado.


Pero el resultado justificó la inversión. Juzgue usted mismo, esta es la nota principal de la tarde, el informe más reciente de la conferencia, durante el cual las personas ya están agotadas con dos días de estaño, quieren dormir, alguien necesita volar a casa en este momento y así sucesivamente. Sin embargo, más de 600 personas se quedaron en el pasillo con seguridad.


Este no es un informe de referencia, sino un informe que se debe ver. En él, Holmes y Watson revelarán varios acertijos que usted ha encontrado, encontrará o encontrará en el desarrollo diario. No habrá tripas de recolectores de basura y códigos de bytes, pero habrá herramientas, bibliotecas y marcos que desconciertan a los desarrolladores comunes en su rutina diaria, lo que lleva al tiempo de inactividad, la elaboración de perfiles de fechas límite y las depresiones prolongadas. En la práctica, en este informe, Sherlock y Watson salvan su frente de palmas y rastrillos que alguien ya ha pisado.


Por lo tanto, no habrá un breve resumen aquí, solo comience el video y mire.


1. Arranca tú mismo, la primavera se acerca


Descargar diapositivas




Baruch + Gamow, Baruch + Borisov, ¿quién falta en los autores de los informes de parejas populares? Así es, Borisov + Tolkachev ( tolkkv ). Otro informe genial, que, al no ser una nota clave, reunió a un número récord de participantes, más de mil. Había tanto material, y es tan interesante que se asignaron dos espacios en el programa de la conferencia, y en consecuencia deberá ver dos videos en YouTube.


Hace muchos años, los programadores de Java usaban "nuevo" para crear servicios. Hicieron muchas acciones manuales y configuración mixta con lógica empresarial. Incluso utilizaron técnicas de copiar y pegar. Se escribieron muchas líneas de código miserable, que a veces incluso funcionó.


Luego vino la primavera. Mucho ha cambiado con él ... Obtuvimos mucha "magia" del cilindro mágico Spring, y nuestro código se ha vuelto más limpio, simple y fácil de mantener.


Y así apareció Spring Boot. Por un lado, resuelve miles de problemas preexistentes: conflictos de versiones, tareas de configuración, trabajar con contenedores de infraestructura, el problema de configurar el entorno y, por supuesto, iniciar o implementar una aplicación, incluida la creación de archivos jar / war. Por otro lado, Spring Boot ha agregado aún más magia a nuestro cilindro mágico. Como resultado, hay dos escenarios:


  • Todo funciona muy bien, aunque nadie sabe cómo.
  • Nada funciona y nadie sabe por qué.

Este informe revela los secretos básicos de la magia de Spring Boot. Comprenderá los principios básicos y las convenciones para las aplicaciones típicas de Spring Boot. La tarea de Cyril y Eugene, para que toda la magia del cilindro te convierta en un proceso mucho más transparente y no solo puedas disfrutar cuando todo funcione, sino que también entiendas la esencia de los problemas y puedas resolverlos sin involucrar ambulancias y otros servicios disponibles en Llamadas urgentes.


Conclusión


Me llevó varios días ver todos los videos de la lista. No fue fácil, pero es claramente visible que valió la pena. En realidad, hubo muchos más informes en la conferencia, y ver los diez primeros es un buen comienzo para una forma mucho más amplia. Si también va a ver estos informes, ¡no sea demasiado vago para escribir sus comentarios en los comentarios sobre Habré!


Mientras tanto, ya es posible comprar boletos para el próximo JPoint. Se llevará a cabo del 5 al 6 de abril de 2019 en el WTC Congress Center. ¡Hasta el 1 de enero, todavía existe la oportunidad de comprar boletos a precios bajos !

Source: https://habr.com/ru/post/es433858/


All Articles