ベストJPoint 2018論文Java / JVM and its Performance、Kotlin、Spring、Docker

JPoint 2018のレポヌトのビデオをYouTubeにすでに投皿しおおり、特にHabréのJavaハブに぀いおは、䌚議の蚪問者に応じお、それらのベストの䌝統的な遞択を行いたした。







い぀ものように、䞊郚に「ゞュニア」レポヌトがあり、最埌に最高の評䟡がありたす。 もちろん、これはあるレポヌトが別のレポヌトよりもはるかに悪いこずを意味するものではありたせん。蚈算方法を倉曎するず、堎所が簡単に倉曎される可胜性がありたす。 実際には倉曎したした。珟圚、レポヌトに参加しおいる参加者の数を考慮しお、「゜フトクォヌラム」バヌゞョンの評䟡が䜿甚されおいたす。 このアプロヌチには欠点がありたすたずえば、単に聎衆に遞択の䜙地がないずいう理由だけで、通垞のレポヌトよりも基調講挔をする人が倚くなりたすが、党䜓的に䜕が起こったのかがよくわかりたす。







カットの䞋-最高のレポヌトのビデオ、プレれンテヌションぞのリンク、短い説明、および完党なプレむリストぞのリンク。













フルプレむリスト



以䞋で説明するすべおのビデオを含む完党なプレむリストは、 ここから入手できたす 。







10. JVMアプリケヌション甚のLinuxコンテナヌパフォヌマンスツヌル



→ スラむドをダりンロヌド









コンテナ革呜は皆を垭巻したした-Javaの䞖界はそれなしではありたせんでした。 それでも、Javaには垞に問題があり、特定の問題ず機胜がありたす。これらに぀いおは、Sasha Goldsteinのレポヌトで説明したす。







サヌシャは、ハヌドコアパフォヌマンスの連続制䜜者です。 昚幎JPointで、圌はJVMでBerkeley Packet Filterを䜿甚するこずに぀いお玠晎らしい講挔を行いたしたYouTubeの投皿を芋るこずを匷くお勧めしたす。圌がコンテナ化の詳现な怜蚎に入る点にたどり着くのは時間の問題でした。 䞖界は雲ず枯湟劎働者になり、それが私たちに倚くの新しい問題をもたらしたす。 お気づきかもしれたせんが、ほずんどの䜎レベルのデバッグおよびプロファむリングシステムは、それらをコンテナに適甚した埌、さたざたな機胜や劚害物で倧きくなりすぎおいたす。 Sashaは、BCCやperfを含むGNU / Linuxプラットフォヌムで最新のツヌルを䜿甚するずいうプリズムを通しお、䞻芁なシナリオCPU䜿甚率、IO応答性、共有デヌタベヌスぞのアクセスなどでスケヌトをしたした。







誰もがこの特異性を必芁ずするわけではありたせん。 これは、レポヌトが10䜍に過ぎなかった理由の1぀です-箄200人が出垭したしたトルカチョフずボリ゜フからの1,000人以䞊ず比范しおください。私たちの評䟡蚈算アルゎリズムは聎衆の芏暡に非垞に敏感です。







䜕らかの方法でコンテナに接続しおいる人は、このレポヌトを衚瀺する必芁がありたす。 無数のナヌティリティずその䜿甚方法を完党に䞊べ替えるこずにより、すべおの詳现を独立しお怜玢する時間を倧幅に節玄できたす。







たた、トップ10からのSashaのレポヌトは、単䜍時間あたりの実甚的な情報量の点でほが最も密床が高いこずにも泚意しおください。 ほずんどすべおのスラむドから、䟿利なものを自分でコピヌできたす。 詳现な説明を行わないために、プレれンテヌションの衚面構造のみを瀺したす。







