Persyaratan: Di server yang sama, proses berkomunikasi satu sama lain menggunakan alur anonim, alur bernama, file pemetaan memori, HTTP, TCP, Aliran Input/Output Standar, dll. Terkadang server perlu menyebarkan beberapa aplikasi, dan aplikasi benar-benar dapat berkomunikasi satu sama lain menggunakan soket domain gRPC dan Unix.
resensi
Soket domain Unix
Soket Unix Domain Socket (UDS), Soket Lokal, atau Komunikasi Antarproses (IPC) adalah titik akhir komunikasi yang bertukar data antar proses yang berjalan di sistem operasi Unix atau Unix yang sama.
Nama soket domain Unix mengacu pada nilai parameter domain yang diteruskan ke fungsi yang membuat sumber daya sistem soket. Domain komunikasi yang sama juga dipilih. [ 1 ] AF_UNIXAF_LOCAL
Nilai parameter yang valid untuk typeUDS adalah:
- SOCK_STREAM (dibandingkan dengan TCP) – Digunakan untuk soket berorientasi aliran
- SOCK_DGRAM (dibandingkan dengan UDP) – soket berorientasi datagram untuk mempertahankan batas pesan (seperti kebanyakan implementasi UNIX, soket datagram domain UNIX selalu andal dan tidak menyusun ulang datagram)
- SOCK_SEQPACKET (dibandingkan dengan SCTP) – Soket paket berurutan untuk koneksi yang mempertahankan batas pesan dan mengirimkan pesan dalam urutan pengirimannya
Alat UDS adalah komponen standar dari sistem operasi POSIX.
Mengapa menggunakan soket domain Unix?
Soket domain Unix memungkinkan komunikasi antar-proses pada satu mesin. Jadi mengapa Anda memilihnya daripada TCP/IP? Misalnya, di TCP/IP, Anda dapat menggunakan alamat loopback (localhost) untuk komunikasi server tunggal. Di Windows, mengapa Anda memilihnya daripada Alur Penamaan Windows?
Secara umum, ada beberapa alasan mengapa Anda mungkin memilih untuk menggunakan UDS daripada TCP/IP untuk komunikasi antarproses:
- Soket domain Unix biasanya memiliki overhead yang lebih sedikit dan kecepatan transfer yang lebih cepat daripada menggunakan TCP/IP
- Soket TCP/IP adalah sumber daya yang terbatas, sedangkan soket domain Unix tidak memiliki batas keras
- Soket domain Unix datang dalam bentuk file, sehingga mudah untuk "menemukan" jalur yang diketahui
- Integrasi dengan sistem file juga menambahkan lapisan keamanan ekstra (jika Anda tidak memiliki akses ke jalur file, Anda tidak dapat mengakses soket)
Poin pertama mudah dipahami - Google cepat akan menunjukkan bahwa tolok ukur UDS dan TCP/IP selalu lebih baik daripada UDS karena tidak hanya memiliki latensi yang jauh lebih rendah, tetapi juga throughput yang jauh lebih tinggi. Hal ini terutama disebabkan oleh fakta bahwa UDS dioptimalkan untuk komunikasi dengan server yang sama,Untuk komunikasi IP, localhost harus melalui tumpukan IP di sisi pengirim dan penerima。
Soket TCP/IP adalah sumber daya yang terbatas; Anda hanya dapat menggunakan hingga 65.535 soket sekaligus. Jika Anda menambahkan masalah, jumlah maksimum soket yang sebenarnya TIME_WAIT tersedia mungkin jauh lebih kecil dari nilai ini. Koneksi localhost juga menggunakan soket di kumpulan ini. Menggunakan UDS dengan cerdik menghindari masalah ini; Ini memungkinkan komunikasi tanpa menghabiskan soket TCP/IP.
peladen
Buat proyek konsol .NET 8 baru, ubah SDK menjadi Microsoft.NET.Sdk.Web, dan konfigurasikan sebagai berikut:
Greet.proto dikonfigurasi sebagai berikut:
Kodenya adalah sebagai berikut:
Setelah kompilasi dimulai, seperti yang ditunjukkan di bawah ini:
klien
Buat proyek konsol .NET 8 baru dan referensikan pustaka berikut:
Metode memanggil antarmuka gRPC dipanggil 10 kali, dan setiap panggilan dipanggil selama 200 milidetik, dan kodenya adalah sebagai berikut:
Mulai proyek, dan setelah eksekusi selesai, seperti yang ditunjukkan pada gambar di bawah ini:
Referensi:
Login hyperlink terlihat.
Login hyperlink terlihat. |