Kertas JPoint 2018 Terbaik: Java / JVM dan Kinerjanya, Kotlin, Spring, Docker

Kami telah memposting video laporan JPoint 2018 di YouTube dan, terutama untuk hub Java di Habré, membuat pilihan tradisional yang terbaik dari mereka, menurut pengunjung konferensi.


Seperti biasa, ada laporan "junior" di bagian atas, dengan peringkat tertinggi di bagian akhir. Tentu saja, ini tidak berarti bahwa satu laporan jauh lebih buruk daripada yang lain: jika Anda mengubah metodologi perhitungan, tempat dapat dengan mudah berubah. Pada kenyataannya, kami mengubahnya, sekarang versi “kuorum lunak” peringkat digunakan, dengan mempertimbangkan jumlah peserta yang hadir dalam laporan. Pendekatan ini memiliki kelemahan (misalnya, lebih banyak orang datang keynote daripada ke laporan reguler, hanya karena audiens tidak punya pilihan), tetapi secara keseluruhan memberikan gambaran yang lebih baik tentang apa yang terjadi.


Di bawah potongan - dan video dari laporan terbaik, dan tautan ke presentasi mereka, dan deskripsi singkat, dan tautan ke daftar putar lengkap.



Daftar putar lengkap


Daftar putar lengkap dengan semua video yang dibahas di bawah tersedia di sini .


10. Alat kinerja wadah Linux untuk aplikasi JVM


Unduh slide



Revolusi kontainer menyapu semua orang - dunia Jawa bukan tanpa itu. Namun demikian, Jawa selalu memiliki dan memiliki masalah dan fitur tertentu, yang akan dibahas dalam laporan Sasha Goldstein.


Sasha adalah pencipta serial hardcore kinerja. Tahun lalu, di JPoint, dia membuat pembicaraan yang sangat baik tentang menggunakan Berkeley Packet Filter untuk JVM (saya sangat merekomendasikan menonton posting YouTube), dan itu hanya masalah waktu sebelum dia melihat secara terperinci pada peti kemas. Dunia memasuki awan dan buruh pelabuhan, yang pada gilirannya membawa kita banyak masalah baru. Seperti yang mungkin Anda perhatikan, sebagian besar sistem debugging dan profil tingkat rendah, setelah menerapkannya pada kontainer, ditumbuhi berbagai fitur dan tiang tembok. Sasha meluncur melalui skenario utama (pemanfaatan CPU, respons IO, akses ke database bersama, dll.) Melalui prisma menggunakan alat modern pada platform GNU / Linux, termasuk BCC dan perf.


Tidak semua orang membutuhkan spesifisitas ini. Ini adalah salah satu alasan mengapa laporan ini hanya berada di tempat kesepuluh - dihadiri oleh sekitar dua ratus orang (bandingkan dengan lebih dari seribu dari Tolkachev dan Borisov), dan algoritma penghitungan peringkat kami sangat sensitif terhadap ukuran audiens.


Bagi mereka yang entah bagaimana terhubung dengan kontainer, laporan ini harus dilihat. Ini akan menghemat banyak waktu pada pencarian independen untuk semua detail dengan pencarian lengkap utilitas yang tak terhitung jumlahnya dan cara menggunakannya.


Saya juga ingin mencatat bahwa laporan Sasha dari 10 besar adalah yang paling padat dalam hal jumlah informasi praktis per unit waktu. Dari hampir setiap slide Anda dapat menyalin sendiri beberapa hal berguna. Agar tidak terlibat dalam menceritakan kembali secara rinci, saya hanya akan menunjukkan struktur permukaan presentasi:


Garis besar laporan
  • Bagaimana wadahnya diatur?
    • Grup kontrol: CPU, memori, blok I / O;
    • Namespaces: pid namespace, mount namespace, network namespace;
  • Perbedaan antara masalah yang muncul:
    • Di tuan rumah;
    • Dalam wadah;
    • Contoh masalah dengan solusi:
      • Koneksi ke JVM?
      • Data kinerja JVM?
    • Alat Demo JVM di tuan rumah;
  • Alat Informasi Sumber Daya:
    • sespan untuk pemantauan;
    • statistik buruh pelabuhan;
    • systemd-cgtop;
    • htop + ID grup;
    • eksekutif nsenter atau buruh pelabuhan;
    • Demo pemantauan sumber daya kontainer;
  • Membuat profil wadah CPU:
    • perf pada host: -G, pemetaan simbol, pemetaan PID, berbagi peta perf (perf-peta-agen);
    • Demo dengan flamegrams; oos;
    • perf dalam wadah dalam mode tidakrivil;
    • jujur-profiler, async-profiler, perf vs async-profiler;
    • Demo async-profiler;
    • BCC adalah alat profiling (itu memecahkan sejumlah masalah dengan sendirinya, tetapi hanya bekerja pada Linux 4.9+);
    • Pelambatan;
  • Metode pemantauan lainnya:
    • cAdvisor, SysDig, Relic Baru, DataDog ...

9. Setahun sekali, kebun mekar: parsing semantik "persis sekali" Apache Kafka


Unduh slide



Victor Gamov memiliki keunggulan yang sama sekali tidak adil dibandingkan pembicara lain. Ini adalah orang yang merilis hampir dua ratus masalah podcast Debriefing, penulis banyak laporan, teks, posting dan bahkan buku "Pengembangan Web Perusahaan" oleh O'Reilly. Kehadiran Gamow sangat baik. Saya yakin dia bisa tahu dengan intonasi yang sama bukan tentang Kafka, tetapi tentang pertumbuhan geranium di ambang jendela, dan ini masih akan menarik.


Di sini kita memiliki kasus khusus: topik awalnya holivorny tentang semantik "tepat sekali". Kafka bergegas menggunakan segala sesuatu dalam skala luar biasa, yang membutuhkan pemrosesan semantik pengiriman pesan tradisional. Jangan meletakkan jari di mulut Anda - mereka mengubah sepatu saat bepergian di bawah protokol dan format pesan yang benar dan melakukan semua yang mereka butuhkan. Sepanjang laporan, Victor berbicara tentang bagaimana pengaturannya di dalam dan apa pengaruhnya.


Dua berita, baik dan buruk. Bagus: semuanya sudah diatur di Kafka. Buruk: semuanya sudah diatur di Kafka. Untuk hidup dengannya, Anda perlu memahami cara kerjanya dan ke mana harus memanjat dengan tangan kotor Anda.


Orang bisa mengharapkan semacam smoothie dari Victor, tetapi kemudian dia mendapatkan hardcore yang putus asa, dan rencananya adalah seperti ini:


Garis besar laporan
  • Pengantar Kafka:
    • Topik
    • Partisi
    • Log dan Offset
    • Isyarat dan pemimpin
    • Pelanggan: Produsen dan Konsumen
  • Produser
    • Cara kerjanya pada contoh
    • Protokol produsen
  • Konsumen
    • Cara kerjanya pada contoh
    • Protokol Konsumen
  • Model pengolahan
    • Baca, hitung, direkam
    • Jenis-jenis gangguan (semuanya pecah, zombie)
  • Memproses Semantik
    • Paling tidak sekali, paling banyak sekali, tepat sekali
  • Semantik “tepat sekali”
    • Dengan contoh
    • Kelemahan
      • percobaan ulang tidak aman
      • rekaman offset non-atom
      • zombie
  • Memperbaiki kelemahan pertama: produser idempoten
  • Perbaiki kelemahan kedua:
    • Snapshots Chandy Lamport
      • Prinsip
      • Bagaimana cara hidup dengan kegagalan?
        • Keras: macet selama pemrosesan
        • Lunak: mogok sebelum atau saat pengambilan foto
    • Transaksi dalam Kafka
      • Dua jenis marker (COMMIT, ABORT)
      • Rekaman atom pada banyak partisi (Termasuk! _Consumer_offsets)
  • Perbaiki kelemahan ketiga: pagar zombie
  • Isolasi Membaca Konsumen
  • end-to-end eos
    • Kafka menghubungkan sumber
    • Kafka mengalir
    • Kafka Connect Sink

8. Memerangi Peretas Rusia dengan Aliran Kafka dan API Firehose


Unduh slide



Lagi Kafka! Gamow lagi! Ya, dan dengan Baruch Sadogursky ( jbaruch ) sekarang. Namun demikian, laporan ini bukan smoothie, tetapi bagian praktis yang sangat spesifik tentang bagaimana, pada platform Bintray (di mana Baruch adalah dewa), menggunakan Apache Kafka (yang menjadi tanggung jawab Victor) dan Firehose, menganalisis pola perilaku dan memproses data dalam jumlah besar.


Jika laporan sebelumnya tentang bagian dalam Kafka memiliki 245 slide, maka yang ini hanya memiliki 17 slide. Ini karena Anda perlu melihatnya! Ini adalah dialog yang hidup antara demo terkemuka dan live. Jangan berlama-lama, buka vidosik dan lihat.


7. Memori transaksional perangkat keras di Jawa


Unduh slide



Nikita Koval ( ndkoval ) adalah seorang peneliti di JetBrains di tim Kotlin dan seorang mahasiswa PhD di IST Austria (dia berada di Devexperts pada saat pembicaraan). Laporannya sangat kontras dengan "peretas Rusia," karena ini bukan bahan bacaan ringan yang menghibur, tetapi sebuah cerita tentang internal VM yang rumit. Jika Anda melihat slide , Anda dapat menemukan 150 lembar, yang sebagian besar adalah kode.


Jika Anda berada di JBreak pada awal 2018, Anda mungkin telah menemukan cerita Nikita tentang hal-hal yang sama sekali berbeda - tentang menulis tabel hash multi-utas cepat menggunakan kekuatan arsitektur multi-core modern dan algoritma khusus. Setuju, Nikita memiliki gaya . Saya langsung ingat Shipilev.


Kali ini kita akan berbicara tentang memori transaksional, yang secara bertahap muncul dalam prosesor modern, tetapi yang masih tidak jelas bagaimana menggunakannya untuk orang biasa dari dunia JVM. Di luar JVM, tentu saja, semuanya lebih sederhana. Tetapi bayangkan apa yang Anda katakan kepada pengembang web Spring biasa: "Ya, cukup edit vmstructs, tumpukan intrinsik Anda, bangun kembali OpenJDK dan Anda selesai!" Dan dia seperti ini: "Yah, tentu saja, saya melakukannya setiap hari!". Nikita hanya berbicara dengan sangat jelas tentang cara menggunakan, optimasi apa yang sudah ada di OpenJDK dan bagaimana melakukan transaksi langsung dari kode Java.


Garis besar laporan
  • Pendahuluan: mengapa kita perlu multithreading
  • Pendekatan Membangun Algoritma
    • Kunci kasar
    • Kunci tipis
    • Sinkronisasi non-pemblokiran
    • Ketiga tipe tersebut diilustrasikan dalam contoh tugas tentang bank mainan.
  • Multithreading rumit. Apa yang harus dilakukan
    • Transaksi di dunia yang sempurna. Tulis saja atom!
    • Di mana mendapatkan atom dari:
      • Memori Transaksional Perangkat Lunak (STM). Scala STM, NOrec, Coroutines.
      • Hardware Transactional Memory (HTM). Haswell, Kekuatan 8.
      • Memori transaksional hybrid
    • Intel RTM melalui contoh
      • XBEGIN, XEND, XABORT, XTEST
      • Intel RTM + Java
        • Kunci elision
        • dukungan java.util.concurrent.RTMS
      • Intrinsik: juru bahasa, C1, C2
      • Butir kasar / Bebas kunci + RTMSdukung pada grafik

6. Kami profil dengan akurasi untuk mikrodetik dan instruksi prosesor


Unduh slide



