分散サービスガバナンスの設計上の問題はありますか?
C++ を使用してマイクロサービスの [登録センター] を実装し、この登録センターの高可用性を実装しました。サービスがオンラインになると、[登録センター] に登録されます。登録センター] がプッシュされます。このサーバー アドレスは [サービス コンシューマー] に送信されます。このように、[サービス コンシューマ] はすべての [マイクロサービス マップ] を保持します。負荷分散は [サービス コンシューマ] 内で行われるため、[サービス コンシューマ] はメモリ上に常駐する必要があります。 Python にとっては Java の方が簡単ですが、FPM を使用する PHP にとっては、従来の FPM PHP がこのアーキテクチャをサポートできるように PHP を変換する方法に相当します。 Dubboも似たような感じでやっているようなので、フロントエンドをPHPでやるとちょっと大変ではないでしょうか?
返信内容:
負荷分散には 2 つの方法があります:クライアント負荷分散、通常は Finagle と Dubbo。利点は、実装が簡単で、サービスが直接接続されており、パフォーマンスが高いことです。欠点は、複数の言語を使用する場合、言語ごとにクライアントを実装する必要があることです。
サーバー側のロードバランシング、典型的なロードバランサーはNginxとHAProxyです。通常、リバース プロキシはサービスの前に追加されます。クライアントはリバース プロキシを介してサーバーと通信し、特定の負荷分散ロジックはロード バランサーによって実装されます。ロードバランサー自体をレジストリに登録することもできます。利点は、クライアントが非常にシンプルであり、複数の言語をサポートしていることです。欠点は、パフォーマンスが若干低下することです。
具体的な選択は、ビジネスと企業のテクノロジーの選択によって異なります。多言語シナリオでは、サーバー側のソリューションにより、クライアントを保守するチームがいる場合は、もちろん、そのことについては言及しませんが、結局のところ、そのチームは何をする必要があるのでしょうか。
純粋な Java シナリオの場合、Dubbo または同様のフレームワークがすでにサポートされている場合は、気にする必要はありません。
メインのシナリオに戻ると、PHP サービスでサービス検出を実装する必要がある場合は、サービス レジストリを memcache に置くなどしてキャッシュし、時々再度プルすることができます。
上 最も簡単な (そしておそらく最も信頼できる) 解決策は、PHP サーバー上でエージェントを実行して登録センターを監視することです。このエージェントは、FPM によって PHP が呼び出された後、この構成を読み取ります。 。
一般的に、ほとんどすべてのフレームワークには設定ファイルがあります。このファイルを直接変更するだけで済みます (設定ファイルを読み取る必要があるため)。 この設計方法には一定の利点があります。つまり、サービス バスに属する一部の機能がサービス コンシューマ ノードに完全に下位層化されており、この方法ではバス自体の機能が軽くなり、サービスの登録と登録の配布のみを管理します。情報。登録センターのダウンタイムは、基本的にサービスの消費と呼び出しには影響しません。
先ほど述べた問題を考慮すると、解決策は 2 つあります。1 つは、ルーティングや負荷分散など、バスに戻るサービス エージェントの機能を改善することです。これを実行したくない場合は、別のサーバーをセットアップして、このサーバーにサービス消費とルーティング バランシング ロジックを実装することも検討できます。このサーバーは、PHP アプリケーションに対応するバックエンド プロキシとみなすことができます。 マイクロサービスでクライアント負荷分散を使用することは大きなトレンドだと思います。理由は 3 つあります。1 つはパフォーマンス上の利点です。2 つ目は、登録センターがダウンしても正常に実行できることです。ダウングレードなどのロジックについては、クライアント自体がサーキット ブレーカーとサービスを実装する必要があるため、単純な負荷分散ロジックを実装することをお勧めします。 PHP にはあまり詳しくありませんが、サービス構成を特定の service_config.php ファイルに書き込み、この service_config.php を他のファイルに含めることは可能ですか?以前に検出されたファイルのタイムスタンプが含まれます。一定時間 (1 分など) を超えると、構成書き込みファイルが登録センターから再度取得されます。 2 つのソリューション
1. Swoole: PHP の非同期、並列、高性能ネットワーク通信エンジン
swoole を使用して、永続的な内部テスト PHP サーバーを作成できます
2. キャッシュ
APCu を使用します (PHP: APCu - マニュアル)
) または redis では、サーバー アドレス リストをキャッシュします。これは、特定のパフォーマンス要件とサービス リストの一貫性要件によって異なります。ネットワーク オーバーヘッドが心配な場合は、キャッシュが短くなる可能性があります。 Redis キャッシュの読み取りと書き込みの場合、APCu を使用できます。このローカル キャッシュ むくむ

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

PHP8では、一致式は、式の値に基づいて異なる結果を返す新しい制御構造です。 1)Switchステートメントに似ていますが、実行ステートメントブロックの代わりに値を返します。 2)一致式の式は厳密に比較され、セキュリティが向上します。 3)スイッチステートメントの脱落の可能性を回避し、コードのシンプルさと読みやすさを向上させます。

PHPの...(SPLAT)演算子は、機能パラメーターと配列を開梱するために使用され、コードのシンプルさと効率を向上させます。 1)関数パラメーター解放:アレイ要素をパラメーターとして関数に渡します。 2)配列の開梱:アレイを別の配列または関数パラメーターに解除します。

H5ページは、コードの脆弱性、ブラウザー互換性、パフォーマンスの最適化、セキュリティの更新、ユーザーエクスペリエンスの改善などの要因のため、継続的に維持する必要があります。効果的なメンテナンス方法には、完全なテストシステムの確立、バージョン制御ツールの使用、定期的にページのパフォーマンスの監視、ユーザーフィードバックの収集、メンテナンス計画の策定が含まれます。

クロール中に58.com作業ページの動的データを取得するにはどうすればよいですか? Crawlerツールを使用して58.comの作業ページをrawったら、これに遭遇する可能性があります...

1.0.1序文このプロジェクト(コードとコメントを含む)は、私の独学の錆の間に記録されました。不正確または不明確な声明があるかもしれませんが、謝罪してください。あなたがそれから利益を得るなら、それはさらに良いです。 1.0.2なぜRustrustは信頼性が高く効率的ですか? Rustは、CとCを同様のパフォーマンスであり、セキュリティが高くなり、CやCのようなエラーを確認するために頻繁な再コンパイルを必要としません。主な利点には、メモリセキュリティ(nullポインターの防止、ぶら下がりポインター、およびデータ競合の防止)が含まれます。スレッドセーフ(実行前にマルチスレッドコードが安全であることを確認してください)。未定義の動作を避けてください(例:境界のない配列、未知の変数、または解放されたメモリへのアクセス)。 Rustは、ジェネリックなどの最新の言語機能を提供します

PHPでは、予測不可能なトークンを使用して、CSRF攻撃を効果的に防ぐことができます。特定の方法には次のものが含まれます。1。フォームのCSRFトークンを生成および埋め込みます。 2.リクエストを処理するときにトークンの有効性を確認します。

JavaScriptコードの詳細な説明JavaScriptコードを書くとき、私たちはしばしば長すぎるコードの行に遭遇します。
