ビッグデータのテンセントの分野におけるコナJDKの練習と開発

 最近、クラウド+技術コミュニティサロン「Tencentのオープンソース技術は、」終わりが来ます。サロンは、技術専門家テンセントの数を招待し、テンセントの深さは、小さなTubeMQ、コナJDK、TARSとMedicalNetをオープンソースプロジェクトTencentOSを発表します。この記事では、ヤンXiaofengテンセントは、OpenJDKのベースの自習コナJDKのオープンソースプロジェクトの詳細を先生についてです。

A、テンセントコナ起源

1. OpenJDKの

多くの場合、人々はそれが何であるかを最終的に、OpenJDKのについて話していることを聞きますか?Java SEの仕様の自由とオープンソースの参照実装:私たちはオープンJDK手段の定義の通常の意味で、Java SEの、ME、EEおよびその他の仕様については聞いたことがあると信じています。

参加し、GNUフリーソフトウェアのビルドのバージョンに完全に基づいていますIcedTeaのを、公開RedHatの、二年目、2006年の早いが、日がホットスポット、コンパイラおよびクラスライブラリを含め、徐々にオープンソースコアJavaプラットフォームに約束しました。

非常に大きな変化は、OracleがSunのの手からスチュワードシップを取ったときに2010年が発生し、IBMが参加し、Apacheのハーモニーをあきらめ、AppleはOpenJDKのに参加しました。

2014年には、JDK 8のリリース、それははるかに最も高いバージョンの最速採用と受け入れている、まだ主な生産環境です業界は今年のショーを調査、JDK8は、ほぼすべてのメーカーはまだJDKの主な生産バージョンです。

2017年、研究開発の3年後、JAVA 9リリース、今年の変化を目まいがするような一連の。

まず、技術レベル、ネイティブJDKモジュラーシステムの導入からプロジェクトジグソーパズルである、 - JPMS(Javaプラットフォームモジュールシステム) 、JPMS Java言語とJDKの今後の急速な発展のためには、いくつかの障害物を取り除く、それはまた、いくつかの互換性をもたらしますJDK 8人のための一般的な交換を期待されるような問題は、JDK 9は普及しませんでした。

第二に、Javaは時間駆動型の出版モデルからの移行を駆動するために備わっています。これは、クラウドコンピューティングの分野の急速な発展に、Javaは非常に大きな課題をもたらすことによるものです。

伝統的な出版モデルは、理想的には約2年の期間に解放するために、私たちは、JDK 9の実際の開発には、まだいくつかの作業計画が行われていない場合であっても、約一年のためにドラッグしています。

代わりに、すでに技術の多数につながる長い開発サイクルは、遅延が大幅にスピードJava開発および反復を減らし、生産段階に入ることができません。この変更に対応するために、JDKは6ヶ月の期間のための新しい出版モードに切り替えます。

第三に、OracleのJDKオープンソース商業用不動産、および変更OracleのJDKの価格戦略は、大幅にJDKの無料サポート期間を削減します。

良いニュースは、Javaは、「料金」の嵐を経験しながら、実際には、今日の活動と参加のOpenJDKコミュニティが大幅に改善されているということです。テンセント、マイクロソフトや他のベンダーは、コミュニティに参加しました、そして積極的にOpenJDKのに貢献し始めています。

2. OracleのJDK

それとOracle JDKのOpenJDKとの関係は何ですか?単純な比較を行うと、Oracle JDK 8は、OpenJDKののスーパーセットと考えることができ、独自の商業用不動産が含まれています。

しかし、大規模な単一のアプリケーションからの開発JDK11、大きな変化施さ全体JDKの製品形態、後、パッケージ、Oracleなど一部のデカップリング、JMC、OpenJFXや他の独立したJDKを作りました唯一のライセンス差があるOracleのJDK 11とOpenJDKの11ので、その商業的な特性はまた、アウト開いています。

3.テンセントコナJDK

テンセントコナJDK JDKリリースはOpenJDKの主枝の開発に基づいており、いくつかの原則に準拠しています。

まず、それは無料ですが、それは確実に使用することができます。

第二に、我々はこのJDK8、JDK11のLTS版のため、長期的な、信頼性の高いサポートを提供します。

テンセント大規模な負荷の検証後に第三に、コナJDK、環境対応を生産する能力を確保します。

だから、テンセントコナオープンJDKの間との関係は何ですか?アイデアはそれを持っている長所と開発は何ですか?

まず第一に、私たちは「友人・フォーク」コナにあるコミットされており、互換性を確保コナを最大化します。コナチームと内部ユーザーやパートナーJDKチームの大多数は、大規模な通信を行うと、互換性と安定性、信頼性、およびパフォーマンスの高い標準を提供します。

実際には、傷つけるJDKの互換性は、ユーザーに将来の生産の移行コストとメンテナンスコストをもたらすでしょう、技術投資のための責任を負いませんので、コナJDKは、技術革新と革新するつもりはありません。

