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 分散アーキテクチャ 権限管理
クラウドへの移行を成功させるために、CIO は IT チームを再編成し、俊敏性、部門横断性、新しいス...
5月11日、2019年広東省・香港・マカオ情報技術・セキュリティ技術セミナーと広東省サイバースペース...
さまざまな業界でデジタル化、インテリジェント化が進むにつれ、クラウドコンピューティング、ビッグデータ...
デジタルオーシャンはどうですか?デジタルオーシャンドイツはどうですか? DigitalOcean の...
業界に入ったばかりのSEO担当者の場合、ほとんどの人が会社の公式サイトの最適化を担当していますが、あ...
Hosteons は、今後、Hosteons の KVM シリーズ VPS (VPS3 ~ VPS7...
fdcservers.net のクリスマス プロモーションが早くも始まりました。最初の 1 か月分を...
SEO 担当者は、業務依頼を受けてもすぐにウェブサイトの最適化作業を開始するのではなく、まずウェブサ...
7月4日はアメリカ合衆国の独立記念日であり、基本的には建国記念日を意味します。 Hostodo は今...
CDN プロバイダーである vaicdn は、広い帯域幅、高い防御力、低い遅延、完璧な本土加速回線を...
レンガ職人はどうですか?シドニーのレンガ職人はどうですか?オーストラリアのシドニーデータセンターのB...
適切に管理および実装された可観測性システムは、複雑なシステムのデバッグと修正に使用できるきめ細かい洞...
ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービスさまざまなマーケティング...
個人的には、システムを再インストールするために使用される「再インストール」が最も一般的に使用されてい...
【概要】技術革新、ビジネスモデル、インターネット文化、インターネット思考などの衝突はどのような化学反...