Sergey Melnikov ( RainM ) dari Raiffeisenbank membawakan kami laporan profil kedua. Menariknya, sebelum bekerja pada kode Java latensi rendah, ia bekerja di Intel sebagai insinyur kinerja kompiler untuk bahasa C / C ++ / FORTRAN. Laporan ini juga memiliki perf! :-) Ada juga tentang fitur perangkat keras dari prosesor dan teknologi Intel Processor Trace, yang memungkinkan Anda untuk mengambil langkah selanjutnya dalam profiling akurasi dan merekonstruksi pelaksanaan bagian program. Ada beberapa laporan semacam itu (misalnya, Anda dapat menemukan laporan Andi Kleen di Tracing Summit 2015), mereka biasanya meninggalkan lautan pertanyaan dan tidak bersinar dengan kepraktisan sehubungan dengan Jawa. Di sini, kami tidak hanya memiliki orang yang telah mengunjungi kedua dunia (Intel dan Java di bank), tetapi juga tahu cara menjelaskan topik yang rumit dengan jelas.


Garis besar laporan
  • Apa itu dan mengapa itu perlu
    • Area Subjek - aplikasi latensi rendah
    • Contoh Pertukaran Moskow
  • Pilih profiler
    • Bagaimana cara profil? Pengambil sampel dan instrumentasi profil
    • async-profiler
  • Kami mengajarkan profiler untuk membuat profil terperinci
    • Cara menjalankan perf
    • Cara melihat di profil, di tumpukan panggilan
    • perf-peta-agen, sysctl, dmesg ...
  • Menggunakan acara PMU / PEBS di perf
  • Intel Processor Trace - apa itu dan bagaimana profil Java
    • Persyaratan: paket, perangkat keras, sistem operasi
    • Cara menjalankan Skylake-X (Xeon dan i9)

5. VMStructs: Mengapa aplikasi perlu tahu tentang JVM internal


Unduh slide



Andrey ( apangin ) adalah orang yang, berulang kali, mengumpulkan laporan yang paling mendalam dan kuat. Di masa lalu, Joker mengumpulkan sedikit kurang dari seribu orang - ini adalah rekor dalam hal ukuran audiens dalam laporan reguler yang bukan keynote. Dalam hal ini ia dibantu oleh satu dekade pengalaman bekerja pada mesin virtual dan kemampuan untuk menjelaskan teknis hardcore sehingga dapat diulang dalam praktik.


Banyak yang tidak begitu mengerti mengapa menggali mesin virtual jika Anda memiliki aplikasi reguler pada kucing jantan, dengan database dan semuanya seperti yang seharusnya. Laporan ini memiliki argumen yang bagus di tingkat "bagaimana memahami kueri mana yang akan menarik banyak data?" Jika Anda mencoba menginstruksikan kode menggunakan JMX, maka sesuatu yang aneh mulai terjadi dengan kinerja. Pertama, Anda dapat memahami mengapa ini terjadi, dan kedua, apa yang dapat dilakukan tentang hal itu. Menurut pendapat saya, laporan ini berharga tidak begitu banyak dengan seperangkat alat (meskipun ada sedikit tentang helfy di sana), tetapi dengan demonstrasi dari pola pikir pengembang OpenJDK yang benar dan bagaimana berperilaku dalam situasi sulit. Berbicara kehadiran dan menjelaskan arti hal-hal tertentu seperti TLAB, Code Cache, Constant Pool, dll.


4. Coroutines di Kotlin


Unduh slide



Hanya yang malas yang tidak tahu tentang Kotlin sekarang, dan Anda, pembaca, pernah membaca hingga paragraf keempat - jelas bukan dari yang malas. Roman ( elizarov ) adalah mantan pengembang perangkat lunak perdagangan berkinerja tinggi, dan sekarang dia adalah pemimpin di perpustakaan Kotlin. Kami sudah melakukan wawancara dengan Roma tentang coroutine , dan mungkin ada baiknya membaca ulang sebelum atau setelah melihat laporan. Coroutine adalah konsep yang sangat lama, sejak zaman Simula, tetapi tidak semua bahasa utama mendukung mereka, mereka tidak akan segera muncul di Jawa. Tetapi di Kotlin mereka sudah dalam versi stabil.


Laporan ini menjawab semua pertanyaan yang relevan tentang coroutine, yaitu, semua masalah yang relevan di zaman kita secara umum :-)