また、テンセントは、ビッグデータ、クラウドおよびその他のJava / JVMの負荷の膨大な量に基づいて、我々は、シーンを共有することになり、このスケールでの経験と技術の降水量を練習し、徐々にバグ修正、機能強化機能または使用に皆のためのオープンソースを形成します。

コミュニティの関与の観点から、我々は、OracleのJavaオープンJDKコミュニティと製品チームとの通信を行ってきました、そしてコミュニティ全体がrentier行わない、自分自身を依頼するガバナンスコミュニティの基準に厳密に従って、原則の上に明確にメッセージを伝えるために。

二、OpenJDKの技術動向

OpenJDKの自体に戻る、懸念は今それを持っているの主な傾向は何ですか?

全体概要ジョン・ローズ(OracleのJVMアーキテクト)。

最初のJavaオンのJava

JavaのオンのJava、Java言語の開発はJVM仮想マシンによって定義されています。

たとえば、主にC ++で開発され、現在のC1 / C2 JIT(ジャストインタイム)コンパイラ、コードは、GraalVMや他のプロジェクトでのOracle改善することは非常に困難であった、とJavaベースのJVM仮想マシンの徐々に練習、その技術の意志徐々にJVMの将来の核となります。

一般的には、実験的な段階にとどまっているが、非常に印象的な結果を示しています。例えば、非常に画期的なを向上させることができますように、簡単なプログラムでも30倍の改善を見ることができ、そのネイティブ・マシンとSubstrateVMを使用して速度の点でとメモリフットプリントのスタートアップ。

それはクローズ世界仮定に基づいているが、ジャワの動特性はまだそこまでの距離の広範な実践しているが、将来を期待することができ、選択肢を持っています。

債務の一部またはJVMのJava言語の設計、実装を返済2

Javaの設計、元のデータ型に加えて、他のすべてのオブジェクト。データ(DATA)、多くの場合、オーバーヘッドはなく、データのために自身が必要とするオーバーヘッドを大幅オブジェクトヘッダ、多型サポート。

同時に、メモリレイアウトの複雑さをもたらす複雑な関係を参照するには、現代のCPUのキャッシュ構造をフルに活用することは困難です。Java言語は、効率的に、優雅に複雑なデータ構造とパラダイムの一部を表現し、これらの問題は、ヴァルハラ、他のプロジェクトに解決されることも困難です。

3. Javaの構文の変更

アンバー/ヴァルハラ他のプロジェクトでJava構文緩やかな進化は、効率性とコード品質のコード開発を向上させます。そのようなコードの可読性を向上させるコーディングコンテキスト推論を簡素化することによって提供されるローカル変数の型推論としてJAVA 10。プレビューは、switch式のフォローアップ相であるというように、代わりの文の発現を介して、大幅に語学力を向上、開発効率と優れた実践を向上させます。

4.操作ハードウェアレベルのキャパシティ・ビルディング

OpenJDKのより速く、より直接的に主にパナマや開発中の他のプロジェクトのために、ハードウェアレベルを操作すること。このような大規模なデータの力をサポートする、機械学習、ネイティブコードと対話するためのより良い能力、ベクトル計算機能などを提供するなどの演算子。

もちろん、そこに並行プログラミングであり、プロジェクト織機、ファイバ/継続の導入、現在の開発/運用効率へのJava並行処理ソリューションの動作効率を向上させます。よく待望Pauseless GCなどなどとして、全体のJVMは、よりインテリジェントかつ効率的になってきています。

第三に、実践と開発データの大規模なフィールド

ご存知のように、いずれかのJavaに基づく主流のビッグデータテクノロジー・スタックは、いずれかのJVM上で実行されます。JavaとJVMは文法、クロスプラットフォーム機能、ツール、ライブラリの広い範囲の使いやすさを提供し、というように、JVMは、ビッグデータ・フィールドの無冠の王、今のところほとんどないに等しい競争相手となっていましょう。

しかし、私たちは本当に開発し、大規模なクラスタ、大容量データ処理を維持している場合、JVMの制限徐々にいくつか。

たとえば、Hadoopのテクノロジ・スタックの主流で、ヒープサイズNMピアは直接クラスタとデータのサイズ、GCの安定性が密接に杭側面にSLA、現在のJVMのGCに関連しているが、また、これまで完璧から、必要性をさらに向上させるために影響します。

大きなデータ負荷特性の観点から、古典的なGCアルゴリズムは、順応のある程度を有します。私たちは、このような設計のように、現在の時代は、これは経験に基づく実践であることを知って、「オブジェクトのほとんどが小規模であり、人生は短いです」しかし、スパークSQLおよび他の大規模なデータ・ロードで、しばしば長命大多数のオブジェクト、さらには大規模なオブジェクトの割り当てを見ることができます。

等、オブジェクトの割り当てと初期費用のかかる大規模だけでなく、G1 GCにおける領域ベースの設計、オブジェクトのサイズが1つ以上のパーティションを占有する50%の領域を満たす、または超える、残りは貴重なメモリを制限空間を無駄にしました資源効率。

