ホームページ >バックエンド開発 >PHPチュートリアル >PHPキュー処理:PHPメッセージキューの実装原理(画像とテキスト)

PHPキュー処理:PHPメッセージキューの実装原理(画像とテキスト)

php是最好的语言
php是最好的语言オリジナル
2018-07-23 10:03:258551ブラウズ

php キューとはどういう意味ですか?それはどのように達成されるのでしょうか?応用シナリオは何ですか?以下では、mysql を使用してデカップリングを実現し、redis を使用してトラフィックを削減することを通して、PHP メッセージ キューの実装原理を詳細に説明します。

キューの概念:

1. キュー構造のミドルウェアです。

2. メッセージが入力された後、すぐに処理する必要はありません

3,

サブスクライバ / コンシューマによって順番に処理されます

キュー原則:

PHPキュー処理:PHPメッセージキューの実装原理(画像とテキスト)

はデカップリングの原則でもあります。ビジネス システムとキュー処理システムは何の関係もありません

1 つは書き込み (ビジネス システム)、もう 1 つは読み取り (キュー管理システム) です。

#ただ

をキューに書き込んでくださいWrite、他には何も気にしないでください。読み終わるかどうかは関係ありません同様に、

キューアウト

から を読み取って、仕事が来たらそれを行い、仕事がないときは休むアプリケーション シナリオ:

冗長性: キューに永続的に保存されます

、その後、注文処理プログラムによって取得されます。処理が完了すると、レコードは削除されます。

デカップリング: はい、デカップリング これら 2 つのシステム(ビジネスとキューの処理)は私たちが普段行っていることです。キューに入るシステムとキューから出るシステムの間には直接の関係はありません。一方のシステムに障害が発生しても、もう一方のシステムは影響を受けません

中央にキューがあるため

トラフィックが減少します。エッジ: フラッシュ セールとラッシュ セール。トラフィックが急激に増加しました。 キャッシュのあるメッセージ キューを使用します (制限を下回っています。たとえば、許可されるのは 10 個のみで、10 個がキューに格納されると、それらは格納されなくなります)フラッシュセールが来るとプロンプトが表示されます)

非同期通信: メッセージ自体がキューに入れられたシステムを 直接返すことができるため、プログラムの非同期動作が実現されていると言われます

シナリオの拡張性:

現在は受注システムと財務システムしかありませんが、将来的には物流システムを追加したいです。

物流システムをサブスクライブさせるだけですこのキューに直接接続しますソート保証: 一部のシナリオ たとえば、

銀行データの処理順序は非常に重要です

。シングルスレッド、シングル入力、シングル出力のシステムにすることができます実装媒体:

1. mysql の使用: 高信頼性、簡単

#2. Redis の使用: 高速、単一の大きなメッセージ パッケージ 効率が低い #3. よりプロフェッショナルなサードパーティのクラス ライブラリを使用: 高度にプロフェッショナル、信頼性が高く、高品質学習コスト。

メッセージ処理トリガー メカニズム:

1. 無限ループ読み取り: 実装は簡単ですが、障害が発生した場合は時間内に応答できません (

短期間に適しています)フラッシュセールなど

)

2. スケジュールされたタスク: 圧力は均等に分散され、処理の上限があります (キューの前のシステムのピーク値がどれほど不安定であっても、キューの背後にあるシステムは引き続き定期的に実行します

)

#注: タイミングが重要です。前のスケジュールされたタスクが完了する前に、次のスケジュールされたタスクを開始しないでください

ケース: 注文システム、注文する 注文情報をキューに書き込むと、すぐに注文が正常に行われたことが返されます。配信システムは数分ごとにキューを読み取ります定期的に、注文を要約します

3. デーモンプロセス: php-fpm や cgi と同様、シェルの基本が必要です (このプロセスを使用して、キューにコンテンツがあります。コンテンツがある場合は、処理のためにデキュー システムを開始します)

mysql を使用してデカップリング ケースを実装します:

デカップリングを行う理由: アーキテクチャが統合されている場合。注文システムには大きな負荷がかかっており、物流情報をすぐに返す必要はありません。注文が崩壊すると、物流も崩壊するため、


# テーブル設計:

## を切り離す必要があります。

##注文システムはキューにコードを書き込みます: PHPキュー処理:PHPメッセージキューの実装原理(画像とテキスト)

PHPキュー処理:PHPメッセージキューの実装原理(画像とテキスト)#流通システムはキュー コードを読み取ります:

PHPキュー処理:PHPメッセージキューの実装原理(画像とテキスト)

スケジュールされたタスクの実行Crontab -e


注: このログ ファイルは自分で作成する必要があります。


1. からアクセスします。ブラウザ order.phpAdd order

2. データベースに移動して結果を確認し、ログインで結果を確認します。 shell ( 実行は成功しませんでした。おそらくこの sh ファイルは特定のディレクトリに配置する必要があります。レビューが完了したら実行します)


トラフィック削減のための Redis の使用ケース



アイデア:

1. フラッシュ セール プログラムが redis への書き込みを要求します

2. redis に格納されているデータの長さを確認し、上限を超えている場合は、直接破棄されます (フラッシュセールの最後に戻ります)

3. 無限ループ処理と redis への保存 データはデータベースにマージされます

テーブル設計:


# フラッシュ セール コード:


ストレージ コード:


ブラウザから user.php

atshell に直接アクセスするには、php -f savetodb.php を使用します。

データベースに移動して表示します

関連する推奨事項:

PHP メッセージ キュー サービス

以上がPHPキュー処理:PHPメッセージキューの実装原理(画像とテキスト)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。