Garis besar laporan
  • Gambaran umum tentang perkembangan bahasa
  • Pemrograman Panggilan Balik Asinkron
  • Berjangka / Janji / Rx
  • Coroutine di Kotlin
    • loop reguler, penanganan pengecualian, fungsi tingkat tinggi
    • fungsi pesanan tinggi yang disesuaikan
    • semuanya terlihat seperti dalam memblokir kode!
  • Bagaimana cara kerjanya?
    • fungsi menangguhkan, kode dengan titik suspensi
  • Integrasi
    • Retrofit async
    • Panggilan balik dan lanjutan (panggilan / cc dari Skema!)
    • contlinx-coroutines-core
      • jdk, jambu biji, nio, reaktor, rx1, rx2
  • Bagaimana cara menjalankan coroutine?
  • async / tunggu
    • Mengapa tidak ada kata kunci yang menunggu di Kotlin?
    • Konkurensi itu sulit. Anda perlu melakukan ini secara eksplisit.
    • Pendekatan Kotlin untuk async
  • Konsep Corutin: utas yang sangat ringan
  • Interop dengan Java
  • Synchronous Coroutines - menghasilkan / menghasilkan
    • Contoh angka-angka Fibonacci
  • Communicating Sequential Processes (CSP)
  • Perpustakaan vs bahasa
    • Inti lidah harus kecil!
    • Kata kunci: async / menunggu, hasilkan / hasilkan
    • Pengubah: tunda
    • kotlinx-coroutines: launch, async, runBlocking, future, delay, Job, Deferred, ...

3. Di pundak para raksasa: bahasa yang dipelajari Kotlin


Unduh slide



Laporkan tentang Kotlin dari salah satu pembuat bahasa - apa lagi yang dibutuhkan untuk kebahagiaan? Inti dan struktur presentasi benar-benar berbeda dari laporan Elizarov sebelumnya. Novel ini menceritakan tentang hal-hal spesifik - apa, bagaimana dan mengapa dalam desain coroutine, dan bagaimana menggunakannya, dan saya perlu ini untuk meningkatkan keterampilan pemrograman di Kotlin. Di sini Andrei ( abreslav ) berbicara tentang hal-hal yang meningkatkan pengetahuan secara umum dalam kehidupan dan memberikan pemahaman tentang tempat seseorang di dunia. Jika Anda melihat semua bahasa ini dengan mata Anda sendiri - Jawa, C #, Scala, Groovy, Python, Gosu - ini bahkan lebih menarik, karena ada alasan untuk diskusi (pengunjung konferensi mungkin dapat mengambil kesempatan dan benar-benar mendiskusikan pemahaman mereka tentang hal-hal yang hidup di area diskusi ) Ini adalah "tujuh bahasa dalam tujuh minggu," tetapi hanya dalam satu jam.


Ngomong-ngomong, kami baru-baru ini melakukan wawancara terpisah dengan Andrey, tetapi ini bukan hanya tentang Kotlin, tetapi tentang banyak hal yang berbeda.


2. Petualangan Holmes Senior dan Junior Watson di Dunia Pengembangan Perangkat Lunak


Unduh slide



Membuat presentasi yang melibatkan lebih dari satu pembicara sangat sulit. Seringkali terlihat seperti ini: separuh dari waktu salah satunya berdiri di atas panggung dan bosan, dan itu terlihat sangat membosankan. Apa yang dapat Anda katakan tentang kinerja bersama Baruch Sadogursky dan Evgeny Borisov ( EvgenyBorisov ) - sebaliknya, itu dilakukan dengan sangat baik, itu adalah karya seni. Bintang-bintang datang bersama dalam urutan yang benar, dan dua pembicara top dengan pengalaman hebat dan praktik melakukan laporan berpasangan muncul di panggung untuk membahas topik yang menarik bagi mereka berdua. Mengapa saya menekankan hal ini - biasanya pemirsa tidak tahu apa kreasi dari presentasi semacam itu, dan mereka menerima begitu saja.


Tetapi hasilnya membenarkan investasi. Nilailah sendiri, ini adalah keynote malam, laporan konferensi terbaru, di mana orang-orang sudah kehabisan timah selama dua hari, mereka ingin tidur, seseorang harus terbang pulang sekarang dan seterusnya. Namun, lebih dari 600 orang ditinggalkan di aula pasti.


Ini bukan laporan referensi, tetapi laporan menunjukkan, itu harus diawasi. Di dalamnya, Holmes dan Watson akan mengungkapkan beberapa teka-teki yang Anda temui, temui, atau temui dalam pengembangan sehari-hari. Tidak akan ada usus pengumpul sampah dan bytecode, tetapi akan ada alat, perpustakaan dan kerangka kerja yang membingungkan pengembang biasa dalam rutinitas sehari-hari mereka, menyebabkan downtime, profil tenggat waktu, dan depresi yang berlarut-larut. Dalam praktiknya, dalam laporan ini, Sherlock dan Watson menyelamatkan dahi Anda dari facepalms dan garu yang telah diinjak seseorang.


Karenanya, tidak akan ada ringkasan singkat di sini - cukup mulai video dan tonton.


1. Boot diri Anda, Spring akan datang


Unduh slide




Baruch + Gamow, Baruch + Borisov, siapa yang hilang dari penulis laporan pasangan populer? Itu benar, Borisov + Tolkachev ( tolkkv ). Laporan keren lainnya, yang, tidak menjadi keynote, mengumpulkan rekor jumlah peserta - lebih dari seribu. Ada begitu banyak materi, dan sangat menarik bahwa dua slot dialokasikan untuk itu dalam program konferensi - dan Anda harus menonton dua video di YouTube sesuai.


Bertahun-tahun yang lalu, programmer Java menggunakan "baru" untuk membuat layanan. Mereka melakukan banyak tindakan manual dan konfigurasi campuran dengan logika bisnis. Mereka bahkan menggunakan teknik salin-tempel. Banyak baris kode celaka ditulis, yang kadang-kadang berhasil.


Lalu datanglah Musim Semi. Banyak yang telah berubah dengannya ... Kami mendapat banyak "keajaiban" dari silinder ajaib Spring, dan kode kami menjadi lebih bersih, sederhana, dan dapat dipelihara.


Dan Spring Boot muncul. Di satu sisi, ini memecahkan ribuan masalah yang sudah ada: konflik versi, tugas konfigurasi, bekerja dengan nampan infrastruktur, masalah pengaturan lingkungan, dan, tentu saja, meluncurkan atau menyebarkan aplikasi, termasuk membangun jar / arsip perang. Di sisi lain, Spring Boot telah menambahkan lebih banyak sihir ke dalam silinder ajaib kami. Akibatnya, ada dua skenario:


  • Semuanya bekerja dengan baik, meskipun tidak ada yang tahu caranya.
  • Tidak ada yang berhasil dan tidak ada yang tahu mengapa.

Laporan ini mengungkap rahasia dasar sihir Spring Boot. Anda akan memahami prinsip dan konvensi dasar untuk aplikasi Boot Musim Semi yang khas. Tugas Cyril dan Eugene, sehingga semua keajaiban dari silinder mengubah Anda menjadi proses yang jauh lebih transparan dan Anda tidak hanya dapat menikmati ketika semuanya bekerja, tetapi juga memahami esensi masalah dan bisa menyelesaikannya tanpa melibatkan ambulans dan layanan lain yang tersedia di panggilan darurat.


Kesimpulan


Butuh beberapa hari untuk menonton semua video dari daftar. Itu tidak mudah, tetapi jelas terlihat bahwa itu sepadan. Pada kenyataannya, ada lebih banyak laporan di konferensi, dan melihat sepuluh di antaranya merupakan awal yang baik untuk cara yang jauh lebih besar. Jika Anda juga akan menonton laporan ini - jangan terlalu malas untuk menulis ulasan Anda di komentar di Habré!


Sementara itu, sudah dimungkinkan untuk membeli tiket untuk JPoint berikutnya. Ini akan diadakan 5-6 April 2019 di Pusat Kongres WTC. Hingga 1 Januari, masih ada peluang untuk membeli tiket dengan harga murah !

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


All Articles