1. 背景 スケジュールされたタスクは、私たちの開発において不可欠な部分です。たとえば、一部の電子商取引システムでは、誕生日クーポンが定期的にユーザーに送信され、一部の調整システムでは、調整が定期的に実行される場合があります。昔は、各サービスには 1 台のマシンしかなく、このマシンにタイマー スケジュールを設定することで、基本的にビジネス ニーズを満たすことができました。しかし、時代の変化により、1 台のマシンでは私たちのニーズを満たすことは難しくなってきています。現時点では、ビジネスを運営し、トラフィックを受け入れるには、10 台、20 台、あるいはそれ以上のマシンが必要になる可能性があります。これを水平方向の拡張と呼びます。しかし、ここで問題があります。非常に多くのマシンが引き続き当社の Timerschedule を使用するとどうなるでしょうか?上記の電子商取引システムでは、誕生日クーポンが多数ユーザーに送信され、会社に多大な損失をもたらす可能性があるため、スケジュールされたタスクを複数のマシンで 1 回だけ実行する他の方法が必要です。
ここでお聞きしたいのですが、分散タスク スケジューリング フレームワークについて学んだり使用したりする前は、スケジュールされたタスクをどのように実行していましたか? Spring プロジェクトでは、全員が Spring-Scheduler を知っておく必要があります。スケジュールされたタスクを完了するには、Spring の Bean の対応するメソッドに @Scheduler アノテーションを追加するだけです。ただし、この注釈だけでは、スケジュールされたタスクが複数回実行されることを保証するには不十分です。メソッドが一般的に次のようになっていることを確認するには、他の手段が必要です (すべて Spring プロジェクトに基づいています)。
現在、当社でも上記3つの方法を使用してスケジュールされたタスクを実行しています。これらの方法は基本的にビジネスの初期段階のニーズを満たすことができます。しかし、時間が経つにつれて、私たちはますます多くの問題に直面します。ここで皆さんに共有します:
もちろん、ここでは一つ一つ挙げない程度の些細な問題もいくつかあります。この経験があれば、自分でゆっくりと体験し発見することができます。 2. 研究の基本原則 上記の第 1 章では、フレームワークの理由について説明しました。何を導入または改善したい場合でも、何かを行うにはコストがかかるため、理由が必要です。非常に小規模なプロジェクトがメッセージ キューや分散トランザクションなどを導入し始めているのをよく目にします。これは本末転倒です。たとえば、一部のブログ システムでは、ピーク時のトラフィックを減らすためにメッセージ キューを使用することがありますが、これは同期呼び出しよりも高速ではない可能性があります。 理由がわかれば、調査や技術的な解決策の設計を始めることができます。ここでは、私の研究フレームワークの基本原則についていくつかお話しします。将来、同様の研究フレームワークが必要になった場合は、これを使用できます。
上記の原則がわかったら、研究に進むことができます。 3. 研究の枠組み 3.1 TBSchedule 一般的に、Java フレームワークを調査する場合、まず Alibaba がそれらをオープンソース化しているかどうかを確認します。結局のところ、アリババは近年オープンソースで非常に良い仕事をしてきました。その後、オンラインで検索すると、Alibaba が 2012 年に TBSchedule というスケジュール フレームワークをオープン ソース化したことがわかります。現在、コードを検索すると、このフレームワークは放棄され、コードがクリーンアップされていることがわかります。もちろん、それをフォークしてメンテナンスを続ける個人プロジェクトもありますが、ユーザーが非常に少ないためここでは説明しません。 GitHub アドレス: github.com/taobao/TBSc… 3.2 エラスティックジョブ Elastic-Job は、Dangdang のオープンソースの分散スケジューリング ソリューションであり、Elastic-Job-Lite と Elastic-Job-Cloud という 2 つの独立したサブプロジェクトで構成されています。これは軽量の分散型ソリューションとして位置付けられており、jar パッケージの形式で分散タスクの調整サービスを提供します。分散スケジューリング調整、弾力的な拡張と縮小、フェイルオーバー、失敗したジョブ実行の再トリガー、並列スケジューリング、自己診断と修復などの機能をサポートします。 このフレームワークは約 2 年前に非常に人気がありました。当時は多くの企業が利用しており、聞いたことがある人も多いと思います。しかし残念なことに、現在はメンテナンスされておらず、コードは 2 年間更新されていません。これは更新頻度の原則に違反します。問題が発生した場合、助けてくれる人がいない可能性があるため、使用はお勧めしません。 GitHub アドレス: github.com/elasticjob/… 3.3 比較的ニッチな Uncode-Schedule、LTS、openCron など、スターが少なく、更新頻度も低い、比較的ニッチな github プロジェクトがいくつかあります。これらは当社の原則に準拠していないため、考慮されません。 3.4 XXLジョブ CNCF、Apache などの分散スケジュールタスクの基盤がないため、決定はそれほど難しくないかもしれません。メッセージキューとは異なり、Apache には Kafka、rocketmq、plusar など、いくつかあります。各コミュニティは非常に大きいため、選択が難しい場合があります。そうすると、基本的に 2 つの選択肢が残ります。一つは自分たちで開発することです。この種のタスク スケジューリング フレームワークの開発の難しさは、メッセージ キューの開発の難しさよりもはるかに低いため、Meituan の Crane など、多くの企業が独自に開発することを選択しています。ただし、メッセージ キューなどの複雑なミドルウェアの場合は、二次開発が選択される場合があります。たとえば、Meituan の Mafka は Kafka の二次開発に基づいており、Didi の DDMQ も Rocketmq に基づいています。しかし、現時点で自社製品の開発を選択した場合、リソースが明らかに不足しています。ここでは、二次開発フレームワークの戦略を引き続き使用します。 もちろん、XXL-Job:www.xuxueli.com/xxl-job という選択肢が 1 つ残っていますが、これは基本的に当社の原則を満たしています。コードは継続的に更新されており、問題作成者も積極的に対応しており、以前のコメントも含め200社以上が使用しており、その他の原則も満たされています。一般的に言えば、フレームワークを選択する際には、他の人が納得できるように、その利点を詳細に列挙する必要があります。 XXL-job には以下の機能があります。
基本的に、上記の機能が私たちのビジネスに必要な機能であるため、最終的にXXL-JOBを選択しました。 4. まとめ 諺にもあるように、「魚を与えるよりも魚の釣り方を教える方が良い」。これまでの記事では、常に特定のフレームワークを紹介してきました。今回は、今後の研究でこの考え方を踏襲できるように、私がこのフレームワークをどのように選択したかを紹介したいと思います。優れた、また違った研究アイデアをお持ちの場合は、ぜひメッセージを残したり、グループに参加してコミュニケーションをとってください。もちろん、調査が完了した後、研究者として、このフレームワークのソースコードと実装原理を理解していなければ、あなたは不適格な研究者ですので、次の記事では、XXL-Jobの実装原理を詳しく紹介します。 |
<<: KubeCon 2019 レビュー: クラウド ネイティブの登場_クラウド コンピューティング セミマンスリー 60 号
>>: Java アーキテクチャ - SpringCloud 分散アーキテクチャ 権限管理
Baidu Search は強力なユーザーベースを持ち、常に検索市場の支配的存在となってきましたが、...
ウェブサイトが継続的な発展と進歩を遂げたい場合、既存の成果を常に強化し、新しいホットスポットを発見し...
昨日、あるグループの友人から、ウェブサイトの最適化を手伝ってほしいと頼まれました。今は春節が近づいて...
bacloud は、2*E5-2650v4、DDR4 メモリ、10 NVMe Intel P3600...
私は純粋な H5 アプリをいくつか作成しました。これらは開発が高速で快適ですが、ネイティブ アプリと...
virtono.com からの最新ニュース: 英国、オランダ、ドイツのデータ センターに新しい鶏が追...
みなさんこんにちは。私は次男です。コンテナの場合、複数の名前空間テクノロジの重要性は強調しすぎること...
MissFreshとDingdong Maicaiが同日にIPO目論見書を提出したことで、この前線倉...
インターネット運営者およびプロモーターとして、自社の製品を宣伝する方法をご存知ですか?以下は、Qin...
1. 概要まず、Docker が市場にある唯一のコンテナ管理ソフトウェアではないことを理解する必要...
A5 Webmaster Network (www.admin5.com) は5月23日、わずか1ヶ...
先週末、私は北京でメディア専門家のグループと座り込み、主要なインターネットの出来事について話し合いま...
ネットユーザーらは、360 Searchがコード内の「Baidu」を「search」に単に変更しただ...
Baidu スナップショットの更新は、すべてのウェブマスターにとって常に懸念事項です。Baidu ス...
バーチャルアイドル「劉野熙」は、たった128秒の動画1本で450万人のフォロワーを獲得し、一夜にして...