前回のコンテンツでは、 ChengYingのインストール原理、製品パッケージの作成、およびその他のコンテンツを紹介しましたが、この記事では前回のコンテンツに続いて、ChengYing の製品ラインの展開に関連する設計について説明します。「ワンストップで完全に自動化された完全なライフサイクルのビッグデータ プラットフォームの運用と保守管理者 ChengYing」に関心のある開発者が、 ChengYing をよりよく理解し、使用できるように支援します。
製品ライン展開の概要
最初に、ChengYing の製品ライン展開の「自己紹介」です。これは 3 つの部分に分かれています。
● ユーザー定義の製品ラインをサポート
ChengYing では、サービスはコンポーネント パッケージの次元で展開されます. たとえば、zookeeper 製品パッケージは ZK パッケージを事前定義して ChengYing のシステムにアップロードし、展開するサービスを選択して ZK の展開マシンを配置します.展開を完了します。
初心者にとって、複数のサービスを展開する必要があり、これらのサービスに連続した依存関係がある場合、展開の順序が不明確になり、展開が非常に困難になります。そのため、ChengYing は DAG (有向非巡回グラフ) の使用をサポートして、コンポーネント パッケージの柔軟で構成可能な展開シーケンスを定義します。その目的は、なじみのある人もなじみのない人も、定義済みの製品ラインの形で複数のコンポーネント パッケージを同時に展開できるようにすることで、展開効率を大幅に向上させることです。
● サービス アフィニティ構成のサポート
コンポーネント パッケージ内のさまざまなサービスの種類に応じて、ホスト ロール情報と組み合わせて、サービス ホスト オーケストレーションが自動的に実行されます。ホストが ChengYing システムに接続されている場合、ホストに対応する役割のラベルを付けることがサポートされており、対応する役割のコンポーネントが対応する役割のマシンに展開されます。
● コンポーネント パッケージのワンクリック自動展開
コンポーネント パッケージに基づく手動展開、同じエントリ、異なる製品ラインの展開方法を選択した後、ワンクリックで必要な複数のコンポーネント パッケージの同時展開をオンデマンドですばやく完了することができ、展開効率が向上します。
製品ラインの展開設計
次に、コード設計の観点から、ChengYing が製品ライン展開の技術設計をどのように行っているかを見てみましょう。
DAGとは
DAG (有向非巡回グラフ) は一般的に使用されるデータ構造であり、DAG に関する限り、依存関係システム、データ フロー システム、データ ビジュアライゼーションなど、日常のツールに既に存在します。タスクオーケストレーションの観点から見ると、DAGは一般の人々のワークフローと呼ばれます。
グラフ理論では、有向グラフが任意の頂点から開始できず、いくつかのエッジを介してポイントに戻ることができない場合、そのグラフは有向非巡回グラフ (DAG グラフ) です。
ChengYing の製品ライン展開設計の核心は、一連のタスクを提供し、それらの実行順序を独自の方法、つまり DAG で調整することです。
製品ラインの DAG 定義
特定の製品ラインの各コンポーネント パッケージの展開順序は事前に定義されており、その関係は DAG を使用して json ファイルとして定義されており、プラットフォームは自動的に json を解析して展開順序を取得し、自動展開の効果を実現します。
· product_line_name: 製品ライン名 (事前定義可能)
· product_line_version: 製品ラインのバージョン (事前定義可能)
· product_serial: コンポーネント パッケージの展開シーケンス (上の図では、DTBase の依存先は 0 であり、依存関係がないことを示しています。DTFront の依存先は 1 であり、id 1 のコンポーネント パッケージに依存していることを示しています)
製品ライン DAG ソース コード分析
複雑なオブジェクトを並べ替える場合は、並べ替えに Len、Swap、および Less の 3 つのメソッドを含める必要があります。
The following source code is the core logic of DAG execution. ソース コードの具体的な分析については、次のビデオを参照してください。
https://www.bilibili.com/video/BV1KV4y1Q7KP/?spm_id_from=333.999.0.0
ソース コード自体はすべてオープン ソースです。ChengYing の Github で学習できます。
https://github.com/DTStack/chengying
サービス アフィニティ構成
サービス アフィニティの定義は、事前選択、優先、および選択メカニズムによって選択されたターゲット ノードに各新しいサービスをバインドすることを意味します。
k8sでは、ノードとポッドの2つのレベルでのアフィニティとアンチアフィニティのスケジューリングがサポートされており、アフィニティとアンチアフィニティのルールを構成することで、ハード制限とソフト制限、つまりプリファレンスを指定できます。
たとえば、フロントエンド Pod とバックエンド Pod を一緒にデプロイすると、ネットワーク レイテンシを短縮できます。または、特定のタイプのサービスが特定のタイプのノードにデプロイされ、さまざまなアプリケーションがさまざまなノードにデプロイされます。
ノード アフィニティ ルールを定義する場合、2 種類のノード アフィニティ ルールがあります。ハード アフィニティが必要であり、ソフト アフィニティが優先されます。ハード アフィニティは、Pod のスケジューリング中に満たす必要がある必須のルールを実装します。ルールを満たすノードがない場合、Pod オブジェクトは Pending 状態になります。
ソフト アフィニティ ルールは柔軟なスケジューリング制限を実装します。これは特定のタイプのノードで Pod オブジェクトを実行する傾向があり、スケジューラはこの要件を満たそうとしますが、次善の策は、ノードに一致しないノードを選択することです。ルール。
k8s と同様に、ChengYing のサービス アフィニティとアンチアフィニティにも対応するフィールドが設定されています。
· Orchestration.affinity: 配列、自動オーケストレーション ロール アフィニティ [オプション]。ただし、このフィールドがないと、サービスは自動オーケストレーションに参加できません。
· Orchestration.anti_affinity: 配列、自動オーケストレーション ロール アンチアフィニティ [オプション]
使用シーン
ChengYing での製品ラインの展開の使用方法を紹介します。
ホストの役割を設定する
[Deployment Center] - [Cluster Management] - [Cluster Details] では、ノードに対応するロールを編集できます。
製品ラインをアップロード
ロールを定義したら、[Deployment Center] にデプロイできます。自動展開 (製品ライン シーケンスに基づく複数のコンポーネント パッケージの展開、自動ホスト ロール オーケストレーションのサポート)、手動展開 (単一コンポーネント パッケージの展開に基づく、カスタム ホスト オーケストレーションのサポート) をサポートします。
製品ラインと製品パッケージの親和性と非親和性がすべて定義されている限り、開発者がこのページに入り、各ノードにどのサービスが割り当てられ、どのような展開が行われるかは非常に明確です。など、ワンクリックでこれらの面倒なタスクを完了すると、展開の効率が大幅に向上します。
動画講座&PPT取得
ビデオレッスン:
https://www.bilibili.com/video/BV1KV4y1Q7KP/?spm_id_from=333.999.0.0
コースウェアの取得:
https://www.dtstack.com/resources/1037
「Dutstack 製品ホワイト ペーパー」: https://www.dtstack.com/resources/1004?src=szsm
「データ ガバナンス業界の実践に関するホワイト ペーパー」のダウンロード アドレス: https://www.dtstack.com/resources/1001?src=szsm Kangaroo Cloud のビッグ データ製品、業界ソリューション、顧客事例について詳しく知りたい、または相談したい場合は、 Kangaroo Cloud の公式 Web サイトにアクセスしてください: https://www.dtstack.com/?src=szkyzg
同時に、ビッグデータ オープン ソース プロジェクトに関心のある学生は、「Kangaroo Cloud Open Source Framework DingTalk Technology qun」に参加して、最新のオープン ソース技術情報を交換できます。qun 番号: 30537511、プロジェクト アドレス: https: // github.com/DTStack