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 分散アーキテクチャ 権限管理
Confluent の 2022 年第 2 四半期のクラウド アップデートが利用可能になり、イベント...
WeChatの成功は誰もが想像した通り止められないものとなった。5.0のリリースにより、WeChat...
最近、20,000 を費やすと 120,000 の効果が得られる、3 分で 200,000 が入金さ...
みなさんこんにちは。私は飛虎映画ウェブサイトの所有者です。タイトルの通り、私の映画コレクションウェブ...
512M のメモリと年間料金 9.99 ドルの banwagonhost を見逃していませんか?今で...
2014年以降、多数の中国のインターネット企業が米国で株式を公開した。この過程で、「沈黙期間」または...
英国のホスティング プロバイダーである clouvider は、仮想ホスティング、VPS、専用サーバ...
海外メディアの報道によると、米司法省は最近、音楽や映画の著作権を侵害している疑いがあるとして、ファイ...
多くの企業にとって、デジタル変革の旅の次の目的地はクラウドへの回帰となる可能性があることが判明しまし...
建国記念日から戻った後、美しい山や川に浸っていますか? それとも、ランキングに影響を与えるために一生...
イノベーションワークスの最高執行責任者兼パートナー、タオ・ニン氏(写真提供:テンセントテクノロジー)...
インターネットの影響力は広く、家を出ることなく買い物や食べ物の注文などを簡単に済ませることができ、最...
分散キャッシュを使用する理由は何ですか?典型的な Taobao のダブル 11 フラッシュ セールの...
Kafka は LinkedIn が立ち上げた高スループットの分散メッセージング システムです。簡単...
何かをうまくやりたい、最短時間で終わらせたい、いわゆる高効率を求めるには、通常、何らかのコツや方法が...