レポヌト抂芁
  • コンテナはどのように配眮されおいたすか

    • 制埡グルヌプCPU、メモリ、ブロックI / O;
    • 名前空間pid名前空間、マりント名前空間、ネットワヌク名前空間。
  • 問題の違い

    • ホスト䞊;
    • コンテナ内;
    • ゜リュヌションの問題の䟋

      • JVMぞの接続
      • JVMパフォヌマンスデヌタ
    • ホスト䞊のJVMツヌルのデモ。
  • リ゜ヌス情報ツヌル

    • 監芖甚のサむドカヌ。
    • ドッカヌの統蚈。
    • systemd-cgtop;
    • htop + cgroup ID;
    • nsenterたたはdocker exec;
    • コンテナリ゜ヌスのデモ監芖。
  • CPUコンテナヌのプロファむリング

    • ホストのperf-G、シンボルマッピング、PIDマッピング、perfマップの共有perf-map-agent。
    • フレヌムグラムを䜿甚したデモ。 oos;
    • 非特暩モヌドのコンテナのパフォヌマンス。
    • 正盎プロファむラ、非同期プロファむラ、perf vs非同期プロファむラ。
    • デモasync-profiler;
    • BCCはプロファむリングツヌルです倚くの問題を自動的に解決したすが、Linux 4.9以降でのみ機胜したす。
    • 調敎;
  • その他の監芖方法

    • cAdvisor、SysDig、New Relic、DataDog ...


9.幎に䞀床、庭が咲く「1回だけ」のApache Kafkaのセマンティクスの解析



→ スラむドをダりンロヌド









ビクタヌガモフは、他のスピヌカヌよりも完党に䞍公平な利点がありたす。 これは、200件近くのDebriefingポッドキャストの問題、O'Reillyによる倚数のレポヌト、テキスト、投皿、さらには「Enterprise Web Development」ずいう本の著者でもある人物です。 Gamowの存圚自䜓が、より良い結果をもたらしたす。 圌はカフカに぀いおではなく、窓蟺でのれラニりムの成長に぀いお同じむントネヌションで語るこずができるず確信しおおり、これはただ魅力的です。







ここには特別なケヌスがありたす。「exactly once」のセマンティクスに関する最初は倧雑把なトピックです。 Kafkaは、埓来のメッセヌゞ配信セマンティクスの凊理を必芁ずする、すべおを異垞な芏暡で䜿甚するように急ぎたした。 口に指を入れないでください。圌らは正しいプロトコルずメッセヌゞ圢匏で倖出先で靎を倉え、必芁なこずをすべお行いたした。 レポヌト党䜓で、Victorは、内郚での配眮方法ずその圱響に぀いお説明しおいたす。







良い点ず悪い点の2぀のニュヌス。 良いすべおがKafkaで蚭定されおいたす。 悪いすべおがKafkaで蚭定されおいたす。 それず䞀緒に暮らすには、それがどのように機胜し、汚れた手でどこに登るのかを理解する必芁がありたす。







ビクタヌに䜕らかのスムヌゞヌを期埅できたすが、必死のハヌドコアを手に入れたので、蚈画は次のようになりたす。







レポヌト抂芁
  • カフカの玹介

    • トピックス
    • パヌティション
    • ログずオフセット
    • 手がかりずリヌダヌ
    • 顧客生産者ず消費者
  • プロデュヌサヌ

    • 䟋での仕組み
    • 生産者プロトコル
  • 消費者

    • 䟋での仕組み
    • 消費者プロトコル
  • 凊理モデル

    • 読み取り、カりント、蚘録
    • グリッチの皮類すべお壊れた、ゟンビ
  • セマンティクスの凊理

    • 少なくずも1回、最倧1回、正確に1回
  • セマンティクス「1回だけ」

    • 䟋付き
    • 匱点

      • 安党でない再詊行
      • 非原子オフセット蚘録
      • ゟンビ
  • 最初の匱点の修正べき等プロデュヌサヌ
  • 2番目の匱点を修正したす。

    • シャンディランポヌトスナップショット

      • 原理
      • 倱敗に耐える方法は

        • ハヌド凊理䞭にクラッシュする
        • ゜フトスナップショットの削陀前たたは削陀䞭にクラッシュしたす
    • カフカでの取匕

      • 2皮類のマヌカヌCOMMIT、ABORT
      • 倚くのパヌティションでの原子蚘録含む_Consumer_offsets
  • 3番目の匱点を修正ゟンビフェンシング
  • 消費者読曞隔離
  • ゚ンドツヌ゚ンドのEOS

    • Kafka接続゜ヌス
    • カフカストリヌム
    • カフカコネクトシンク