ビジネスの観点ビッグデータの特性から、JVMのメカニズムも改訂し、対象と改善する必要があります。例えば、大規模なデータトラフィックがステップオフライン計算タイミングに相当し、その日の時点で、アプリケーションの挙動が大きく変化し、適応JVMの電流特性は珍しい発生しない順化、G1 GC予測エンジンは、予測を継続しましたGC長い休止に起因する障害は、時々SLAを傷つける、目標の改善が不可欠です。

そのため、すべての上記の制限は、多くの大規模データフレームワークは、研究開発および運用・保守の効率化をもたらし、杭外で動作する簡単でした。

我々は、具体的には、ビッグデータのシーンではより頻繁に、予想外のJVM OOMにこの問題を導くことができる、一緒にGCロッカートリガーが頻繁に無意味な、生産の練習、ビッグデータアプリケーションでJNIは、クリティカルセクションに入ることに注意ヤングGCラージオブジェクトの割り当て次の図を参照します。

また、どのように大規模なデータや機械学習に関係なくは、すべての後に、力と考えられているコアから逃れることはできません。

大型機依存データ(クラスタ)、スレッド(多核)と並列コンピューティング3つのレベルの命令(SIMD)データ。おそらく2002年の後、CPUコア周波数は基本的に有意な増加を持っている、でも、ヒープCPU、ヒープ機にますます依存本番ワークロードのスケーラビリティを減少させました。クラスタリングとマルチスレッドの基本的な分散が、命令のJVMレベルの最適化レベルではまだ十分な注意を受けていない、命令の並列処理のテイク利点は、力の保護の一つと考えられています。

定量化するJVM / SIMDは、通常、3つの手段を持っています

まず、しかし、理由はCPUなどの様々な理由のネイティブコードのJNI直接使用することは、開発し、維持することは非常に困難です。

第二に、通常の開発者のための非現実的ではない、独自のJVM組み込みを、開発します

第三に、JVMが提供する自動ベクトル化機能の使用は、それがより実現可能です。

自動ベクトル化だけでなく、唯一のC2 SupperWord最適化では、現在利用可能な容量の制限、カウントループループ展開、開発は困難ともろいに依存して、多くの。

現在、OpenJDKのは、Vector APIが大幅に開発効率を向上させることができ、私たちは積極的に開発し、成熟を促進する将来のパフォーマンスを向上させるために孵化します。

ビッグデータのシーンでは内部コナの診断とチューニングの側面は、Javaフライトレコーダー(Oracleのオープンソース)がプロデュース可能な環境や特典へのフルスタックJVMプロファイリング機能を提供する統合可能性がヒープ質量分布のための診断メモリリークをダンプすることはできませんビッグデータのシーンのトランキング、頻繁に山/大杭、非常に役立ちます。

また、私たちはさらに、そのようなので、上のシリアライズ/デシリアライズ、メモリ(ターゲット)分布、およびなどの一般的な大規模なデータ・ロード、全体のコストを理解するのに役立ちます。

私たちは、私たちの経験をコミュニティに、一般的なオーバーヘッドを最適化し、共有するためのコミュニティ一緒にjmapのSVCやその他のツールを強化します。

四、Q&A

Q:ヤンは、私はテンセントクラウドをお願いしたいと思い、今の違いは何ですか開き、JDKとコナJDKを行いますか?どのような利点これは関係があるのでしょうか?

A:コナJDKは、オープンJDKのメインブランチである基づいて、対応するJavaランタイム環境やソリューションに最高のシーンを提供するために、標的化などの実用的なアプリケーションのシナリオ大規模なマイクロサービス、サーバレス、ビッグデータのニーズや痛みのポイントに基づいて改善しました。

コナJDKのJavaエコシステムのメリットを最大化するために備えて、上流にしようとすると、選択された特性上、互換性、成熟度と生産の値に十分配慮し、具体的な効率性と生産性をもたらすために強調しました。あなたは、個々の機能やバグフィックスを持っている場合は、メインブランチなど、作業計画のユニバーサル標準上流に準拠していませんが、限り、意味の大きな生産があるので、コナはまだ提供することもできます。

私は、科学的なデータを高め、コナJDKの意味と目的が異なるが、長期的には、信頼性の高いサポートと新機能の生産を加速速度をOpenJDKのことはありませんが、Javaのエコシステムの健全性の観点から、Javaのクラウドコンピューティングなどの分野の強さの基礎を考えます。

インストラクター

ヤンXiaofeng、現在TEG JDKチーム、OpenJDKのコミッタの担当Tencentの上級技術専門家、計算機のための中国協会(CCF)のシステムソフトウェアIPCCのメンバー、。彼は、「Javaコア・テクノロジーは、36点の応力を」、列を作成し、データ・ベース・プラットフォームJingdongはR&Dチームと他のインテリジェントシステム、OracleのJavaプラットフォーム北京チームのコアライブラリを導いたビッグデータの分野の最前線でのJava / JVMソフトウェアなどのインフラに焦点を当て、クラウドコンピューティングなどをしています進化と実践。


おすすめ

転載: juejin.im/post/5e6f2da16fb9a07cc97db787