Une plateforme micro-services c’est cool et c’est à la mode … mais il y a aussi le revers de la médaille ! L’augmentation du traffic inter-services peut dégrader vos temps de réponses car les connexions HTTP sont lentes.
Cependant des solutions existent pour optimiser le trafic réseau, durant cette session, David et Carles vous parleront de la solution qu’ils ont expérimentée : gRPC
13. #DevoxxFR 13
HTTP 1 HTTP 2
1 TCP conn per HTTP req (hors Keep-Alive)
Head of line blocking
Connections
1 TCP conn -> Multiplexed Requests
Headers
Header Text Plain
Header et Data dans le même frame
Chaque Request renvoie le meme header
Header comprimé codage Huffman
Header et Data frames differents
Première Request envoie tous les headers
18. #DevoxxFR 18
message MessageRequest {
int32 ma_variable = 1;
}
Data to binary
// position = 1
// type = 0 - Varint
// (position << 3) | type
(1 << 3) | 0 = 0000 1000
Résultat : 0x08
19. #DevoxxFR 19
VARINT
150 = 1001 0110
// Step 1: Groupe de 7 bits
000 0001 001 0110
// Step 2: Inverse (Least significant group first)
001 0110 000 0001
// Step 3: Add MSB
1001 0110 0000 0001
Résultat : 0x9601
- Least significant group first.
- Un octet =
1 bit MSB (Most Significant Bit)
7 bits pour le stockage
Quand le MSB = 1, c’est qu’il y a un octet
supplémentaire.
29. #DevoxxFR 29
RPC / IDL
public class HelloWorldClient {
public HelloWorld() {
return HelloWorldServer.sayHello();
}
}
public class HelloWorldServeur {
public static String HelloWorld() {
return "Hello World";
}
}
(Remote Procedure Call / Interface Description Language)
RPC permet de faire des appels de procédures sur un ordinateur distant.
Client Serveur
42. #DevoxxFR
TAKE AWAY
42
- Optimisation du traffic réseau inter machine.
- Diminution des temps de latence
- Travailler votre monitoring
- Debug plus compliqué (curl, proxy http-grpc, double entrée http-grpc, ...)