8. Kafka StreamsずFirehose APIを䜿甚したロシアのハッカヌずの戊い



→ スラむドをダりンロヌド









再びカフカ たたガモフ はい、そしお今、Baruch Sadogursky jbaruch ず䞀緒に。 それでも、このレポヌトはスムヌゞヌではありたせんが、BintrayプラットフォヌムBaruchが神で、Apache KafkaVictorが担圓ずFirehoseの助けを借りお、行動パタヌンを分析し、倧量のデヌタを凊理する方法に関する非垞に具䜓的な実甚的なものです。







Kafkaの内郚に関する以前のレポヌトに245枚のスラむドがあった堎合、このスラむドには17枚しかありたせん。これは、監芖する必芁があるためです。 これは䞻に、䞻芁なデモずラむブデモの間の掻発な察話です。 残らず、vidosikを開いお芋おください。







7. Javaのハヌドりェアトランザクションメモリ



→ スラむドをダりンロヌド









Nikita Koval ndkoval は、KotlinチヌムのJetBrainsの研究者であり、ISTオヌストリアの博士課皋の孊生です圌は講挔時にDevexpertsにいたした。 圌のレポヌトは「ロシアのハッカヌ」ずはたったく察照的です。なぜなら、それは簡単で楜しい読み物ではなく、VMの耇雑な内郚構造に関する物語だからです。 スラむドを芋るず、150枚のシヌトがあり、そのほずんどがコヌドです。







2018幎の初めにJBreakにいた堎合、完党に異なるこずに぀いおのNikitaの物語を芋぀けたかもしれたせん-珟代のマルチコアアヌキテクチャず特別なアルゎリズムのパワヌを䜿甚しお高速なマルチスレッドハッシュテヌブルを曞くこずに぀いお。 同意しお、ニキヌタにはスタむルがありたす。 すぐにシプリ゚フを思い出したす。







今回は、トランザクションメモリに぀いお説明したす。トランザクションメモリは、珟代のプロセッサに埐々に登堎したすが、JVMの䞖界の普通の人にどのように䜿甚するかはただ䞍明です。 もちろん、JVMの倖では、すべおがよりシンプルです。 しかし、通垞のSpring Web開発者に「はい、vmstructを線集し、組み蟌み関数を重ね、OpenJDKを再構築すれば完了です」 そしお、圌は次のようなものです。「たあ、もちろん、毎日やる」 Nikitaは、䜿甚方法、OpenJDKにすでにある最適化、およびJavaコヌドから盎接トランザクションを実行する方法に぀いお非垞に明確に語っおいたす。







レポヌト抂芁
  • はじめにマルチスレッドが必芁な理由
  • アルゎリズム構築アプロヌチ

    • ラフロック
    • 薄いロック
    • ノンブロッキング同期
    • 3぀のタむプはすべお、おもちゃの銀行に関するタスクの䟋に瀺されおいたす。
  • マルチスレッドは耇雑です。 どうする

    • 完璧な䞖界での取匕。 アトミックを曞くだけです
    • アトミックを取埗する堎所

      • ゜フトりェアトランザクションメモリSTM。 Scala STM、NOrec、コルヌチン。
      • ハヌドりェアトランザクションメモリHTM。 ハスりェル、パワヌ8。
      • ハむブリッドトランザクションメモリ
    • 䟋によるIntel RTM

      • XBEGIN、XEND、XABORT、XTEST
      • Intel RTM + Java

        • ロックの省略
        • java.util.concurrent.RTMSupport
      • 組み蟌み関数むンタヌプリタヌ、C1、C2
      • 粗芖化/ロックフリヌ+ RTMチャヌトでのサポヌト


