Nõuded: Samas serveris suhtlevad protsessid omavahel anonüümsete torujuhtmete, nimetatud torujuhtmete, mälukaardistusfailide, HTTP, TCP, standardsete sisend/väljundvoogude jms kaudu. Mõnikord peavad serverid juurutama mitut rakendust ning rakendused saavad omavahel suhelda gRPC ja Unix domeenipesade kaudu.
Läbivaatamine
Unix-domeeni pesad
Unix domeeni pesad (UDS), kohalikud soklid või protsessidevahelise kommunikatsiooni (IPC) pesad on kommunikatsiooni lõpp-punktid, mis vahetavad andmeid protsesside vahel, mis töötavad samas Unix- või Unixilaadses operatsioonisüsteemis.
Nimi Unix domeeni pesa viitab domeeni parameetri väärtusele, mis edastati funktsioonile, mis lõi sokli süsteemi ressursi. Valitud on ka sama suhtlusdomeen. [ 1 ] AF_UNIXAF_LOCAL
Kehtivad parameetrid typeUDS-i jaoks on:
- SOCK_STREAM (võrreldes TCP-ga) – Kasutatakse voolupõhiste soklite jaoks
- SOCK_DGRAM (võrreldes UDP-ga) – andmegrammipõhine pesa sõnumite piiride säilitamiseks (nagu enamiku UNIX-i rakenduste puhul, on UNIX-domeeni datagrammipesad alati usaldusväärsed ega järjesta andmegramme ümber)
- SOCK_SEQPACKET (võrreldes SCTP-ga) – järjestikused paketipesad ühendustele, mis säilitavad sõnumite piirid ja edastavad sõnumeid nende saatmise järjekorras
UDS tööriist on POSIX operatsioonisüsteemi standardkomponent.
Miks kasutada Unix-domeeni pesasid?
Unix-domeeni pesad võimaldavad protsessidevahelist suhtlust ühel masinal. Miks siis valida need TCP/IP asemel? Näiteks TCP/IP-s saab kasutada loopback-aadressi (localhost) ühe serveri suhtluseks. Miks sa valiksid Windowsi nimetustorujuhtmete asemel?
Üldiselt on mitmeid põhjuseid, miks võiksite kasutada UDS-i TCP/IP asemel protsessidevahelises suhtluses:
- Unix-domeeni soklidel on tavaliselt väiksem koormus ja kiirem ülekandekiirus kui TCP/IP kasutamisel
- TCP/IP soklid on lõplik ressurss, samas kui Unix-domeeni pesadel puuduvad kindlad piirangud
- Unix-domeeni sokleid on failivormis, nii et teadaolevaid teid on lihtne "avastada"
- Failisüsteemidega integratsioon lisab ka täiendava turvakihi (kui sul pole juurdepääsu failiteele, ei pääse sa socketile ligi).
Esimene punkt on lihtne mõista – kiire googeldamine näitab, et UDS ja TCP/IP võrdlustestid on alati paremad kui UDS, sest sellel on mitte ainult oluliselt madalam latentsus, vaid ka oluliselt suurem läbilaskevõime. See tuleneb peamiselt sellest, et UDS on optimeeritud suhtlemiseks sama serveriga,IP-suhtluseks peab localhost läbima IP-virna nii saatja kui vastuvõtja poolt。
TCP/IP pesad on lõplik ressurss; Korraga saab kasutada kuni 65 535 pistikupesa. Kui lisada probleem, võib maksimaalne pistikupesade arv, mis tegelikult TIME_WAIT, olla palju väiksem kui see väärtus. Localhosti ühendus kasutab samuti selle basseini pesasid. UDS-i kasutamine aitab seda probleemi nutikalt vältida; See võimaldab suhtlust ilma TCP/IP pesasid ammendamata.
server
Loo uus .NET 8 konsooliprojekt, muuda SDK Microsoft.NET.Sdk.Web-iks ja seadista see järgmiselt:
Greet.proto on seadistatud järgmiselt:
Kood on järgmine:
Pärast kogumiku algust, nagu allpool näidatud:
klient
Loo uus .NET 8 konsooliprojekt ja viita järgmistele teekidele:
GRPC liidese kutsumise meetodit kutsutakse 10 korda ning iga kõne kutsutakse 200 millisekundi jooksul ning kood on järgmine:
Alusta projekti ja pärast teostuse lõpetamist, nagu alloleval joonisel näidatud:
Viide:
Hüperlingi sisselogimine on nähtav.
Hüperlingi sisselogimine on nähtav. |