Mécanisme d'appels RPC parallèles
Le framework Yar optimise les requêtes distantes via son moteur d'appels simultanés. Contrairement aux RPC séquentiels traditionnels, Yar utilise un modèle asynchrone non bloquant permettant d'émettre plusieurs requêtes parallèlement.
Implémnetation des appels simultanés
L'exécution concurrente s'effectue en trois phases :
// Enregistrement des requêtes
Yar_Concurrent_Client::call("http://service1/endpoint", "fetchData", [param1], "callbackA");
Yar_Concurrent_Client::call("http://service2/endpoint", "getInfo", [param2], "callbackB");
// Lancement des requêtes
Yar_Concurrent_Client::loop();
// Traitement des réponses dans les fonctions callback
function callbackA($result) {
// Traiter les données
}
Paramètres d'optimisation
- Activation des connexions persistantes :
YAR_OPT_PERSISTENT - Définition des délais d'expiration :
YAR_OPT_TIMEOUT - Contrôle du timeout de connexion :
YAR_OPT_CONNECT_TIMEOUT
Architecture multi-protocoles
Yar dissocie couche transport et sérialisation pour une flexibilité accrue.
Protocoles de transport
- HTTP/HTTPS : Communication standard via web
- TCP : Protocole bas niveau pour performances accrues
- Socket Unix : Échange inter-processus local
Formats de sérialisation
// Configuration du format de données
$client->setOpt(YAR_OPT_PACKAGER, "json");
// Formats disponibles :
// "php" - Sérialisation native PHP
// "json" - Interopérabilité interlangages
// "msgpack" - Format binaire optimisé
Implémentation de base
Création de service
class Service {
public function process($input) {
return strtoupper($input);
}
}
$server = new Yar_Server(new Service());
$server->handle();
Appel client
// Appel unique
$remote = new Yar_Client("http://localhost/service");
echo $remote->process("test");
// Appels simultanés
Yar_Concurrent_Client::call("http://srv/data", "process", ["a"], "cbA");
Yar_Concurrent_Client::loop();
Optimisations avancées
Sécurité et fiabilité
// Authentification par jeton
$client->setOpt(YAR_OPT_TOKEN, "secure_token");
// Gestion des erreurs
Yar_Concurrent_Client::call($url, "method", $params, null, function($t, $e) {
// Log d'erreur
});
Architecture interne
La structure en couches de Yar comprend :
- Noyau client (yar_client.c)
- Gestionnaire serveur (yar_server.c)
- Abstraction transport (yar_transport.c)
- Modules de sérialisation (packagers/)