6.マむクロ秒およびプロセッサ呜什たで正確にプロファむルしたす



→ スラむドをダりンロヌド









RaiffeisenbankのSergey Melnikov RainM が2番目のプロファむリングレポヌトを提䟛しおくれたした。 興味深いこずに、䜎遅延のJavaコヌドに取り組む前は、IntelでC / C ++ / FORTRAN蚀語のコンパむラパフォヌマンス゚ンゞニアずしお働いおいたした。 このレポヌトにはパフォヌマンスもありたす :-)プロセッサのハヌドりェア機胜ずIntelプロセッサトレヌステクノロゞに぀いおもありたす。これにより、プロファむリング粟床の次のステップを実行し、プログラムセクションの実行を再構築できたす。 そのようなレポヌトはほずんどありたせんたずえば、Tracing Summit 2015でAndi Kleenレポヌトを芋぀けるこずができたす。通垞、倚くの疑問が残り、Javaに関しおは実甚性に欠けおいたす。 ここでは、䞡方の䞖界IntelずJavaの䞡方を蚪れた人だけでなく、耇雑なトピックを明確に説明する方法も知っおいたす。







レポヌト抂芁
  • それは䜕で、なぜ必芁なのか

    • サブゞェクト゚リア-䜎遅延アプリケヌション
    • モスクワ取匕所の䟋
  • プロファむラヌを遞択する

    • プロファむルする方法 サンプリングおよび蚈装プロファむラヌ
    • 非同期プロファむラヌ
  • プロファむラヌに詳现なプロファむルを䜜成するように教えたす

    • perfの実行方法
    • 呌び出し履歎でプロファむルを確認する方法
    • perf-map-agent、sysctl、dmesg ...
  • perfでPMU / PEBSむベントを䜿甚する
  • Intel Processor Trace-それは䜕であり、Javaをプロファむルする方法

    • 芁件パッケヌゞ、ハヌドりェア、オペレヌティングシステム
    • Skylake-XXeonおよびi9で実行する方法


5. VMStructsアプリケヌションがJVM内郚に぀いお知る必芁がある理由



→ スラむドをダりンロヌド









アンドレむ apangin は、䜕床も䜕床も、最も深く匷力なレポヌトを収集する人です。 過去には、ゞョヌカヌは1,000人匱の人々を集めおいたした。これは基調講挔ではない定期報告曞での聎衆芏暡の蚘録です。 この䞭で圌は、仮想マシンでの10幎の経隓ず、技術的なハヌドコアを説明する胜力に助けられ、実際にそれを繰り返すこずができたす。







Tomcatに通垞のアプリケヌションがあり、デヌタベヌスがあり、すべおが正垞である堎合、倚くの人はなぜ仮想マシンを掘り䞋げるのかをよく理解しおいたせん。 このレポヌトには、「どのク゚リが倚くのデヌタをプルするかを理解する方法」のレベルで良い議論がありたす。 JMXを䜿甚しおコヌドを指瀺しようずするず、パフォヌマンスに奇劙なこずが起こり始めたす。 第䞀に、これが起こる理由を理解でき、第二に、それに぀いお䜕ができるかを理解できたす。 私の意芋では、このレポヌトはツヌルのセットではそれほど䟡倀はありたせんがそこには倚少の助けはありたすが、正しいOpenJDK開発者の考え方ず困難な状況での振る舞いのデモンストレヌションがありたす。 プレれンスに぀いお話し、TLAB、コヌドキャッシュ、コンスタントプヌルなどの特定のものの意味を説明したす。







4.コトリンのコルヌチン



→ スラむドをダりンロヌド









怠laな人だけがKotlinを知らないので、読者のあなたはか぀お4番目の段萜たで読んだこずがありたす-怠け者からではありたせん。 ロヌマン elizarov は高性胜トレヌディング゜フトりェアの元開発者であり、珟圚はKotlinラむブラリのリヌドです。 コルヌチンに぀いおはすでにRomaずのむンタビュヌを行っおおり、レポヌトを芋る前たたは埌にもう䞀床読む䟡倀があるかもしれたせん。 Simulaの時代からコルヌチンは非垞に叀い抂念ですが、すべおの䞻流蚀語がコルヌチンをサポヌトしおいるわけではなく、Javaにはすぐには登堎したせん。 しかし、Kotlinでは既に安定バヌゞョンになっおいたす。







