Követelmények: Ugyanazon a szerveren a folyamatok anonim csővezetékek, elnevezett csővezetékek, memória leképező fájlok, HTTP, TCP, Standard Bemenet/Kimenet Folyamok stb. segítségével kommunikálnak egymással. Néha a szervereknek több alkalmazást kell telepíteniük, és az alkalmazások valójában kommunikálhatnak egymással gRPC és Unix domain socketek segítségével.
szemle
Unix domain socketek
A Unix Domain Socketek (UDS), Helyi Socketek vagy Interprocess Communication (IPC) csatlakozók olyan kommunikációs végpontok, amelyek adatokat cserélnek a processzorok között, amelyek ugyanabban a Unix- vagy Unix-szerű operációs rendszerben futó folyamatok között cserélnek.
A Unix domain socket név arra a domain paraméterértékre utal, amely a socket rendszer erőforrását létrehozó függvényhez továbbított. Ugyanezt a kommunikációs területet választják ki. [ 1 ] AF_UNIXAF_LOCAL
A typeUDS érvényes paraméterértékei a következők:
- SOCK_STREAM (a TCP-hez képest) – Áramforrás-orientált aljzatokhoz használják
- SOCK_DGRAM (az UDP-hez képest) – egy datagram-orientált socket az üzenethatárok megőrzésére (mint a legtöbb UNIX megvalósításnál, a UNIX tartomány datagram socketek mindig megbízhatóak, és nem rendezik újra a datagramokat)
- SOCK_SEQPACKET (az SCTP-hez képest) – Szekvenciális csomagfoglaltok olyan kapcsolatokhoz, amelyek megőrzik az üzenethatárokat és az üzeneteket a küldésük sorrendjében szállítják
Az UDS eszköz a POSIX operációs rendszer szabványos része.
Miért használunk Unix domain socketeket?
A Unix domain socketek lehetővé teszik a folyamatok közötti kommunikációt egyetlen gépen. Akkor miért választanád őket a TCP/IP helyett? Például TCP/IP-ben használhatsz egy loopback címet (localhost) az egyetlen szerver közötti kommunikációhoz. Windowson miért választanád őket a Windows névadási folyamatok helyett?
Általánosságban több oka is van annak, hogy az UDS-t választod a TCP/IP helyett a folyamatközi kommunikációhoz:
- Az Unix domain socketek általában kevesebb terheléssel és gyorsabb átviteli sebességgel rendelkeznek, mint a TCP/IP használata
- A TCP/IP socketek véges erőforrás, míg a Unix domain socketeknek nincs kemény korlátjuk
- A Unix domain socketek fájl formájában érkeznek, így könnyű "felfedezni" az ismert útvonalakat
- A fájlrendszerekkel való integráció egy extra biztonsági réteget is hozzáad (ha nincs hozzáférésed a fájlúthoz, nem férsz hozzá a sockethez)
Az első pont könnyen érthető – egy gyors Google-keresés azt mutatja, hogy az UDS és TCP/IP benchmarkok mindig jobbak, mint az UDS, mert nemcsak jelentősen alacsonyabb a késleltetése, hanem jóval magasabb az áteresztőképessége is. Ez főként annak köszönhető, hogy az UDS optimalizált a kommunikációra ugyanazzal a szerverrel,IP-kommunikációhoz a localhostnak mind a feladó, mind a vevő oldalán keresztül kell átmennie az IP veremén。
A TCP/IP socketek véges erőforrást; Egyszerre legfeljebb 65 535 aljzat használhatsz. Ha hozzáadjuk a problémát, a ténylegesen elérhető maximális foglalatszám sokkal kisebb lehet, mint TIME_WAIT ez az érték. A localhost kapcsolat is elfogyaszt socketeket ebben a poolban. Az UDS használata ügyesen elkerüli ezt a problémát; Lehetővé teszi a kommunikációt anélkül, hogy kimerítené a TCP/IP socketeket.
kiszolgáló
Hozz létre egy új .NET 8 konzolprojektet, változtasd az SDK-t Microsoft.NET.Sdk.Web-re, és konfiguráld az alábbiakkal:
A Greet.proto a következőképpen van konfigurálva:
A kódex a következő:
A válogatás kezdete után, ahogy az alábbiakban látható:
ügyfél
Hozz létre egy új .NET 8 konzolprojektet, és hivatkozz a következő könyvtárakra:
A gRPC interfész hívásának módszerét 10-szer hívják, és minden hívást 200 milliszekundumon keresztül hívnak, a kód pedig a következő:
Kezdjük el a projektet, és a végrehajtás befejezése után, ahogy az alábbi ábrán látható:
Utalás:
A hiperlink bejelentkezés látható.
A hiperlink bejelentkezés látható. |