|
今日、私はある投資家仲間から、Netty のようなプロジェクトは複雑すぎて習得が困難だと感じているので、価値のあるオープンソース プロジェクトをいくつか推奨してほしいという質問を受けました。 実際、私たちが毎日使用している Spring と Netty は長年使用されており、非常に困難に思えるかもしれません。 以下では、私がレビューして良質だと感じたプロジェクト(ほぼすべて私自身が参加したプロジェクト)をいくつかご紹介します。難易度は簡単なものから難しいものまで様々です。これらのプロジェクトには、JavaやGoのプロジェクトに加え、主流のミドルウェアやクラウドネイティブのプロジェクトも含まれます。 JavaプロジェクトXXLジョブ難易度: 🌟🌟 推奨度: 🌟🌟🌟 xxl-jobはGitHubで27,000スターを獲得している、定番のスケジューリングフレームワークです。機能が複雑ではないため、最近はあまり更新されていません。 このタイプのスケジューリング フレームワークは日常的に使用されているため、非常に理解しやすく、実装も比較的簡単です。次に例を示します。
cim難易度: 🌟🌟🌟 推奨度: 🌟🌟🌟 IM インスタント メッセージングの基本機能を備えており、これに基づいて次のことも実現できます。
CIM を通じて、分散システムについて学ぶことができます。
詳細な紹介については、プロジェクトホームページのReadmeをご覧ください。最適化が必要な箇所(実際にはまだ完了していないToDoリストがかなりあります)が見つかった場合は、お気軽にプルリクエストを送信してください。 パワージョブ難易度: 🌟🌟🌟 推奨度: 🌟🌟🌟🌟 PowerJobもスケジューリングフレームワークですが、後発の製品という利点があります。市場に出回っている他のスケジューリングシステムの利点を組み合わせながら、いくつかの新機能も追加しています。以下はPowerJobの機能比較表です。 コミュニティもxxxl-jobよりも活発で、バージョン5.1.0がリリースされたばかりです。また、多くの学習記事や資料もまとめられています。 リモート通信にはAkkaを使用しており、このトピックに興味のある方は、ベストプラクティスをいくつか紹介しているので、見逃さないでください。コードも良く書かれており、拡張性も高く、いくつかのクラスは効果的に設計されています。例えば、よく使われるExecutorはMapProcessorから拡張されています。 タスクスケジュールセクションから始めることをお勧めします: tech.powerjob.worker.actors.TaskTrackerActor#onReceiveServerScheduleJobReq パルサー難易度: 🌟🌟🌟🌟 推奨度: 🌟🌟🌟🌟 Pulsarは現在、多くの企業で広く利用されている、主流のクラウドネイティブ・メッセージキュー・ミドルウェアです。Pulsarを通じて、以下のことを学ぶことができます。
しかし、Pulsar自体の複雑さから、始めるのは簡単ではありません。クライアントサイドのコードから始めることをお勧めします(JavaでもGoでも問題ありません)。 スターロックス難易度: 🌟🌟🌟🌟🌟 推奨指数: 🌟🌟🌟🌟 StarRocksは、私が最近初めて出会ったOLAPデータベースプロジェクトです。この分野の経験はほとんどなかったので、ゼロから学んでいました。 幸いなことに、この期間中に必要に応じていくつかの PR を送信し、徐々に慣れていきました。 これらのオープンソース プロジェクトでの私の経験から、データを扱う企業は製品に対してより喜んでお金を払うので、StarRocks のようなデータベース プロジェクトは最も将来性があり (そして最も利益率が高い) ということが分かりました。 しかし、このプロジェクトは初心者向けとは言えません。ビッグデータの分野に既に触れた経験のある人が学ぶのに適しています。でも、心配しないでください。私自身も全くの初心者でした。基礎知識が全くなかったので、ただコードに従ってデバッグするだけでしたが、Javaで書かれているので理解できました。 オープンテレメトリー難易度: 🌟🌟🌟🌟 推奨度: 🌟🌟🌟🌟🌟 OpenTelemetry は現在、クラウドネイティブの可観測性の事実上の標準となっており、徐々に大企業にとって不可欠なテクノロジー スタックになっています。 Javaエージェントは、トレース、メトリクス、ログなどのアプリケーションデータを自動的に収集できます。まずはopentelemetry-java-instrumentationをお勧めします。これは、このプロジェクトからパッケージ化されたJavaエージェントの中で最も頻繁に使用されるためです。これにより、以下のことを学ぶことができます。
一方、OpenTelemetry は私がこれまで見た中で最もエレガントなコードの 1 つであり、皆さんにぜひ確認することをお勧めします。 Go(クラウドネイティブプロジェクト)cプローブ難易度: 🌟🌟🌟 推奨度: 🌟🌟🌟 cprobe は、kafka_exporter、nginx_exporter、mysql_exporter などのさまざまなエクスポーターを統合することを目的とした可観測性プロジェクトです。 また、上位レベルの抽象化も組み込まれているため、さまざまな監視オブジェクトの構成を統合的に管理でき、単一のプロセスを展開してすべてのアプリケーションを監視できます。 このプロジェクトから次のことが学べます。
ビクトリアログ難易度: 🌟🌟🌟🌟 推奨度: 🌟🌟🌟🌟 これはVictoriaMetricsのサブプロジェクトです。名前の通り、主にログ処理に使用されます。Elasticsearchの簡易版と考えてください。機能はシンプルですが、リソース消費量はElasticsearchよりもはるかに低くなっています。詳細は、以下の負荷テストのグラフをご覧ください。 このプロジェクトから次のことが学べます。
要約これらはすべて私が真剣に取り組んだプロジェクトです。長期的に取り組んで収益を上げたいなら、現在非常に人気のあるStarRocksをお勧めします。 単に Java スキルを向上させたいだけなら、Pulsar と OpenTelemetry をお勧めします。どちらもコードに関するベストプラクティスが多数あります。 クラウドネイティブおよび Go プロジェクトを開始する場合は、cprobe が適切な選択肢です。 もちろん、どんなプロジェクトでも最も重要なのは粘り強く続けることです。たまにしか見ないプロジェクトは、忘れられてしまいがちです。少なくとも、実際に実行してコードをデバッグするべきです。 参考リンク:
|