このレポヌトは、コルヌチンに関するすべおの関連する質問、぀たり、䞀般的に私たちの時代のすべおの関連する問題に答えたす:-)







レポヌト抂芁
  • 蚀語開発の党䜓像
  • 非同期コヌルバックプログラミング
  • 先物/玄束/ Rx
  • コトリンのコルヌチン

    • 通垞のルヌプ、䟋倖凊理、高階関数
    • カスタム高階関数
    • コヌドをブロックするず、すべおが次のようになりたす
  • どのように機胜したすか

    • 䞭断機胜、䞭断ポむントのあるコヌド
  • 統合

    • レトロフィット非同期
    • コヌルバックず継続Schemeからの呌び出し/ cc
    • contlinx-coroutines-core

      • jdk、guava、nio、reactor、rx1、rx2
  • コルヌチンを実行する方法は
  • 非同期/埅機

    • Kotlinにawaitキヌワヌドがないのはなぜですか
    • 同時実行は困難です。 これを明瀺的に行う必芁がありたす。
    • 非同期ぞのコトリンのアプロヌチ
  • Corutinの抂念非垞に軜いスレッド
  • Javaずの盞互運甚
  • 同期コルヌチン-生成/生成

    • フィボナッチ数の䟋
  • 順次プロセスの通信CSP​​
  • ラむブラリヌvs蚀語

    • 舌の芯は小さくなければなりたせん
    • キヌワヌドasync / await、generate / yield
    • 修食子サスペンド
    • kotlinx-coroutines起動、非同期、runBlocking、将来、遅延、ゞョブ、遅延、...


3.巚人の肩の䞊コトリンが研究した蚀語



→ スラむドをダりンロヌド









蚀語の䜜成者の1人からKotlinに぀いお報告しおください。幞犏に必芁なものは他にありたすか プレれンテヌションの本質ず構造は、゚リザロフの以前のレポヌトのものずはたったく異なりたす。 小説は特定の事柄-コルチンの蚭蚈における䜕、どのように、なぜ、そしおそれをどのように䜿甚するかに぀いお語りたした。Kotlinのプログラミングスキルを向䞊させるためにこれが必芁です。 ここでは、アンドレむ abreslav が人生の博識党般を改善し、䞖界での自分の䜍眮を理解するこずに぀いお語っおいたす。 Java、C、Scala、Groovy、Python、Gosu-これらの蚀語をすべお自分の目で芋た堎合、これはさらに興味深いものです。なぜなら、議論の理由があるからです これは「7週間で7蚀語」ですが、わずか1時間です。







ずころで、私たちは最近アンドレむず別のむンタビュヌを行いたしたが、それはコトリンだけでなく、倚くの異なるこずに぀いおです。







2.゜フトりェア開発の䞖界におけるシニアホヌムズずゞュニアワト゜ンの冒険



→ スラむドをダりンロヌド









耇数のスピヌカヌが関䞎するレポヌトを䜜成するこずは非垞に困難です。 倚くの堎合、これは次のようになりたす。半分の時間はステヌゞに立っお退屈し、非垞に退屈に芋えたす。 Baruch SadogurskyずEvgeny Borisov EvgenyBorisov の共同挔奏に぀いお蚀えるこず-それどころか、芋事に行われた、それは芞術䜜品です。 星は正しい順序で集たり、玠晎らしい経隓ずペアのレポヌトを実行する実践を行った2人のトップスピヌカヌがステヌゞに登堎しお、䞡者にずっお興味深いトピックに぀いお話し合いたした。 なぜこれを匷調するのか-通垞、芖聎者はそのようなプレれンテヌションの䜜成が䜕であるかを知らず、圓然のこずずみなしたす。







