Bagaimana untuk melaksanakan baris gilir mesej dan komunikasi yang diedarkan menggunakan perkhidmatan mikro PHP

王林
Lepaskan: 2023-09-24 15:56:02
asal
609 orang telah melayarinya

Bagaimana untuk melaksanakan baris gilir mesej dan komunikasi yang diedarkan menggunakan perkhidmatan mikro PHP

Cara menggunakan perkhidmatan mikro PHP untuk melaksanakan baris gilir dan komunikasi mesej yang diedarkan

Pengenalan:
Dengan perkembangan pesat aplikasi Internet, keperluan untuk sistem pengedaran berskala besar menjadi semakin mendesak. Sistem teragih boleh meningkatkan ketersediaan sistem, kebolehskalaan dan prestasi. Salah satu komponen penting ialah baris gilir mesej dan mekanisme komunikasi. Artikel ini akan memperkenalkan cara menggunakan seni bina perkhidmatan mikro PHP untuk melaksanakan baris gilir dan komunikasi mesej yang diedarkan, dan menyediakan contoh kod khusus.

1. Apakah seni bina perkhidmatan mikro ialah corak reka bentuk seni bina yang membahagikan aplikasi kepada perkhidmatan kecil yang dijalankan secara bebas. Setiap perkhidmatan boleh digunakan, dikembangkan dan diurus secara bebas, dan perkhidmatan berkomunikasi melalui mekanisme komunikasi yang ringan. Seni bina perkhidmatan mikro boleh memberikan kebolehselenggaraan, skalabiliti dan kebolehpercayaan yang lebih baik.

2. Baris Gilir Mesej Teragih

Baris gilir mesej teragih ialah mekanisme yang digunakan untuk komunikasi tak segerak dalam sistem teragih. Ia membolehkan penyahgandingan, daya tahan dan kebolehpercayaan. Mesej dalam baris gilir mesej boleh digunakan oleh perkhidmatan yang berbeza, membolehkan perkhidmatan yang berbeza berfungsi bersama secara longgar. Baris gilir mesej edaran yang biasa digunakan termasuk Kafka, RabbitMQ, dsb.

    Pasang RabbitMQ
  1. Pertama, anda perlu memasang RabbitMQ. Anda boleh memuat turun dan memasang RabbitMQ melalui laman web rasmi Untuk langkah pemasangan tertentu, sila rujuk dokumentasi rasmi.
  2. Buat pengeluar dan pengguna
  3. Seterusnya buat pengeluar dan pengguna, kod sampel adalah seperti berikut:
memerlukan_sekali __DIR__.'/vendor/autoload.php';
pggunakan PhpAmtream menggunakan PhpAmction mqpLibMessageAMQPMessage ;


// Producer

$connection = new AMQPStreamConnection('localhost', 5672, 'tetamu', 'tetamu');

$channel = $connection->channel();

$channel-> ;queue_declare(queue_declare 'hello', false, false, false, false);

$msg = new AMQPMessage('Hello World!');

$channel->basic_publish($msg, '', 'hello'); " [x] Dihantar 'Hello World!'

";

$channel->close();

$connection->close();

// Consumer

$connection = new AMQPStreamConnection( 'localhost', 5672, 'tetamu', 'tetamu');
$channel = $connection->channel();

$channel->queue_declare('hello', false, false, false, false

echo "); [*] Menunggu mesej. Untuk keluar tekan CTRL+C

";

$callback = function ($msg) {

echo ' [x] Received ', $msg->body, "
" ;

};


$channel->basic_consume('hello', '', false, true, false, false, $callback);

sementara ($channel->is_consuming()) {

$channel- >tunggu( );

}

?>



Menjalankan pengeluar dan pengguna
Jalankan pengeluar dan kod pengguna dalam baris arahan:

  1. php producer.php
  2. php consumer.php

Pengeluar akan beratur menghantar mesej kepada pengeluar dan pengguna akan menerima dan mencetak mesej tersebut. Anda boleh menguji mekanisme pengedaran mesej dengan menjalankan pengguna beberapa kali.

3. Komunikasi perkhidmatan mikro

Dalam seni bina perkhidmatan mikro, perkhidmatan perlu berkomunikasi antara satu sama lain untuk bekerjasama. Kaedah komunikasi perkhidmatan mikro yang biasa digunakan termasuk HTTP, RPC, baris gilir mesej, dsb.

Berkomunikasi menggunakan HTTP
HTTP ialah protokol komunikasi perkhidmatan mikro yang biasa digunakan yang boleh berkomunikasi melalui permintaan dan respons HTTP. Pustaka HTTP PHP biasa termasuk Guzzle, Symfony HTTP Client, dsb. Kod sampel adalah seperti berikut:

  1. memerlukan 'vendor/autoload.php';
use GuzzleHttpClient;


$client = new Client();

request$response = $client-> ('GET ', 'https://example.com');

echo $response->getBody();

?>

Menggunakan komunikasi RPC
RPC (Panggilan Prosedur Jauh) ialah kaedah untuk diedarkan protokol komunikasi sistem. Ia membolehkan perkhidmatan yang berbeza untuk berkomunikasi dengan fungsi panggilan. Pustaka PHP RPC biasa termasuk gRPC, Thrift, dsb. Kod sampel adalah seperti berikut:

  1. memerlukan_sekali 'vendor/autoload.php';
use HelloworldHelloRequest;

use HelloworldHelloResponse;
use HelloworldGreeterClient;

=

0GreeterClient;
=
GreeterClient baru , [

'credentials' => GrpcChannelCredentials::createInsecure(),
Salin selepas log masuk

]);

$request = new HelloRequest();

$request->setName('World');


$response = $client->SayHello($request);

echo $response- >getMessage();

?>


Berkomunikasi menggunakan baris gilir mesej
    Dalam sistem yang diedarkan, menggunakan baris gilir mesej untuk komunikasi boleh mencapai penyahgandingan, daya tahan dan kebolehpercayaan. Untuk kod contoh, sila rujuk contoh baris gilir mesej yang diedarkan di bahagian sebelumnya.

  1. Kesimpulan:
Seni bina perkhidmatan mikro PHP boleh mencapai komunikasi tak segerak dalam sistem teragih dengan menggunakan baris gilir mesej dan mekanisme komunikasi. Melalui kod sampel, kami boleh memahami cara menggunakan perkhidmatan mikro PHP untuk melaksanakan baris gilir dan komunikasi mesej yang diedarkan. Teknologi ini boleh meningkatkan kebolehpercayaan dan prestasi sistem serta menyediakan penyelesaian yang berkesan untuk pembangunan sistem teragih.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan baris gilir mesej dan komunikasi yang diedarkan menggunakan perkhidmatan mikro PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan