Požiadavky: Na tom istom serveri medzi sebou procesy komunikujú pomocou anonymných pipeline, pomenovaných pipeline, súborov mapovania pamäte, HTTP, TCP, štandardných vstupno/výstupných tokov a podobne. Niekedy servery potrebujú nasadiť viacero aplikácií a aplikácie môžu medzi sebou komunikovať pomocou gRPC a unixových doménových socketov.
revízia
Unixové doménové sockety
Unixové doménové sockety (UDS), lokálne sockety alebo interprocesové komunikačné (IPC) sockety sú komunikačné koncové body, ktoré si vymieňajú dáta medzi procesmi bežiacimi v tom istom Unix alebo Unix-like operačnom systéme.
Názov Unixový doménový socket odkazuje na hodnotu doménového parametra, ktorá bola odovzdaná funkcii, ktorá vytvorila zdroj systému socketu. Tiež sa vyberá rovnaká komunikačná doména. [ 1 ] AF_UNIXAF_LOCAL
Platné hodnoty parametrov pre typeUDS sú:
- SOCK_STREAM (v porovnaní s TCP) – Používa sa pre sockety orientované na prúd
- SOCK_DGRAM (v porovnaní s UDP) – socket orientovaný na datagramy na zachovanie hraníc správ (ako pri väčšine UNIX implementácií, sockety UNIX domény datagramov sú vždy spoľahlivé a nepreusporiadajú datagramy)
- SOCK_SEQPACKET (v porovnaní so SCTP) – Sekvenčné paketové sockety pre spojenia, ktoré zachovávajú hranice správ a doručujú správy v poradí, v akom sú odoslané
Nástroj UDS je štandardnou súčasťou operačného systému POSIX.
Prečo používať Unixové doménové sockety?
Unixové doménové sockety umožňujú komunikáciu medzi procesmi na jednom stroji. Tak prečo by ste si ich vybrali namiesto TCP/IP? Napríklad v TCP/IP môžete použiť spätnú adresu (localhost) pre komunikáciu s jedným serverom. Prečo by ste si ich na Windows vybrali namiesto Windows Naming Pipelines?
Vo všeobecnosti existuje niekoľko dôvodov, prečo by ste mohli zvoliť UDS namiesto TCP/IP pre medziprocesovú komunikáciu:
- Unixové doménové sockety majú zvyčajne menšiu režijnú záťaž a rýchlejšie prenosové rýchlosti ako použitie TCP/IP
- TCP/IP sockety sú obmedzený zdroj, zatiaľ čo sockety v Unix doméne nemajú pevné limity
- Unixové doménové sockety sú dostupné vo forme súboru, takže je jednoduché "objaviť" známe cesty
- Integrácia so súborovými systémami tiež pridáva ďalšiu vrstvu bezpečnosti (ak nemáte prístup k ceste k súboru, nemôžete pristupovať k socketu)
Prvý bod je ľahko pochopiteľný – rýchly Google ukáže, že benchmarky UDS a TCP/IP sú vždy lepšie ako UDS, pretože majú nielen výrazne nižšiu latenciu, ale aj výrazne vyššiu priepustnosť. Je to hlavne preto, že UDS je optimalizovaný na komunikáciu s rovnakým serverom,Pre IP komunikáciu musí localhost prejsť cez IP stack na oboch stranách odosielateľa aj prijímateľa。
TCP/IP sockety sú obmedzeným zdrojom; Naraz môžete použiť maximálne 65 535 socketov. Ak k tomu pridáte problém, maximálny počet socketov, ktoré TIME_WAIT skutočne dostupné, môže byť oveľa menší ako táto hodnota. Pripojenie localhost tiež spotrebúva sockety v tomto poole. Použitie UDS šikovne tento problém obchádza; Umožňuje komunikáciu bez vyčerpania TCP/IP socketov.
server
Vytvorte nový .NET 8 konzolový projekt, zmeňte SDK na Microsoft.NET.Sdk.Web a nakonfigurujte ho nasledovne:
Greet.proto je nakonfigurovaný nasledovne:
Kód je nasledovný:
Po začiatku kompilácie, ako je uvedené nižšie:
klient
Vytvorte nový .NET 8 konzolový projekt a odkazujte na nasledujúce knižnice:
Spôsob volania rozhrania gRPC sa volá 10-krát, pričom každé volanie trvá 200 milisekúnd a kód je nasledovný:
Začnite projekt a po dokončení realizácie, ako je znázornené na obrázku nižšie:
Referencia:
Prihlásenie na hypertextový odkaz je viditeľné.
Prihlásenie na hypertextový odkaz je viditeľné. |