Zahteve: Na istem strežniku procesi komunicirajo med seboj z anonimnimi cevovodi, imenovanimi cevovodi, datotekami za preslikavo pomnilnika, HTTP, TCP, standardnimi vhodno/izhodnimi tokovi itd. Včasih morajo strežniki namestiti več aplikacij, aplikacije pa lahko dejansko komunicirajo med seboj preko gRPC in Unix domenskih vtičnic.
pregled
Unixove domenske vtičnice
Unix domenske vtičnice (UDS), lokalne vtičnice ali vtičnice za medprocesno komunikacijo (IPC) so komunikacijske končne točke, ki izmenjujejo podatke med procesi, ki tečejo v istem Unixu ali Unixu podobnem operacijskem sistemu.
Ime Unixova domenska vtičnica se nanaša na vrednost parametra domene, ki je bila prenesena funkciji, ki je ustvarila sistemski vir vtičnice. Izbrana je tudi ista komunikacijska domena. [ 1 ] AF_UNIXAF_LOCAL
Veljavne vrednosti parametrov za typeUDS so:
- SOCK_STREAM (v primerjavi s TCP) – Uporablja se za pretočno usmerjene vtičnice
- SOCK_DGRAM (v primerjavi z UDP) – podatkovno usmerjena vtičnica za ohranjanje meja sporočil (kot pri večini UNIX implementacij so UNIX domenski datagrami vedno zanesljivi in ne spreminjajo razporeda podatkovnih podatkov)
- SOCK_SEQPACKET (v primerjavi s SCTP) – Zaporedne paketne vtičnice za povezave, ki ohranjajo meje sporočil in prenašajo sporočila v vrstnem redu pošiljanja
Orodje UDS je standardna komponenta operacijskega sistema POSIX.
Zakaj uporabljati Unix domenske vtičnice?
Unixovi domenski vtičniki omogočajo medprocesno komunikacijo na enem samem računalniku. Zakaj bi jih torej izbrali namesto TCP/IP? Na primer, v TCP/IP lahko uporabite loopback naslov (localhost) za komunikacijo med enim strežnikom. Zakaj bi jih na Windows izbrali namesto Windows Naming Pipelines?
Na splošno obstaja več razlogov, zakaj bi se za medprocesno komunikacijo odločili za uporabo UDS namesto TCP/IP:
- Unixovi domenski vtičniki imajo običajno manjši režijski strošek in hitrejše prenosne hitrosti kot uporaba TCP/IP
- TCP/IP vtičnice so omejen vir, medtem ko Unixove domenske vtičnice nimajo trdih omejitev
- Unixovi domenski vtičniki so na voljo v datotečni obliki, zato je enostavno "odkriti" znane poti
- Integracija z datotečnimi sistemi doda dodatno plast varnosti (če nimaš dostopa do poti do datoteke, ne moreš dostopati do socketa)
Prva točka je enostavna za razumevanje – hiter Google bo pokazal, da so UDS in TCP/IP testi vedno boljši od UDS, ker imajo ne le bistveno nižjo latenco, ampak tudi bistveno višjo prepustnost. To je predvsem zato, ker je UDS optimiziran za komunikacijo z istim strežnikom,Za IP komunikacijo mora localhost iti skozi IP sklad tako na strani pošiljatelja kot prejemnika。
TCP/IP vtičnice so omejen vir; Hkrati lahko uporabljate največ 65.535 vtičnic. Če dodate težavo, je največje število vtičnic, ki TIME_WAIT dejansko na voljo, lahko precej manjše od te vrednosti. Povezava lokalnega gostitelja prav tako porablja vtičnice v tem bazenu. Uporaba UDS pametno preprečuje ta problem; Omogoča komunikacijo brez izčrpavanja TCP/IP vtičnic.
strežnik
Ustvarite nov .NET 8 konzolni projekt, spremenite SDK v Microsoft.NET.Sdk.Web in ga nastavite takole:
Greet.proto je konfiguriran takole:
Koda je naslednja:
Po začetku prevajanja, kot je prikazano spodaj:
odjemalec
Ustvarite nov .NET 8 konzolni projekt in se sklicujete na naslednje knjižnice:
Metoda klica vmesnika gRPC se pokliče 10-krat, vsak klic pa traja 200 milisekund, koda pa je naslednja:
Začnite projekt in po zaključku izvedbe, kot je prikazano na spodnji sliki:
Referenčni:
Prijava do hiperpovezave je vidna.
Prijava do hiperpovezave je vidna. |