インターネット アプリケーションであっても、エンタープライズ レベルのアプリケーションであっても、多数のバッチ処理タスクが満載です。問題を解決するために、タスク スケジューリング システムが必要になることがよくあります。マイクロサービス アーキテクチャが徐々に進化するにつれ、モノリシック アーキテクチャは徐々に分散型のマイクロサービス アーキテクチャへと進化してきました。このような状況の中で、元のタスク スケジューリング プラットフォームの多くはビジネス システムのニーズを満たすことができなくなり、いくつかの分散タスク スケジューリング プラットフォームが登場しました。 1.1 分散タスクスケジューリングの進化実際のビジネス開発プロセスでは、問題を解決するために、スケジュールされたタスクを使用しなければならないことがよくあります。通常、解決策は複数あります。Crontab または SpringCron を使用します (もちろん、マシンの数が少なく、タスクが単純で数が少ない場合にも、これが当てはまる場合があります)。ただし、アプリケーションの複雑さが増し、スケジュールされたタスクの数が増え、タスク間に依存関係が生じると、Crontab を使用したスケジュールされたタスクの管理と構成が非常に複雑になり、作業効率に重大な影響を及ぼします。これにより、一連の疑問が生じます。
インターネットの発展に伴い、分散サービス アーキテクチャがますます普及しています。同様に、分散アーキテクチャでスケジュールされたタスクを管理するには、分散タスク スケジューリング システムも必要です。 1.2 分散タスクスケジューリングアーキテクチャ垂直アプリケーションがますます多く出現するにつれて、アプリケーション間の相互作用はますます複雑になります。通常、コアビジネスを抽出し、別のサービスを形成するために、分散型またはマイクロサービスアーキテクチャを採用します。独立したマイクロサービス グループが徐々に安定したサービス センターを形成し、ビジネス アプリケーションが変化する市場の需要に迅速に対応できるようになります。 この時点で、ビジネスの再利用と統合を改善するための分散サービス フレームワークが鍵となります。同時に、サービスの独立性により、スケジュールされたタスクは一般に独立しており、タスクの変更がシステム全体に及ぼす影響はほとんどありません。通常は、タスクとスケジュールを分離する方法を採用します(上図参照)。タスクの実行ロジックでは、スケジュールとオーケストレーションに注意を払う必要はありません。同時に、エグゼキュータとスケジューリングの高可用性を確保でき、開発と保守も容易です。 1.3 分散タスクスケジューリングの利点分散サービスアーキテクチャでは、独立した業務の数が多くなる可能性があるため、スケジュールされたタスクをサービス内に個別に実装すると、管理が困難になる可能性があり、スケジュールされたタスクの変更による業務の再開は避けられません。したがって、スケジュールされたすべてのタスクをグローバルに調整および管理するために使用できる、独立した分散タスク スケジューリング システムが必要です。同時に、分散タスク スケジューリング システムの機能としてタスク構成を個別に抽出することで、ビジネスやシステム全体に影響を与えることなく、スケジュールされたタスクに変更を加えることができます。
2.1 分散タスクスケジューリングの考慮事項
2.2 SIA-TASKと他の分散タスクスケジューリング技術の比較SIA は、CreditEase の基本開発プラットフォームである Simple is Awesome の略です。 SIA-TASK(マイクロサービスタスクスケジューリングプラットフォーム)は、その重要な製品の1つです。 SIA-TASK は現在のマイクロサービス アーキテクチャ モデルに適合し、クロスプラットフォーム、オーケストレーション、高可用性、非侵入、一貫性、非同期並列処理、動的拡張、リアルタイム監視などの特性を備えています。 オープンソースアドレス: https://github.com/siaorg/sia-task まず、市場で主流のオープンソース分散タスク スケジューリング フレームワークを比較し、その長所と短所を分析してから、当社のテクノロジの選択を紹介します。
以下では、SIA-TASK とこれらのタスク スケジューリング フレームワークを簡単に比較します。
これらのスケジューリング フレームワークは基本的に高可用性、フェイルオーバー、リアルタイム監視などの機能をサポートしていますが、タスク オーケストレーション、タスク スライシング、クロスプラットフォームなどの機能のサポートに重点を置いていることがわかります。 SIA-TASK はこれらの機能を完全にサポートします。 3.1 SIA-TASK技術の選択
3.2 SIA-TASK設計コンセプトSIA-TASK は、マイクロサービスの設計概念を活用して、各エグゼキュータノードに分散されたタスクのメタデータを取得し、報告して、登録センターにアップロードします。オンラインで編集可能な方法を使用して、オンラインでのタスクのスケジュール設定とタスク クロックの動的な変更をサポートします。対話型伝送プロトコルとして Http プロトコルを使用します。データ交換形式は統一的にJsonを使用します。ユーザーはオーケストレーター (以下で説明) を介して操作し、イベントをトリガーします。スケジューラはイベントを受信し、スケジューリング センターはクロック分析を実行し、タスク フローを実行して、タスク通知を発行します。 3.3 SIA-TASKの基本概念SIA-TASKはタスクとスケジューリングを分離する方式を採用しており、業務の実行タスクロジックとスケジューリングロジックが完全に分離されています。システム構成には、次のコアコンセプトが含まれます。
3.4 SIA-TASKシステムアーキテクチャSIA-TASK は、3 つのモジュール (スケジューリング センター、オーケストレーション センター、エグゼキュータ) と 2 つのコンポーネント (永続ストレージと登録センター) に分けられます。これら 3 つのモジュールと 2 つのコンポーネントの機能は次のとおりです。
SIA-TASKは、SpringBootシステムをアーキテクチャ選択として使用し、QuartzとZookeeperに基づいて二次開発を行い、対応する機能をサポートします。 SIA-TASK の論理アーキテクチャ図を次の図に示します。 3.5 SIA-TASKモジュールの説明3.5.1 タスクスケジュールセンタータスク スケジューリング センターは、タスクのスケジューリング、スケジューリング情報の管理、およびスケジューリング構成に従ったスケジューリング要求の発行を担当します。それ自体にはビジネスコードは存在しません。スケジューリング システムはタスクから分離されているため、システムの可用性と安定性が向上します。同時に、スケジューリング システムのパフォーマンスはタスク モジュールによって制限されなくなりました。タスクの作成、更新、削除、タスクアラームなどのスケジュール情報の視覚的、シンプル、動的な管理をサポートします。上記の操作はすべてリアルタイムで有効になります。また、スケジューリング結果や実行ログの監視、エグゼキュータ障害回復もサポートします。 3.5.2 タスクスケジューリングセンタータスク オーケストレーション センターは、オンライン タスク モデル オーケストレーションをサポートする分散スケジューリング センターのコンポーネントです。 UI に基づいて Web 側のタスク オーケストレーションを実行できます。 上記の基本モデルを使用して、次のような複雑なスケジューリング モデルを調整できます。 SIA-TASK UIレイアウトインターフェース: オーケストレーションが完了したら、次の図に示すように、タスクのオーケストレーション情報を確認します。 同時に、オーケストレーション センターは、ホームページの統計表示、スケジュール監視、ジョブ管理、タスク管理、ログ管理機能も提供します。 3.5.3 タスク実行者スケジュール要求を受信し、タスク ロジックを実行する責任があります。タスク モジュールは、タスク実行などの操作に重点を置いており、開発と保守をよりシンプルかつ効率的にします。 サポートされているアクチュエータには 2 つのタイプがあります。 (1)sia-task-hunterを使用すると、SpringBootプロジェクトとSpringプロジェクトがサポートされます。 sia-task-hunter とタスクキャプチャクライアントを紹介します。準拠した HTTP インターフェイス (タスクと呼ばれる) タスクは自動的にキャプチャされ、登録センターにアップロードされます。 (2)sia-task-hunterを使用しない場合は、タスクが呼び出すことができるHTTPインターフェースのみを提供する必要があります。この場合、ビジネス側は手動で入力し、タスクの同時呼び出しを自ら制御する必要があります。 3.5.4 タスク登録センター(Zookeeper)分散フレームワークは、登録センターとして Zookeeper を使用します。 (1)タスク登録 スケジューリング センターと実行クラスターはどちらも、登録センターとして Zookeeper を使用します。すべてのデータはノードとノード コンテンツの形式で登録され、ホストのステータスを定期的に報告することで Zookeeper 上で維持されます。 (2)メタデータ保存 登録センターは登録サービスを提供するだけでなく、各エグゼキュータに関する情報(エグゼキュータインスタンス情報、エグゼキュータによってアップロードされたタスクメタデータ、タスク実行時の一時的なステータスデータなど)も保存します。 (3)イベントリリース タスクは Zookeeper イベント プッシュ メカニズムに基づいて公開され、バランス アルゴリズムを使用してスケジューラ タスクのプリエンプションのバランスの取れた分散が保証されます。 (4)負荷分散 単一ノードへの負荷を回避するために、スケジューラがバランスの取れた実行ジョブ数を取得するようにします。 3.5.5 永続ストレージ(DB)ここでは、データ永続化ソリューションとして MySQL が使用されます。 登録センターに保存されるタスクの動的メタデータに加えて、手動で入力されたタスク、構成されたジョブ情報、スケジュールされたタスクの依存関係情報、スケジュール ログ、ビジネス担当者の操作ログ、タスク実行ログなど、その他の関連メタデータも MySQL に保存されます。 3.6 SIA-TASKキー操作プロセス3.6.1 タスクリリースプロセス(1)ユーザーはUIを通じてジョブを作成することができます。ジョブの種類を選択したり、警告のメールアドレスを設定したり、ジョブの説明を設定したりできます。次に、作成したジョブのタスクを配置します。 (2)ジョブが作成され、タスクのスケジュール関係が設定されると、タスクを公開し、対応するジョブをUI(アクティブ化、1回実行、停止、削除操作)を介して操作できるようになります。 (3)ユーザーのタスクはクローラーを通じてキャプチャすることも、UIを使用して手動で作成することもできます。 3.6.2 実行プロセス(1)ジョブが作成された後、トリガースケジュールタスクをアクティブ化することを選択できます。 (2)ジョブがスケジュールされた時間に到着すると、スケジューリングセンターはジョブをトリガーし、HTTPを介してタスク実行者に通知して、事前に決定されたタスクスケジューリングロジックに従って実行し、タスク実行結果を非同期的に監視します。 (3)実行結果が成功であれば、後続タスクがあるかどうかを判定する。そうであれば、次のスケジュールに進みます。そうでない場合は、ジョブが実行され、通話が終了したことを意味します。実行結果が失敗した場合、障害回復戦略がトリガーされます。つまり、すぐに停止するか、障害を無視するか、複数回試行するか、実行のために他のエグゼキュータに切り替えます。 3.6.3 状態遷移ジョブのライフ サイクル全体にわたって、停止 (NULL)、準備中 (READY)、実行中 (RUNNING)、異常停止 (STOP) の 4 つの状態があります。状態フローとフロー条件を次の図に示します。 3.7 SIA-TASKモジュール設計SIA-TASK の物理ネットワーク トポロジを以下に示します。 SIA-TASK のモジュール間インタラクション設計のアイデア: (1)オーケストレーションセンターを通じてタスクを作成するか、ハンターを通じて自動的にタスクをキャプチャし、タスク情報を非同期でDBに保存します。ジョブを作成してアクティブ化し、Zookeeper に JobKey を作成します。 (2)スケジューリングセンターはZookeeperのJobKey作成イベントを監視し、作成されたジョブをプリエンプトします。プリエンプションが成功すると、Quartz のスケジュールされたタスクに追加され、時間が来るとジョブが実行されるようにトリガーされます。ディスパッチ センターは、ジョブ内のタスク (タスク失敗戦略に従って複数のタスクが存在する場合があります) を実行するためにエグゼキュータ サービスを非同期的に呼び出し、結果をディスパッチ センターに返します。 (3)ジョブ実行ステータスはZooKeeper上でいつでも変更でき、オーケストレーションセンターのクエリインターフェースを通じて照会することができます。 (4)ジョブ実行後、次回の実行を待ちます。 3.7.1 タスクスケジューリングセンターの設計オーケストレーション センターは、データに関して DB および Zookeeper と対話できます。その主な機能は、次の 3 つの側面に分けられます。
オーケストレーション センターのホームページの監視表示は次のとおりです。 3.7.2 タスクスケジューリングセンターの設計ディスパッチ センターは主に DB、ZK、エグゼキュータとやり取りします。その主な機能は、次の側面に分けられます。
3.7.3 タスク実行者の設計実行者は ZK およびスケジュール センターと対話できます。その主な機能は 2 つの側面に分けられます。
実行タスクの例:
タスクの書き方は非常に簡単であることがわかります。 3.8 SIA-TASK高可用性設計分散サービスでは通常、高可用性ソリューションを考慮する必要があります。同様に、高可用性を確保するために、SIA-TASK はさまざまな側面でさまざまなサービス コンポーネントを強化しました。 3.8.1 タスクオーケストレーションセンターの高可用性SIA-TASK は、フロントエンドとバックエンドの分離、サービスの分割などの対策を通じて、オーケストレーション センターの高可用性を実現します。クラスター内のインスタンスに障害が発生しても、クラスター内の他のインスタンスには影響がないため、特別な操作を行わずにクラスター内の他の利用可能なオーケストレーション センターを使用できます。 3.8.2 タスクスケジューリングセンターの高可用性3.8.2.1 異常転送スケジューリング センター クラスター内のインスタンス ノード サービスがダウンした場合、スケジュールされたタスクが失われることなく、このインスタンス ノード上のすべてのジョブがクラスター内の使用可能なインスタンスにスムーズに移行されます。同時に、クラッシュしたインスタンスが正常に修復され、クラスターに再接続されると、ジョブをプリエンプトしてサービスを提供し続けます。 3.8.2.2 スレッドプールの設定スケジューリングは、単一スレッドのブロックによって発生するタスク スケジューリングの遅延を回避するために、スレッド プールを使用して実装されます。スレッド プール内のスレッドの数。デフォルト値は 10 です。タスクを同時に実行する場合は、ビジネス特性に基づいてスレッド プールのサイズを選択する必要があります。
SIA-TASK は、Quartz 自体が提供する threadPool に基づいて、スレッド プールを再度使用します。スレッド プールを再定義し、各ジョブに一意のスレッド プールを割り当てます。スレッド プールのサイズは、ジョブ自体によってスケジュールされたタスクの数に応じて動的にスケーリングできるため、各ジョブのスケジュール スレッドが完全に独立し、スケジュールされたタスクの数の急増によってスレッド リソースが枯渇することがなくなります。同時に、ジョブが永久に終了したときに割り当てられたスレッド プール リソースをリサイクルするためのスレッド プール リソース リサイクル ロジックも提供します。
3.8.2.3 完全なログ追跡SIA-TASK は、ジョブのスケジュール ライフ サイクル全体を包括的に追跡し、ログ拡張に AOP を使用します。スケジューリング センターは、ジョブ スケジューリングがトリガーされるたびにログに記録します。同時に、ジョブによってスケジュールされたタスク実行のタスク ログも記録されます。 ログはジョブ ログとタスク ログに分かれています。
3.8.2.4 非同期カプセル化
3.8.2.5 カスタムスケジューラリソースプールSIA-TASK は、物理リソースの観点からスケジューリング リソース プールを設計します。特別な考慮のためにスケジューラをプールします。スケジューラはさまざまな操作を通じて状態を変更し、それによって機能を変換することができます。
3.8.3 タスクエグゼキュータの高可用性
ここまで、マイクロサービスタスクスケジューリングプラットフォーム SIA-TASK について、設計背景、アーキテクチャ設計、製品コンポーネントの機能と特徴など、簡単に紹介してきました。マイクロサービス タスク スケジューリング プラットフォーム SIA-TASK は、基本的に現在のビジネス ニーズを解決し、シンプルで効率的なオーケストレーションおよびスケジューリング サービスを提供します。 SIA-TASKは今後も改良を重ね、より充実したサービスを提供してまいります。関連する技術文書と使用方法文書も後日提供されます。 [この記事は51CTOコラムYiXin Technology Institute、WeChatパブリックアカウント「YiXin Technology Institute(id:CE_TECH)」からのオリジナル記事です] この著者の他の記事を読むにはここをクリックしてください |
>>: 最適なクラウド バックアップ ソリューションを選択する方法
上級の普通のネットユーザーとして、普通の視点から、どのようなウェブサイトが好きなのか、つまりユーザー...
ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービス今は、個人のウェブサイト...
ブロガーは小紅書の重要なグループの 1 つです。ブロガーが共有するコンテンツは、多くの場合、対応する...
lunarpagesは、中高級の仮想ホストのランクに入れました。高品質、優れたアフターサービス、lu...
どのようにすればWeiboマーケティングをうまく行うことができますか?昨日、著者は中国最高のウェブマ...
世界トップクラスのオープンソースコミュニティであるCloud Native Computing Fo...
2011 年はモバイル アプリ ストアにとって素晴らしい年でした。ほぼすべての店舗が急速な成長を示し...
企業による IoT とエッジ コンピューティングの導入には、IT 部門の関与だけでは不十分であること...
企業は、多くのアプリケーション タイプに柔軟性、迅速な拡張性、信頼性を提供するパブリック クラウドに...
racknerdは、米国西海岸のサンノゼデータセンターにAMDシリーズの高性能VPSをリリースしまし...
[[354420]]今日では、仮想会議の概念は人々にとって馴染み深いものとなっています。バーチャル会...
alwyzon(Hohl IT eUのブランド)は、オランダ(データセンターはオランダ東部の都市アペ...
Weiboマーケティングが増加しており、WeChatマーケティングも本格化しています。しかし、大金を...
近年、スマートカー産業の継続的な発展と新エネルギー車の継続的な増加に伴い、新インフラのサブセクション...
第 1 回 Red Hat IT プロフェッショナル総合スキル コンテストが開催されます。このコンテ...