Pembangunan PHP: Menggunakan Grpc dan Protobuf untuk melaksanakan perkhidmatan RPC berprestasi tinggi

WBOY
Lepaskan: 2023-06-15 22:18:02
asal
2881 orang telah melayarinya

Dengan pembangunan berterusan teknologi Internet, seni bina sistem teragih menjadi semakin biasa. RPC (Remote Procedure Call), sebagai kaedah komunikasi untuk seni bina sistem teragih, telah menarik lebih banyak perhatian daripada pembangun. Dalam pelaksanaan perkhidmatan RPC, cara meningkatkan prestasi menjadi isu utama. Artikel ini akan memperkenalkan cara menggunakan Grpc dan Protobuf untuk melaksanakan perkhidmatan RPC berprestasi tinggi.

1. Apakah itu Grpc dan Protobuf

Grpc ialah rangka kerja RPC merentas bahasa yang berprestasi tinggi, ringan dan dibangunkan oleh Google. Ia menggunakan protokol berdasarkan HTTP/2, yang boleh menyokong penghantaran data penstriman pelanggan dan pelayan, pemampatan data, pengesahan keselamatan SSL dan banyak fungsi lain Ia digunakan secara meluas dalam pengkomputeran awan, data besar, Internet of Things dan bidang lain.

Protobuf (Penimbal Protokol) ialah format siri yang cekap sumber terbuka oleh Google. Ia digunakan untuk penghantaran rangkaian dan penyimpanan data Ia boleh menyusun data berstruktur ke dalam format binari, dan menghantar serta menghuraikannya antara program pada platform dan bahasa yang berbeza. Ciri terbesar Protobuf ialah saiznya yang kecil, kelajuan pantas, dan kebebasan bahasa Ia adalah format data yang sangat sesuai untuk penghantaran dan penyimpanan rangkaian.

2. Kelebihan Grpc dan Protobuf

Dalam proses melaksanakan perkhidmatan RPC, menggunakan Grpc dan Protobuf boleh membawa kelebihan berikut:

  1. Penghantaran data yang cekap

Grpc menggunakan protokol berdasarkan HTTP/2 dan menyokong pemultipleksan, pemampatan pengepala, kawalan aliran dan fungsi lain, yang boleh meningkatkan kecekapan penghantaran data sambil memastikan keselamatan.

Protobuf menggunakan pengekodan binari, yang lebih cekap dalam penghantaran dan penyimpanan data daripada format data XML dan JSON tradisional Ia boleh mengurangkan saiz paket data dan mengurangkan kos penghantaran rangkaian.

  1. Sokongan merentas platform, berbilang bahasa

Grpc menyokong berbilang bahasa pengaturcaraan, termasuk C++, Java, Python, Go, Node.js, Ruby, dll., dan boleh digunakan merentas platform.

Protobuf juga menyokong berbilang bahasa pengaturcaraan, seperti C++, Java, Python, Go, Ruby, C#, dsb., membolehkan bahasa berbeza berkomunikasi melalui format data yang sama.

  1. Penjana kod menjana kod secara automatik

Penjana kod untuk Grpc dan Protobuf boleh menjana kod pelayan dan klien yang sepadan berdasarkan fail Protobuf yang ditentukan, mengelakkan penulisan manual Kod pendua kerja.

3. Langkah pelaksanaan

Berikut akan memperkenalkan langkah khusus untuk menggunakan Grpc dan Protobuf untuk melaksanakan perkhidmatan RPC berprestasi tinggi:

  1. Pasang Grpc dan Protobuf

Mula-mula anda perlu memasang Grpc dan Protobuf. Anda boleh memuat turun pakej pemasangan yang sepadan dari tapak web rasmi (https://grpc.io/docs/languages/) atau memasangnya melalui pengurus pakej.

  1. Tentukan fail Penampan Protokol

Apabila mentakrifkan fail Penampan Protokol, anda perlu menentukan format mesej, antara muka perkhidmatan, kaedah RPC, dsb. Sebagai contoh, berikut ialah contoh fail:

syntax = "proto3";

message Request {
    string message = 1;
}

message Response {
    string message = 1;
}

service GrpcService {
    rpc SayHello(Request) returns (Response) {}
}
Salin selepas log masuk

di mana Permintaan dan Respons ialah format mesej, GrpcService ialah antara muka perkhidmatan dan SayHello ialah kaedah RPC. Dengan mentakrifkan fail Penampan Protokol, bahasa yang berbeza boleh berkomunikasi menggunakan format data yang sama.

  1. Tulis kod sebelah pelayan

Dalam kod sebelah pelayan, anda perlu melaksanakan antara muka perkhidmatan yang ditentukan. Kod sebelah pelayan boleh dijana secara automatik berdasarkan fail Protobuf yang ditentukan dan kaedah SayHello boleh dilaksanakan di dalamnya. Mengambil PHP sebagai contoh, kodnya adalah seperti berikut:

require __DIR__ . '/vendor/autoload.php';

use GrpcServerGrpcGrpcServiceServer;
use GrpcServerGrpcRequest;
use GrpcServerGrpcResponse;

class GrpcService extends GrpcServiceServer
{
    public function SayHello(Request $request) : Response
    {
        $response = new Response();
        $response->setMessage("Hello " . $request->getMessage());
        return $response;
    } 
}

$server = new SwooleCoroutineHttpServer("0.0.0.0", 9090);
$server->handle("/grpc", GrpcService::class);
$server->start();
Salin selepas log masuk

Antaranya, GrpcService mewarisi kelas GrpcServiceServer dalam kod pelayan Grpc yang dihasilkan dan melaksanakan kaedah SayHello. Apabila perkhidmatan bermula, anda boleh mengikat kelas GrpcService ke port alamat dan memulakan perkhidmatan.

  1. Tulis kod klien

Dalam kod klien, anda perlu mencipta klien Grpc terlebih dahulu dan memanggil kaedah SayHello pelayan. Kod pelanggan juga boleh dijana secara automatik berdasarkan fail Protobuf yang ditentukan. Contoh kod klien PHP adalah seperti berikut:

require __DIR__ . '/vendor/autoload.php';

use GrpcServerGrpcGrpcServiceClient;
use GrpcServerGrpcRequest;

$client = new GrpcServiceClient("localhost:9090", [
    'credentials' => GrpcChannelCredentials::createInsecure(),
]); 

$request = new Request();
$request->setMessage("John");

$response = $client->SayHello($request);
echo $response->getMessage();
Salin selepas log masuk

Antaranya, klien Grpc dicipta dan alamat dan port pelayan dihantar, serta maklumat sijil yang berkaitan. Kemudian objek Permintaan dicipta, atribut mesejnya ditetapkan, dan kaedah SayHello di dalam pelayan Grpc dipanggil untuk mendapatkan hasil tindak balas dan mengeluarkannya.

4. Ringkasan

Artikel ini memperkenalkan langkah khusus untuk menggunakan Grpc dan Protobuf untuk melaksanakan perkhidmatan RPC berprestasi tinggi. Grpc dan Protobuf mempunyai kelebihan besar dalam penghantaran rangkaian dan penyimpanan data, dan boleh meningkatkan prestasi perkhidmatan RPC dengan berkesan. Dalam pembangunan sebenar, rangka kerja RPC yang sesuai boleh dipilih mengikut senario aplikasi tertentu, dengan itu meningkatkan kecekapan dan prestasi sistem yang diedarkan.

Atas ialah kandungan terperinci Pembangunan PHP: Menggunakan Grpc dan Protobuf untuk melaksanakan perkhidmatan RPC berprestasi tinggi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
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