áá¬ááááŸáááá²á·ááá¯á·
ááá±ážáá±á¬á·áá²á·á¡áá¬áááºááŸá¬ ááœáŸáá·áºáááºááá¯á· á á®á ááºáá¬ážáá²á· Alvin áá²á· á¡áá»áááºá¡ááŒá¬ááŒá®áž ááŸá±á¬áá·áºááŸá±ážááŸá¯ááœá±ááŒá±á¬áá·áº ááá»á±ááááºááŒá áºáá±áá²á· á¡á®ážáá±ážááºááᯠáá áºáá±á·ááŸá¬ áá»áœááºáá±á¬áº ááá¯ážáá¬áá«áááºá á¡áá°ážáááŒáá·áºá áá±á¬ááºáááºááẠáá»áœááºá¯ááºááá¯á·á áá¯á¶á·ááŒááºáá±áá»áááºáááºáá»ááºááẠ99 ms áá±áááœáẠ50th áá¬ááá¯ááºááŸá¯ááºážá¡áá áá¯á¶á·ááŒááºááŸá¯ááᯠááœá±á·ááŒá¯á¶áá¶á á¬ážáá²á·ááááºá á¡áá°ážáááŒáá·áº áá¬áááºááá¯ááºááŒá¬ážáá»ááºááŒá áºááá·áº latency ááœáẠáá»áœááºá¯ááºááẠáááºáá±á¬ááºááŸá¯ááᯠá¡áá»ááºáááá·áº á ááºážáááºááŒáá·áºáá±á¬á¡áá« á¡á¶á·ááŒá áá¬áááºá
Alvin ááᯠáá
ááºážáááºáá®á áá
áºá
áá¹ááá·áºáá»áŸáẠ40k queries (QPS) ááŒáá·áº á
ááºážáááºááŸá¯áá»á¬ážá
áœá¬ááᯠáá¯ááºáá±á¬ááºáá²á·ááŒá®áž á¡á¬ážáá¯á¶ážááẠlatency 10ms áááºáááºážáá±á¬ latency ááá¯ááŒááá«áááºá áá°ááá¯á·áá²á· ááááºááœá±ááᯠááá±á¬ááá°ááŒá±á¬ááºáž ááŒá±áá¬ááá¯á· á¡áááºááá·áºááŒá
áºáá±áá«ááŒá®á áá«áá±ááá·áº á
á¬ááá¯áá±á¬ááºáááºááŒáá·áºááá¯ááºáá±á¬á· á¡áá
áºáá
áºáá¯ááᯠááááá¬ážáááá²á·áááºá áá°ááá¯á·ááŒá±á¬áá²á·áá²á· á¡ááŒá±á¡áá±ááœá±ááᯠá¡ááá¡áá» áá
ááºážáááºáá°ážáá°ážá áá°ááá¯á·áá²á· QPS á áá«á·ááẠá¡áá»á¬ážááŒá®ážáááá·áºáááºá áá« 40k QPS ááŒáá·áºá
ááºážáááºáá²á·áá±á¬áºáááºáž 1k áá¬ááŸááááºá á€áá
áºááŒáááºááœáẠQPS áá»áŸá±á¬á·áááºážááŒáá·áº á¡ááŒá¬ážá
ááºážáááºáá»ááºáá
áºáá¯ááᯠáá»áœááºá¯ááºáá¯ááºáá±á¬ááºáá²á·áááºá
áá»áœááºáá±á¬áº áá®á¡ááŒá±á¬ááºážááᯠááá±á¬á·áá±ážáá±áá¬ááŒá±á¬áá·áºá áá°ááá¯á·áá²á· áá¶áá«ááºááœá± ááŸááºáááºáááºááá¯áᬠáááºááááŒá®ážáá¬ážááŒá
áºááá¯ááºáá«áááºá áá°áá®áá±á¬ááááºááŒáá·áº áá»áœááºá¯ááºá virtual client ááᯠáááºáá«ááá²áá² á
ááºážáááºáá²á·áááº- áá±á¬ááºážááá¯áá»ááºá¡áá±á¡ááœááºáááºážáá«ážááŒááºážááẠlatency ááá¯ááá¯ážá
á±áá¯á¶áá¬áá 10 ms áááºááá¯áá±á¬ latency ááŒáá·áº áá±á¬ááºážááá¯áá»ááºá¡áá±á¡ááœááºááᯠááá¯ážá
á±áááºá áá
áºáááºážááá¯ááá±á¬áº 40k QPS ááœáẠáá
áºá
áá¹ááá·áºáá»áŸáẠáá±á¬ááºážááá¯áá»áẠ50 ááá·áºááẠ50 ms áá»á±á¬áºááœááºáá«áá 1k QPS ááœáẠáá
áºá
áá¹ááá·áºáá»áŸáẠ100 ms á¡ááẠáá±á¬ááºážááá¯áá»áẠ50 ááŸááááºá áááá±á¬áá!
ááŸá¬ááœá±ááŸá¯ááᯠáá»ááºážááŒá±á¬ááºážá á±áááºá
á¡á áááºá¡ááá¯ááºážáá»á¬ážá áœá¬áá«ááŸááá±á¬ááŒáá·áºáá±á áá áºááœáẠlatency ááŒá¿áá¬ááŸáá·áºáááºááá¯ááºáááá·áºá¡áá« áááá¡ááá·áºááŸá¬ áá¶ááááŸááá°á á¬áááºážááá¯ááᯠáááºáá®ážáááºááŒá áºáááºá Alvin áá²á· áááá¯áá¬áááºáá¬ááᯠáááºážáááºážáá±ážáááºáááºáá²áá²áá±á·áá¬ááŒáá·áºáá¡á±á¬ááºá
áá±á¬ááºážáá±á¬á¡á
ááŸááºááŸá¬ ááŒá®ážáá¯á¶ážááœá¬ážáá±á¬ I/O á¡áá°ážá¡ááŒá±á¬ááºážáá»á¬ážá
á¬áááºáž (ááœááºáááºáá±á«áºááá¯ááŸá¯áá»á¬áž/áá
áºááºááŸá¬ááœá±ááŸá¯áá»á¬ážá á
áááº)á áááºááŸá¬ ááŸá±á¬áá·áºááŸá±ážáá±áá²ááá¯áᬠá¡ááŒá±ááŸá¬ááŒáá·áºáá¡á±á¬ááºá Client ááŸáá·áº áááá¬áááºááŸá¬ážáá±á¬ I/O áá»á¬ážá¡ááŒáẠAlvin ááẠáá±áá¬á
ááá¯ážááᯠáááºááŒáá·áºááẠá ááá¯á·áá±á¬áºá á€ááá¯ááŸá±á¬ááºááŸá¯ááẠAlvin áá²á·ááá¯á· áá°áá®áá±á¬á¡á
á¯á¡áá±ážááœáẠáááºáááºáá±áá±á¬ááŒá±á¬áá·áº áááºážááœáẠlatency ááẠclient áááºáááºážááá·áºáááºá áá«ááŒá±á¬áá·áº áá¶ááááŸááá°á
á¬áááºážá
- client á០Alvin ááá¯á· ááœááºáááºáá±á«áºááá¯ááŸá¯á
- Alvin á០áá±áá¬á ááá¯ážááá¯á· ááœááºáááºáá±á«áºááá¯ááŸá¯á
- áá±áá¬á ááá¯ážááŸá disk ááœááºááŸá¬ááœá±áá«á
- áá±áá¬ááá¯áá±á«ááºá០Alvin ááá¯á· ááœááºáááºáá±á«áºááá¯ááŸá¯á
- Alvin á០áá¯á¶ážá áœá²áá°áá áºáŠážáᶠááœááºáááºáá±á«áºááá¯ááŸá¯á
á¡áá»ááºá¡áá»áá¯á·ááᯠáá»á±á¬áºááŒááºááŒáá·áºáá¡á±á¬ááºá
áá±áá¬ááááºážáááºážáá¬áá²á· áá¬ááŸáááá¯ááºáá«áá°ážá
áá»áœááºáá±á¬áº ááááá¯á¶ážáá¯ááºáá²á·áá¬ááá±á¬á· áá±á¬ááºážááá¯áá»ááºááœá±ááᯠááá¯ááºáá±á¬ááºááá¯ááºáá²á· ping-ping áá¬áá¬áá áºáá¯á¡ááŒá ẠAlvin ááᯠááŒá±á¬ááºážááá¯ááºáá¬áá² ááŒá áºáá«áááºá áá±á¬ááºážááá¯ááŸá¯áá áºáá¯ááᯠáááºáá¶áááŸááá±á¬á¡áá«á áááºážááẠá¡áá»ááºážááŸá®ážáá±á¬ áá¯á¶á·ááŒááºááŸá¯ááᯠááŒááºáá±ážáááºá latency áá»á±á¬á·áááºážááœá¬ážáá«á Alvin ááá¯á·ááá¯áẠdata warehouse á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááœáẠáá¬ááºáá áºáá¯áá»áŸ áááŒá¬ážááá«á áááá ááºážáááºááŸá¯ááœáẠá¡á±á¬ááºáá«ááááºááᯠáá»áœááºá¯ááºááá¯á· áááŸáááẠá
áááºááœá±á·ááŒááºáááá·áºá¡ááá¯ááºáž ping-ping áá¬áá¬ááᯠá¡áá¯á¶ážááŒá¯ááá·áºá¡áá« ááá¯ážáááºááŸá¯áááŸááá«á ááá¯ááá¯áááºááŸá¬ data warehouse ááẠlatency ááá¯ážááá¬áá²á áá¶ááááŸááá°áá»á¬ážá
á¬áááºážááᯠáá
áºáááºááŒááºááá¯ááºáááº-
- client á០Alvin ááá¯á· ááœááºáááºáá±á«áºááá¯ááŸá¯á
- Alvin á០áá¯á¶ážá áœá²áá°áá áºáŠážáᶠááœááºáááºáá±á«áºááá¯ááŸá¯á
ááá¯ááºáááº! á á¬áááºážá ááŒááºááŒááºáá»ááœá¬ážáááºá á¡ááŒá±á¬ááºážáááºážááᯠá¡ááŒá±ááŸá¬áá¯áá®ážáá«ážááá¯á· áááºáá²á·áááºá
gRPC
ááá¯á¡áá»áááºááẠáá
á¬ážááá¬ážáá
áºáá
áºáŠážááŸáá·áº ááááºáááºáá±ážáááá·áºá¡áá»áááºááŒá
áºáááºá gRPC
áá±á¬ááºážááœááºá
áœá¬ ááŒá¯ááŒááºáááºáá®ážáá¬ážááŒá®áž áá»ááºáá»ááºááŒáá·áºááŒáá·áº á¡áá¯á¶ážááŒá¯áá±áááºá á€á¡ááœááºá¡á
á¬ážááŸá á
áá
áºáá
áºáá¯ááœáẠáááºážááᯠá¡áá¯á¶ážááŒá¯ááŒááºážááẠáá»áœááºá¯ááºá ááááá¯á¶áž á¡ááŒáááºááŒá
áºááŒá®áž áá»áœááºá¯ááºá á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááẠá¡áá±á¬ááºážáá¯á¶ážááŒá
áºáááºáᯠáá»áŸá±á¬áºááá·áºáá«ááẠ- á¡áááºážáá¯á¶ážááŒá±á¬ááá»áŸááºá
á¡áá¯á¶ážááŒá¯ááá¯ááºááŸá¯ gRPC
á¡á
á¯á¡áá±ážááœáẠáá±ážááœááºážá¡áá
áºáá
áºáᯠááŒá
áºáá±á«áºáá¬áááº- áááºážááẠáá»áœááºá¯ááºá á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ ááá¯á·ááá¯áẠáá»áœááºá¯ááºááá¯ááºááá¯áẠááŒá
áºááá¯ááºáááºá gRPC
latency ááŒá¿áá¬ááᯠááŒá
áºá
á±ááá¬ážá á
á¬áááºážáá²ááá¯á· áá¶ááá¡áá
áºááᯠááá·áºáá±áááº-
- ÐÐ»ÐžÐµÐœÑ Ð²ÑзÑÐ²Ð°ÐµÑ Ð±ÐžÐ±Ð»ÐžÐŸÑекÑ
gRPC
- á
á¬ááŒáá·áºááá¯ááº
gRPC
client áá±á«áºááŸá á á¬ááŒáá·áºááá¯ááºááá¯á· ááœááºáááºáá±á«áºááá¯ááŸá¯ ááŒá¯áá¯ááºáááºágRPC
áá¬áá¬áá±á«áºááœáẠ- á
á¬ááŒáá·áºááá¯ááº
gRPC
Alvin ááᯠáááºááœááºáá« (áááºáá±á«ááºáá¬áá¬á¡ááœáẠáá¯ááºáá±á¬ááºááŸá¯ áááŸááá«)
áá¯ááºááá¯á¶ááá¹áá¬ááºááᯠááá·áºá¡á¬áž á
áááºáá°ážáá
áºáá¯áá±ážáááºá áá»áœááºá¯ááºá client/Alvin á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááẠclient-server áá»á¬ážááŸáá·áº áá»á¬ážá
áœá¬ááœá¬ááŒá¬ážááŸá¯áááŸááá«á
ááŸááºáá»ááº- á¡áááºáá±á¬áºááŒáá«á á¬áááºážááẠá¡áááºážáááºááá¯ážááŸááºážáá±á¬ááŒá±á¬áá·áºááŒá áºáááºá
gRPC
execution stack ááᯠáá±á¬ááŸááºáá¬ážááá·áº áááºáááá¯ááºááá¯áẠ(áá¯á¶á á¶áááááº?) threading áá±á¬áºáááºááᯠá¡áá¯á¶ážááŒá¯ááẠááŒá áºááá¯ááºáááºágRPC
ááŸáá·áºá¡áá¯á¶ážááŒá¯áá°á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯á ááá¯ážááŸááºážááŸá¯á¡ááœááºá áá»áœááºá¯ááºááá¯á·ááẠá€áá¯á¶á á¶ááᯠááŸá®áá²áá«áááºá
áááá¯ááá¯ááºáá¯ááºááŒááºážááẠá¡áá¬á¡á¬ážáá¯á¶ážááᯠááŒá¯ááŒááºáá±ážáááá·áºáááºá
áá±áá¬á
ááá¯ážááá¯ááºááœá±ááá¯ááŒááºáá»á±á¬áºááŒá®áž ááŒá®ážáá«áá®ážááŒá®áááºáááº- âá¡áá¯áá±á¬á· ááœááºááœá¬ážááŒá®á áááá¯ááá¯ááºááá¯á¡áá¯á¶ážááŒá¯ááŒá®áž ááŸá±á¬áá·áºááŸá±ážááŸá¯ááŒá
áºááœá¬ážááá·áºáá±áá¬ááᯠááŸá¬ááœá±ááŒáá«á
áá¯á·á" áá«
áá»áœááºá¯ááºááẠáááá¯ááá¯ááºáá±ážáá¯ááᯠáá°áá²á·áááº- ááŒáá·áºáá¬ážáá±á¬ QPS (áá±áá±áá»áááºáááºážáá±á¬) ááŸáá·áº áá±á¬ááºáááºáááºááŒááºážááŸáá·áº áá¬áá¬áááºááŒááºážááœáẠáááá·áºáá±á¬ QPS (ááŒáá·áºáá¬ážáá±á¬ latency) áá«áá±á¬ ping-pong áá¬áá¬ááŒáá·áºá á¥ááá¬á¡áá±áá²á· áááá¯áááºáá¬áááá¯ááá¯ááºááá¯áááºáž áá°áá²á·áááºá áááá¯ááá¯ááºáá»á¬ážááᯠááŸáá¯ááºážááŸááºáá±á¬á¡áá«ááœááºá áá¯á¶ááŸááºá¡á¬ážááŒáá·áº áá»áœááºá¯ááºááẠááŸá¬ážááœááºážáá±á¬áá±á«áºááá¯ááŸá¯á¡á á¯áá áºáá¯ááᯠááŸá¬ááœá±áá±áá«áááºá á¥ááá¬á¡á¬ážááŒáá·áºá ááŒáá·áºáá¬ážáá±á¬ latency ááŸááá±á¬ ááá±á¬ááºážááá·áºáááºááœáẠáá±á¬ááºááẠáááºá ááºááá¯ááºáá»á¬áž (áá ááŒáááºááŸáá·áºá¡áááº) ááŸááá«áááºá áá«áá±ááá·áº áá«á·ááá á¹á ááŸá¬á áááºá ááºááá¯ááºááœá±áá²á· á¡áá±á¡ááœááºá á¡áá°áá°áá®ážáá«ážáá«áá²á áá«á·áá²á· ááááºááá·áºá áá¬á¡ááœááºá á¡á²áá®ááŸá¬ áá°ážáá°ážááŒá¬ážááŒá¬áž áá¬ááŸáááŸááá°ážá
áá±á¬ááºááẠá¡ááŸá¬ážááŸá¬ááŒááºááŒááºážá
á áááºáá»ááºáááºáá»ááºááŒá áºáá²á·áááºá á¡ááŒá¬ážáááºááá·áºáááááá¬áá»á¬ážááᯠáá»áœááºá¯ááºáá¯á¶ážááá¯ááºáááºááᯠáá»áœááºá¯ááºááááá²á·áá²á áá»áœááºá¯ááºááá±á¬ááºáááºá¡á á®á¡á ááºááŸá¬ ááŒá¿áá¬ááᯠááŸááºážááŸááºážáááºážáááºážá á áºáá±ážááŒááºážááẠááá°áá®áá±á¬ááœá²ááŒá¬ážááŸá¯áá»á¬ážááŒáá·áº áááºááœá±á·á ááºážáááºááŸá¯áá»á¬ážááᯠáááºáá¯ááºáááºááŒá áºáááºá
ááááºááá¯á· ... áá¬ááŒá áºááá²
á¡á ááááºážáá áááá»áá²á· 50ms latency ááᯠáá»áœááºáá±á¬áº á áááºáá°áá²á·áááºá áá®á¡áá»áááºá á¡áááºážááŒá®ážáááºá áá®á¡ááŸá¬ážá¡ááœááºážááŒá áºá á±áá²á· áááºá¡ááá¯ááºážááᯠá¡ááá¡áá» áááááá¯ááºááá»ááºáž áá¯ááºáá²á á¡áá¯á¶ážááœá±ááᯠááŒááºáá áºáááºááá¯á· áá¯á¶ážááŒááºááá¯ááºáááºá áá±á¬ááºáá±á¬á· áááºááœá±á·áá»áá²á· á ááºážáááºááŸá¯áá áºáᯠáá±á¬ááºáá¬áááºá
áá«ááá¯ááºážááá¯áá²á áá±á¬ááºááœááºááŸá¬ á¡áá¬á¡á¬ážáá¯á¶ážá áááá¬áááºááŸá¬ážáá±áá¯á¶ááááºá áá»áœááºá¯ááºááẠáá±á¬ááºáááºá¡á¬áž Alvin áá²á·ááá¯á· á
ááºáá±á«áºááœáẠáááºáᬠáá±á¬ááºážááá¯áá»ááºáá
áºáᯠáá±ážááá¯á·áá²á·áááºá localhost
. ááŒá®ážáá±á¬á· latency ááá¯ážáá¬áᬠáá»á±á¬ááºááœá¬ážáááºá
ááœááºáááºááœáẠáá
áºáá¯áᯠááŸá¬ážááœááºážáá±áá«áááºá
Network Engineering áá»áœááºážáá»ááºááŸá¯ááᯠáááºáá°áá«á
áá»áœááºá¯áẠáááºáá¶ááááº- áá»áœááºá¯ááºá ááœááºáááºáááºážááá¬áá»á¬ážááᯠááááŸáááŒááºážááẠá¡ááœááºááŒá±á¬ááºá áá¬áá±á¬ááºážáááºá á¡áá°ážáááŒáá·áº áá»áœááºá¯ááºááẠáááºážááá¯á·ááŸáá·áº áá±á·ááá¯ááºáž á¡áá¯ááºáá¯ááºáá±ááŒá±á¬ááºáž ááá·áºááœááºážá ááºážá á¬ážáá«áááºá áá«áá±ááá·áº ááœááºáááºá á¡ááááá¶ááááŒá áºáá²á·ááŒá®áž á¡á²áá«ááᯠá¡ááŸá¬ážááŸá¬áááºážááᯠáá±á·áá¬ááá¯á·ááá¯áááºá
áá¶áá±á¬ááºážá áœá¬áá² á¡ááºáá¬áááºá áá±á·áá¬ááá¯áá°ááœá±ááᯠááá±á¬áá»áááºá ping ááŸáá·áº tracert áá±á«ááºážá ááºááŸá¯ááẠááœááºáááºáááºáá°ááá¯á·áá±á¬ááºáá±ážááŒá¿áá¬áá»á¬ážááᯠá¡ááŸá¬ážááŸá¬ááẠáá¯á¶áá±á¬ááºáá±á¬ á áááºááŸá¯áá±á¬ááºážáá áºáá¯áᯠáááºááááºá
ááááŠážá
áœá¬áá«á
áááºáá²á·áááºá
ááŒá®ážáá±á¬á· áá«ááŒáá¯ážá
á¬ážáááºá
ááá¯á·ááŒá±á¬áá·áº áááºážááẠáá»áœááºá¯ááºááá¯ááºá gRPC á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ ááá¯á·ááá¯áẠááŸá±á¬áá·áºááŸá±ážááŸá¯ááᯠááŒá áºá á±áá±á¬ ááœááºáááºááá¯ááºáá«á áá«ááᯠáááºáá±á¬á·á០áá¬ážááááºááá¯ááºáá±á¬á·ááŸá¬ááᯠá áá¯ážááááºáá¬áááºá
á¡áᯠáá«ááá¯á·á áᬠOS áá²á
gRPC
Linux ááœáẠá¡áá¯á¶ážáá»á¬ážáá±á¬áºáááºáž Windows ááœáẠáá°ážááŒá¬ážáááºážááŒá¬ážáááºá á¡áá¯ááºááŒá
áºáá²á·áá²á· á
ááºážáááºááŸá¯áá
áºáá¯ááᯠá
ááºážááŒáá·áºááá¯á· áá¯á¶ážááŒááºáá²á·áááº- Linux virtual machine áá
áºáá¯ááᯠáááºáá®ážáá²á·ááŒá®áž Linux á¡ááœáẠAlvin ááᯠááŒá¯á
á¯ááŒá®áž á¡áá¯á¶ážááŒá¯áá²á·áá«áááºá
á€áá±áá¬ááœáẠááŒá
áºáá»ááºáá²á·áááº- áá±áá¬áááºážááŒá
áºááẠááá°áá®áá±á¬áºáááºáž Linux áááºáá±á«ááºáá¬áá¬ááœáẠá¡áá¬ážáá° Windows host áá²á·ááá¯á· ááŸá±á¬áá·áºááŸá±ážááŸá¯áá»á¬áž áááŸááá«á ááŒá¿áá¬ááẠWindows á¡ááœáẠgRPC á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááœáẠááŸááá±ááŒá±á¬ááºáž ááœá±á·ááŸáááááºá
Nagle á á¡ááºáááá¯áá®áááº
áá®áá
áºáá«áá±á¬á· á¡áá¶áá
áºáᯠáá»á±á¬ááºáá±áááºáááºááẠgRPC
. á¡áá¯áá±á¬á· á¡á²áá« ááááºááᯠáá¬ážáááºááœá¬ážááŒá® gRPC
Windows á¡áᶠáá»á±á¬ááºáá±áááºá á¡áá¶á¡á
á¯á¶ááá¯ááºá¡á¬ážáá¯á¶ážá¡ááœáẠá¡áááºááŒá±áááºááá¯á· áá¯á¶ááŒááºáá¬ážáá²á· á¡ááœááºážááá¯ááºáž RPC á
á¬ááŒáá·áºááá¯ááºáá
áºáá¯ááᯠááœá±á·áá²á·áááºá
áá®ážáá«áž ááŒá®ážáá«ááŒá®- á¡ááŒá±á¬ááºážáááºážááᯠááŸá¬ááœá±áá±á¬áºáá¯ááºááá¯ááºá
á±ááẠáá¯ááºáá¯ááºááŸá¯ááŒááºááŒá
áºáá¬áááºá¡áá áá
áºááŒáááºáá»áŸáẠááá·áºááœááºážáá¬ážáá±á¬ á¡áá¶áá»á¬ážááᯠáááºááŸá¬ážáá²á·áááºá áá¬áááºáá»ááºáá²á·áááºá
gRPC
á€á¡áá¶ááᯠTCP sockets á¡ááœáẠLinux á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááœáẠáááºááŸááºáá¬ážáá±á¬áºáááºáž Windows ááœááºááá¯ááºáá«á áá«á áá®ááá¯
áá±á¬ááºáá»ááº
QPS áááá·áºáá»áááºááœáẠááŒá¬ááŒáá·áºáá»áááºááẠOS ááá¯ááá¯áá±á¬ááºážááœááºá¡á±á¬ááºááŒá¯áá¯ááºááŒááºážááŒá±á¬áá·áº ááŒá
áºáá±á«áºáá¬ááŒááºážááŒá
áºáááºá áá±á¬ááºááŒá±á¬ááºážááŒááºá¡á¬ážááŒáá·áºá áááá¯ááá¯ááºážááœá²ááŒááºážááẠáá¬áááºáá¯ááºááœáẠááá·áºááœááºážááŒááºážááá¯ááºáá² áá¬áááºáá¯ááºááœáẠáá¯ááºáá±á¬ááºáá±á¬ááŒá±á¬áá·áº latency ááᯠááŸá¬áááœá±á·áá«á
localhost á ááºážáááºááŸá¯á¡ááœááºá áááºážááẠá¡ááŸááºáááẠnetworking code ááᯠááááá² ááŒá áºááá¯ááºááŒá®áž Nagle á algorithm ááẠrun ááŒááºážáááŸááá±á¬ááŒá±á¬áá·áº client ááẠlocalhost ááŸáááá·áº Alvin ááá¯á·áá±á¬ááºááŸááá±á¬á¡áá« latency ááŒá¿áá¬áá»á¬áž áá»á±á¬ááºááœá¬ážáá«áááºá
áá
áºá
áá¹ááá·áºáá»áŸáẠáá±á¬ááºážááá¯ááŸá¯á¡áá±á¡ááœáẠáá»á±á¬á·áááºážáá¬áááºááŸáá·áºá¡áá»áŸ latency ááá¯ážáá¬áá±á¬á¡áá«ááœááºá Nagle á á¡ááºáááá¯áá®áááºááẠááá·áºáá¶ááááŸááá°á
á¬áááºážááœáẠááŸáááá·áºáááºá
source: www.habr.com