Changeset 8102 for mirror/edenwall/nulog2/trunk/doc/nucentral.rst
- Timestamp:
- 02/13/08 18:47:52 (2 years ago)
- svm:headrev:
c624a6cb-57d4-0310-9736-a25a8df6d016:12805- svk:copy_cache_prev:
- 8095
- Files:
-
- 1 modified
-
mirror/edenwall/nulog2/trunk/doc/nucentral.rst (modified) (16 diffs)
Legend:
- Unmodified
- Added
- Removed
-
mirror/edenwall/nulog2/trunk/doc/nucentral.rst
r8101 r8102 65 65 66 66 67 Techniquement, un appel se déroule comme suit ::67 Techniquement, un appel se déroule comme suit : 68 68 69 69 Supposons un composant compA attaché à NuCentral2 et cherchant à appeler … … 75 75 * NuCentral2 vérifie si le composant est un module local... 76 76 Si c'est le cas : 77 77 78 * NuCentral2 localise que le composant est attaché à NuCentral1, fait 78 79 un appel par SOAP à celui-ci. … … 83 84 * NuCentral2 reçoit le résultat et le renvoie à compA qui aura été 84 85 bloqué pendant le temps de la demande. 86 85 87 Si jamais compB est attaché à NuCentral2 : 88 86 89 * NuCentral2 appele la fonction directement compB.serv1, puis retourne 87 90 tout de suite le résultat. … … 90 93 91 94 Note: le fonctionnement du dialogue entre les serveurs **NuCentral**, notament 92 pour la synchronisation des données, sera décrit dans le chapitre **II. NuCentral-to-NuCentral**.95 pour la synchronisation des données, sera décrit dans le chapitre `NuCentral-to-NuCentral`_. 93 96 94 97 Le problème … … 123 126 synchrone ou non. 124 127 125 Un service taggée **synchrone** fonctionnnerait ainsi : 128 Un service taggé **synchrone** fonctionnnerait ainsi : 129 126 130 * Elle renverra obligatoirement le résultat tout de suite. 127 131 128 132 Un service taggé **asynchrone** aurait le comportement suivant : 133 129 134 * Si elle retourne un objet de type Deferred, il sera transmis tel quel 130 135 à la procédure appelante. … … 138 143 pour le composant, que ce service soit *local* ou *distant*. 139 144 140 Le déroulement d'un appel à une fonction asynchrone serait le suivant ::145 Le déroulement d'un appel à une fonction asynchrone serait le suivant : 141 146 142 147 Un composant compA attaché à NuCentral2 veut appeller compB.serv1, … … 146 151 de NuCentral2. 147 152 * NuCentral2 détermine la localisation du composant. Deux cas se 148 distingue salors.153 distinguent alors. 149 154 Si compB est local: 155 150 156 * NuCentral2 fait appel à la fonction du service directement. 151 157 * Si le résultat renvoyé est un Deferred, il le transmet directement … … 155 161 * La procédure appelante ajoute un callback au Deferred afin de 156 162 récupérer le résultat. 163 157 164 Si compB est distant: 165 158 166 * NuCentral2 fait un appel SOAP à NuCentral1. 159 167 * NuCentral1 appelle le service. … … 175 183 L'intérêt principal de NuCentral réside dans la transparence qu'il apporte 176 184 pour l'appel de fonctions d'un composant à un autre, quelque soit la 177 localisation physique de celui-ci ( en local ou à distance).185 localisation physique de celui-ci (local ou distant). 178 186 179 187 La réalisation de ceci passe par une mise en relation de différents **NuCentral**, 180 188 afin que lorsqu'un composant présent sur un NuCentral souhaite appeler un service, 181 NuCentral sache où il se trouve et y fasse la requ ète.189 NuCentral sache où il se trouve et y fasse la requête. 182 190 183 191 Design … … 186 194 La mise en réseau des différents NuCentral devrait être faite en étoile. 187 195 188 En effet, un **NuCentral Master** serait désigné, et les **NuCentral esclaves**196 En effet, un **NuCentral maître** serait désigné, et les **NuCentral esclaves** 189 197 s'y connecteraient au lancement et à chaque mise à jour de leur liste de composants. 190 198 191 Voici à quoi devrait ressembler le schema ::192 193 .----------- .194 | Slave 1 |--------- .-----------.195 +-------+--- ' | ------------| Slave 2 |196 | comp1 | \|/ \|/ +-------+--- '199 Voici à quoi devrait ressembler le schema : :: 200 201 .-------------. 202 | Esclave 1 |------- .-------------. 203 +-------+-----' | ------------| Esclave 2 | 204 | comp1 | \|/ \|/ +-------+-----' 197 205 | comp2 | .-------------. | comp3 | 198 206 '-------' | | | comp4 | 199 | Ma ster| | comp5 |207 | Maître | | comp5 | 200 208 | | '-------' 201 209 '-----+-------+ … … 204 212 | '-------' 205 213 | 206 .----------- .207 | Slave 3 |208 +-------+--- '214 .-------------. 215 | Esclave 3 | 216 +-------+-----' 209 217 | comp6 | 210 218 '-------' … … 213 221 ------------ 214 222 215 La détermination du status de **Ma ster** ou **Slave** se fait par223 La détermination du status de **Maître** ou **Esclave** se fait par 216 224 le simple fait qu'un serveur possède ou non dans sa configuration 217 un serveur SOAP auquel se connecter afin de s'an oncer.218 219 L'esclave ne pourra pas accepter de requ ettes d'anonce.225 un serveur SOAP auquel se connecter afin de s'annoncer. 226 227 L'esclave ne pourra pas accepter de requête d'annonce. 220 228 221 229 En revanche, on peut supposer qu'un *réseau* de NuCentral pourra 222 être lui même déporté à un autre. C'est à dire qu'un NuCentral Ma ster230 être lui même déporté à un autre. C'est à dire qu'un NuCentral Maître 223 231 pourrait se connecter à un autre NuCentral, comme esclave cette fois, 224 afin d'an oncer tous les composants qu'il possède. Le problème dans ce232 afin d'annoncer tous les composants qu'il possède. Le problème dans ce 225 233 schema là est qu'un autre NuCentral Client serait susceptible de se connecter 226 à ce Ma ster alors qu'il voulait accéder au Slave 3.234 à ce Maître alors qu'il voulait accéder à l'Esclave 3. 227 235 228 236 En bref ce cas est peut être compliqué à gérer alors qu'il peut paraitre inutile. 229 237 230 238 Le serveur défini dans sa configuration son mot de passe, et les clients doivent 231 an oncer dans l'appel de fonction le mot de passe.239 annoncer le mot de passe dans l'appel de fonction. 232 240 233 241 On passe uniquement la liste des composants et pas des services. … … 236 244 --------- 237 245 238 Le déroulement d'une an once se fait dans les grandes lignes ainsi::239 240 -> Connexion de Slave2 à Master1 par SOAP, appel une fonction241 en passant le mot de passe et la liste des composants 242 <- Réponse d e Master1 avec la liste de ses composants et de246 Le déroulement d'une annonce se fait de cette manière : :: 247 248 -> Connexion de l'Esclave2 au Maître1 par SOAP, appel une fonction 249 en passant le mot de passe et la liste des composants. 250 <- Réponse du Maître1 avec la liste de ses composants et de 243 251 ceux des autres esclaves. 244 <- Ma ster1 envoie la liste des composants de Slave2 à tous252 <- Maître1 envoie la liste des composants d'Esclave2 à tous 245 253 les autres esclaves. 246 254 247 Par la suite, Slave2 peut réenvoyer sa liste afin de la mettre à jour, ce qui248 informera tous les autres esclaves. Du coup Slave2 pourra lui même être prévenu255 Par la suite, Esclave2 peut réenvoyer sa liste afin de la mettre à jour, ce qui 256 informera tous les autres esclaves. Du coup Esclave2 pourra lui même être prévenu 249 257 des mises à jour. 250 258 251 Chaque Slave a maintenant la liste complète des composants disponibles et leur localisation.259 Chaque Esclave a maintenant la liste complète des composants disponibles et leur localisation. 252 260 Il sera ainsi aisé à celui-ci de se connecter **directement** au NuCentral concerne. 253 261 … … 261 269 262 270 En effet, bien qu'à la fermeture *propre* de **NuCentral**, celui-ci devrait 263 avoir l'amabilité d'informer le Ma sterde son indisponibilité, il est probablement271 avoir l'amabilité d'informer le Maître de son indisponibilité, il est probablement 264 272 possible qu'il disparaisse subitement en cas de crash, de coupure de courant, de 265 273 réseau, etc. 266 274 267 Une solution peut se situer dans un système de ping par SOAP, mais cela me par raît268 d'une laideur sans nom.275 Une solution peut se situer dans un système de ping par SOAP, mais cela me paraît 276 être une solution peu élégante. 269 277 270 278 Une seconde solution serait que lorsqu'un NuCentral tente de se connecter à un NuCentral 271 qui est censé être up, si il échoue, il prévient le master de ceciqui met à jour la liste.279 censé être disponible et qu'il échoue, il prévient le maître qui met à jour la liste. 272 280 273 281 Sécurité … … 276 284 Quelques questions de sécurité se posent. Tout d'abord du point de vue de l'authentification 277 285 des esclaves. Le choix d'utiliser un mot de passe est plus correct, surtout que celui-ci 278 passera en crypté par SSL. 279 280 Ensuite, l'authentification du master est plus importante. Lorsque celui-ci fait son 281 anonce aux esclaves, il devrait anoncer également un mot de passe ou une connerie 282 de ce genre. 286 sera transmis dans un tunnel chiffré (SSL). 287 288 Ensuite, l'authentification du maître est plus importante. Lorsque celui-ci fait son 289 annonce aux esclaves, il devrait annoncer également un mot de passe ou autre. 283 290 284 291 Enfin, les composants doivent être empêchés d'appeler une fonction de synchronisation … … 291 298 ^^^^^^ 292 299 293 Dans le présent brouillon, je décris un cas d'utilis er ou tous les nucentral sont300 Dans le présent brouillon, je décris un cas d'utilisation où tous les Nucentral sont 294 301 sur le même réseau. 295 302 296 303 En effet, considérons la topologie réseau suivante:: 297 304 298 .-------- .|299 | Slave1 | | .--------.300 '-------- ' | | Slave2 |301 \ | '-------- '305 .----------. | 306 | Esclave1 | | .----------. 307 '----------' | | Esclave2 | 308 \ | '----------' 302 309 \ | / 303 310 \ | / 304 311 .----------. 305 | Ma ster|312 | Maître | 306 313 '----------' 307 314 | 308 315 | 309 316 310 On a un Slave2 qui n'a pas d'accès direct à Slave1 par le réseau. 311 312 Le Slave2 ne pourra ainsi pas se connecter au Slave1 si il veut 313 faire une requette que celui-ci possède. 314 315 Ceci est un cas relativement tordu, mais à considérer peut être je pense. 317 On a un Esclave2 qui n'a pas d'accès direct à Esclave1 par le réseau. 318 319 L'Esclave2 ne pourra ainsi pas se connecter au Esclave1 si il veut 320 faire une requête que celui-ci possède. 321 322 Ceci est un cas relativement tordu, mais qu'il faut peut être considérer. 323
