リアルタイム制御システムに永続プロセスを実装する問題について(パート1)

最近、永続性は情報技術のもう1つの流行語になりました。 永続データに関する多くの記事が公開されており、 dzavalishinは永続オペレーティングシステム全体を開発しています。変更については、永続プロセスに関する最近のレポートの資料を共有します。



簡単に言えば、永続性とは、周囲の媒体の状態からの独立性を意味します。 したがって、私たちの意見では、プロセスの持続性、それらを生成した環境の状態に関係なく実行する能力、一般的に言えば自動制御システムの開発で最も重要なタスクの1つである下位レベルの障害について話すことは非常に合法ですリアルタイム。



この記事では、フォールトトレラント制御システムの機能の実装の主要レベルの分類、これらのデータに特徴的な障害レベルの考慮、および永続性を確保するために各レベルで使用される特定の技術的ソリューションの研究を提供します。



制御システムの実装方法に応じて、その階層モデルをさまざまな方法で編成できます。



たとえば、次のように:

計算プロセス
専用の冗長機器
リソース通信環境
外部リソース


など:

計算プロセス
クラスター化されたシステムサービスとオペレーティング環境
ホストオペレーティングシステム
ハードウェアとファームウェア
リソース通信環境
外部リソース


または、理論的には次のようにもなります。

計算プロセス
クラスター化されたアプリケーションサーバー
システムサービスとオペレーティングシステム
ハードウェアとファームウェア
リソース通信環境
外部リソース


あなたが自信を持ってコンピューティングアーキテクチャの父のように感じ、プログラマと電子エンジニアの労働力と創造的可能性の豊富さ(タスクの機能的な複雑さに関して)を持っている場合、さらには、神が禁じている、彼らはあなたのシステムを使用した結果の法の前にかなりの責任を負うこれらのパスの最初は、特殊なアーキテクチャを備えた冗長ハードウェアとソフトウェアの複合体の構築です。 このパスは、組み込みシステムにルーツがあり、ハードウェアおよび低レベルのインターフェイスプログラマーの上流のキャリアにとって素晴らしい分野です。 著者は、次の記事(トランスピュータの開発方法)のいずれかでこの方向をより詳細に説明しようとします。ここでは、残念ながら、このパスは高レベルの機能を実装するための手作業での多大な努力に関連付けられているため、システムに受け入れられません機能が非常に複雑です。



3番目のスキームで示されている、高可用性制御システムでのアプリケーションサーバーの使用に関する考慮事項をすぐに説明します。 情報システムの開発によってもたらされた心の自動制御のタスクの経験の浅い人には外部からの魅力があるため、このアプローチには欠点を取り除くのが難しい多くのことが含まれています。 主要な最新のアプリケーションサーバーの目標は、負荷分散を提供し、処理スループットを向上させることです。これは、リアルタイムシステムに必要な反応時間(レイテンシ)を最小化するタスクと伝統的に矛盾しています。 また、このようなアプリケーションサーバーは非常に複雑であり、それ自体が耐障害性の点で脆弱なリンクです。 最後に、アプリケーション用に提供されるインターフェースは、自動制御タスクには不十分であることが多く、多くの場合、ハードウェアとの相互作用、非標準ネットワークプロトコルの使用などを必要とします。その結果、著者は、情報システムを構築するためのアプリケーションサーバーアーキテクチャを実装する成功例を数多く知っていますが、単一のものではありません自動制御システムの分野での産業実装。



したがって、この記事では、上記のスキーム番号2で示した仮想マシンのクラスターのアーキテクチャについて説明し、下から上に移動して、その主要レベルをより詳細に検討します。



1.外部リソース



初心者の開発者は、制御ループ内の最も脆弱なリンクが管理対象リソース自体または他の外部オブジェクトであることが多いという事実を見失う場合があります。 この状況は、古いジョークによって美しく説明されています。



-私は一番賢い! -ウィキペディアは言った。

-私は何でも見つけます! -グーグルは言った。

「私はすべてです!」 -インターネットは言った!..

「まあ、まあ」と電気が言って、そして...点滅しました。



2つの独立した電力線からオブジェクトに電源を供給しなかった場合、またはたとえば、バッテリー寿命より悪くない効率でディーゼル燃料をバックアップディーゼル発電機に輸送しなかった場合、この逸話を文字通り理解してから、サーバーハードウェアバックアップの分野でのすべての成功耐障害性の観点から見ると、純粋に表面的な性質です。



言われたことを文字通り解釈するのではなく、壮大な複製された制御回路が単一のアクチュエーターまたはリソースソースで終わるかどうか、そしてもしそうなら、それについてどうするかを常にチェックする必要があります。



最も高度な自動制御システムでは、管理対象システムの何らかのメカニズムに障害が発生した場合、他の機能を持つ残りのメカニズムを使用して、その機能の一部を実行しようとすることができます。 たとえば、宇宙ロケットのターミナル制御システムは、上段の追加作業により、第3段エンジンの早期停止を補償できます。
ご注意
これをミサイル端末制御システムに特別なコード分岐があるという意味でこれを理解する必要はありません。「第3段階の誤作動が発生した場合の上段の動作」。 実際、制御ループは、さまざまな制御システムの機能が互いに重複するように設計されているだけであり、それぞれが実際にそれが見つかった状況から究極の目標を達成するために最大限に努力します。




2.リソース通信環境



リソース自体に加えて、リソース間の通信環境は基本的に重要です。 私たちにとって最も重要な媒体は、何よりもまず、オブジェクト電源システムとデータ伝送ネットワークです。



高可用性コンプレックスのオブジェクト電源システムを設計する場合、重要な機器を各電源ラインに接続するか、機器を複製するか、異なる電源から動作する可能性のある電源を複製することにより、電源ネットワークの少なくとも2つの物理的に分離した配線を提供する必要がありますチェーン。 これらの点は明らかなように見えますが、実際の生活では、著者は重要なタスクを決定する自動化オブジェクトを見る機会がありました。その電力は、2つの独立した電気変電所から構成され、測定機器はそれらの1つから完全に電力を供給され、コンピューター複合体はそれを制御します。



データネットワークのホットバックアップは、さまざまな程度で一般大衆の注意を引く多くの問題を意味します。



冗長接続を介したパケット伝送のための代替ルートの使用は、非標準の低レベルプロトコルを使用する場合を除き、従来のインテリジェントネットワーク機器によって十分にサポートされています。



プロトコルスタックを上に移動するには、完全または部分的な障害に耐えるデータ転送プロトコルを使用する問題に対処する必要があります。 この質問の一部は、有名なTCP対UDPフレームです。



制御システムでTCPを使用する利点は次のとおりです。

-自動整合性制御。

-送信データの任意のサイズ。



制御システムでUDPプロトコルを使用する利点は次のとおりです。

-状態の欠如;

-半二重の可能性。

-呼び出しからの迅速な戻り*;

-スタックレベルでの問題の迅速な診断とエラーコードの戻り。



リアルタイムシステムでTCPを使用するには、開発者がスタック設定(主にtcp_keepaliveファミリーのパラメーター)に精通する必要があります。 UDPを使用するには、ARPプロトコルの実装を明確に理解する必要があります(上記の脚注の注意事項はこれに関連しています)。 両方のプロトコルを使用することは、受信バッファーサイズ設定の創造的な所有権を意味します。



UDPプロトコルの状態不足の問題は、物理的に異なる機器(バックアップサーバー)での再起動など、接続のいずれかの側を再起動するときに重要になります。



それとは別に、めったにカバーされない半二重の問題に触れる必要があります。 いくつかの一般的なネットワーク環境の実装では、接続の整合性の物理的または論理的な違反の結果として、データがAからBに送信される可能性がありますが、BからAに転送することはできません。TCPプロトコルはそのような状況では機能できません。 UDPプロトコルは、一方向の中断で一方向の通信を維持できます(基礎となるネットワーク機器が正常に機能し、接続を確立するときにARPを使用する問題を排除している場合)。



一般に、著者によると、アプリケーションレベルでのメッセージ配信制御または無条件の再送信の編成を備えたUDPプロトコルは、フォールトトレラントシステムのIPネットワークへの短い制御メッセージの転送に適しています。 大量のデータを転送するには、マネージャーレベルで調整されたTCPプロトコルの使用が適切であり、短時間で接続を編成します。



続き:パート2



All Articles