しかし、結果は投資を正圓化したした。 あなた自身の刀断で、これは倕方の基調講挔であり、最新の䌚議報告曞であり、その間、人々はすでに2日間の錫で疲れ果おおおり、眠りたい、誰かが今すぐ家に垰る必芁があるなどです。 それにもかかわらず、600人以䞊が確かにホヌルに残っおいたした。







これはレポヌトレポヌトではなく、レポヌトを衚瀺するものであり、監芖する必芁がありたす。 その䞭で、ホヌムズずワト゜ンは、日垞の開発で遭遇した、遭遇した、たたは遭遇するいく぀かのパズルを明らかにしたす。 ガベヌゞコレクタヌやバむトコヌドのガットはありたせんが、通垞の開発者を日垞業務で困惑させ、ダりンタむム、締め切りのプロファむリング、長期にわたる䞍況に぀ながるツヌル、ラむブラリ、フレヌムワヌクがありたす。 実際には、このレポヌトでは、SherlockずWatsonは、誰かがすでに螏み぀けた顔の手のひらや熊手から額を守りたす。







したがっお、ここでは簡単な芁玄はありたせん。ビデオを開始しお芖聎するだけです。







1.自分で起動しおください、春が来おいたす



→ スラむドをダりンロヌド











Baruch + Gamow、Baruch + Borisov、人気のあるペアレポヌトの著者の䞭で行方䞍明になっおいるのは誰ですか そうです、ボリ゜フ+ トルカチョフ  tolkkv 。 基調講挔ではないが、蚘録的な数の参加者を集めた別のクヌルなレポヌト-千人以䞊。 非垞に倚くの資料があり、䌚議プログラムで2぀のスロット党䜓が割り圓おられたため、YouTubeで2぀のビデオ党䜓を芖聎する必芁がありたす。







䜕幎も前、Javaプログラマヌは「新芏」を䜿甚しおサヌビスを䜜成しおいたした。 倚くの手動アクションを実行し、構成をビゞネスロゞックず混合したした。 圌らはコピヌ・ペヌスト技術も䜿甚したした。 惚めなコヌドの倚くの行が曞かれおいたしたが、時にはうたくいきたした。







それから春が来たした。 圌ず䞀緒に倚くのこずが倉わりたした... Springのマゞックシリンダヌから倚くの「マゞック」を取埗し、コヌドがよりクリヌンでシンプルで保守可胜になりたした。







そしお、Spring Bootが登堎したした。 䞀方で、バヌゞョンの競合、構成タスク、むンフラストラクチャビンの操䜜、環境のセットアップの問題、そしおもちろん、jar / warアヌカむブの構築を含むアプリケヌションの起動たたはデプロむなど、既存の数千の問題を解決したす。 䞀方、Spring Bootはマゞックシリンダヌにさらに倚くのマゞックを远加したした。 その結果、2぀のシナリオがありたす。









このレポヌトは、Spring Bootマゞックの基本的な秘密を明らかにしおいたす。 䞀般的なSpring Bootアプリケヌションの基本的な原則ず芏則を理解できたす。 CyrilずEugeneのタスク。シリンダヌからのすべおの魔法があなたにずっおより透明なプロセスに倉わり、すべおがうたくいくずきだけでなく、問題の本質を理解し、救急車や他のサヌビスの助けなしで問題を解決するこずができたす緊急電話。







おわりに



リストからすべおのビデオを芋るのに数日かかりたした。 簡単ではありたせんでしたが、それだけの䟡倀があるこずは明らかです。 珟実には、カンファレンスにはさらに倚くのレポヌトがありたしたが、それらのトップ10を衚瀺するこずは、はるかに倧きな方法の良い出発点です。 これらのレポヌトもご芧になる堎合は、怠brにならないで、Habréのコメントにレビュヌを曞いおください。







䞀方、次のJPointのチケットを賌入するこずはすでに可胜です。 2019幎4月5〜6日にWTC Congress Centerで開催されたす。 1月1日たで、䜎䟡栌でチケットを賌入する機䌚がただありたす



All Articles