この記事では、分散システムにおけるパラメータ設定の 4 つの方法を紹介します。必要な方は参考にしていただければ幸いです。
システムにはさまざまな構成情報が含まれています。たとえば、ログ ファイルには次の情報を構成する必要があります。
- #ログ ファイル生成用のメイン ディレクトリ
- ログ ファイル名、異なるログ レベルは異なるファイルに対応します
- 現在のログ レベル
他にもさまざまなビジネス パラメータ、システム パラメータなどがあります。ほとんどの単一システムは、テスト用に展開するときに、これらの設定を設定ファイルに直接書き込みます。実稼働環境では、構成ファイルを変更します。これは間違いを犯しやすいため、柔軟に変更できません。また、システムが分散システムになると、サブシステムの数が増え、これらの構成を維持することがますます困難になります。
あなたが優れているとみなされるには、少なくとも次の問題を解決できなければならないと思います。
1) オンラインで構成を柔軟に変更する機能
2) オンラインで構成を動的に更新する機能
3) さまざまな環境に応じて構成を構成する機能
4) 構成を一元的に管理、保守できる
では、これらの構成を柔軟に保守するにはどうすればよいでしょうか?いくつかの方法をまとめましたので、さまざまな応用分野に応じて参照してください。
1. データベース方法
すべてのパラメータをデータベースに保存し、システムの起動時にメモリにロードします。
この実装方法は比較的単純ですが、データベース リソースが必要です。システムが単純で負荷が低い場合に使用できます。
2. パッケージング処理方法
Maven の
maven-resources-plugin プラグインを使用し、環境に応じて設定ファイルを提供します (プロファイル)。そのため、さまざまな環境の構成情報はパッケージ化段階で決定されます。
これは、異なるオペレーティング システムでの構成の問題を解決するだけであり、各更新では構成ファイルをオンラインで再パッケージ化または変更することしかできず、情報の同期も困難です。プロジェクトの数は少ないですが、プロジェクトの数が多いと、頻繁に設定を変更する必要があり、非常に面倒になります。
3. 環境変数の方法
プロパティ値を環境変数に設定し、それを読み取って Java システム プロパティに設定できます。これにより、異なる環境を区別するという目的は達成できますが、それでも構成を動的に更新することはできず、環境変数の構成と維持は非常に面倒であり、分散システムでは非常に厄介な問題です。
// 读取环境变量
java.lang.System#getenv(java.lang.String)
// 设置系统属性
java.lang.System#setProperty
ログイン後にコピー
この方法では、ログ、キャッシュ、一時ディレクトリなどの一部のグローバル システム構成を参照できます。主流のログ システムは、システム プロパティからの構成の読み取りをサポートしています。他の一部の構成は、環境変数に保存することが推奨されません。
4. 構成センターの方法
1) 現在、ほとんどの分散構成センターは Zookeeper に基づいて実装されており、すべてオンラインの動的更新と更新構成をサポートする独自の構成センター コンポーネントを備えています。
2) 構成をデータベースに直接保存します。システムの同時実行性が低い場合、または管理システムの場合は、それを参照できますが、同時実行性の高いアプリケーションではデータベースを使用することはお勧めできません。結局のところ、構成センターへのアクセスが圧迫され、構成の動的更新もより複雑になります。
概要
これらは現在適用している 4 つの構成方法です。明らかに、構成センターが最適なソリューションであり、上記の問題も解決しますが、ミドルウェアとその高可用性を利用する必要があります。 。
以上が分散システムでパラメータ設定を処理するための 4 つの方法の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。