Brevet FR2873464A1 — publié le 20060127

La présente invention concerne une architecture de composants logiciels à haute disponibilité et à haute performance. Elle s'applique notamment pour des architectures de composants logiciels modulaires par exemple réutilisables, en particulier lorsque ces architectures font partie de systèmes redondants nécessitant une très haute disponibilité. En règle générale, la commande ou gestion des systèmes est assurée par des moyens informatiques à base de calculateurs, de périphériques et d'interfaces adaptés, tous ces composants matériels étant couplés en 1 o réseau. La disponibilité des systèmes en fonctionnement est un point particulièrement sensible. Selon la nature des systèmes, la disponibilité de fonctionnement est plus ou moins capitale. La disponibilité des systèmes peut donc être très critique. Elle influe notamment la fiabilité des systèmes mais aussi leur rentabilité par exemple. Pour assurer cette disponibilité de fonctionnement il est connu de dupliquer des chaînes de composants matériels et logiciels, voire de les tripler. C'est ce que l'on appelle la redondance. Ainsi en parallèle de la chaîne principale, encore appelée dispositif maître, est disposée au moins une chaîne redondante, ou dispositif esclave. En cas d'arrêt du dispositif maître c'est le dispositif esclave qui doit prendre en charge la suite de la commande du système et donc assurer la continuité de fonctionnement. En pratique, selon la complexité des systèmes, une chaîne comporte un à plusieurs calculateurs et les périphériques associés. Deux critères au moins sont à considérer pour apprécier la performance d'un système redondant, ou plus précisément pour apprécier la performance de disponibilité d'un système. En premier lieu l'intégrité des données et des fonctions est à prendre en compte. L'autre critère important est le temps de réponse du dispositif esclave suite à l'arrêt du dispositif maître. Il existe des systèmes dont les arrêts de fonctionnement ne doivent être extrêmement court voire inexistant, ce qui implique par exemple que l'arrêt de fonctionnement au niveau des calculateurs soit d'une durée nettement inférieur à une seconde, de l'ordre de 500 millisecondes. Par ailleurs l'architecture logicielle des systèmes modernes est généralement basée sur une approche composants, en particulier pour des systèmes modulaires et réutilisables. Ces deux dernières propriétés sont très importantes pour du point de vue industriel et économique. Il existe des modèles de composants logiciels standards, par exemple EJB, sigle de l'expression anglo-saxonne Enterprise Java Bean ou CCM, sigle de l'expression anglo-saxonne CORBA Component Model , qui supportent une architecture basée sur l'approche composants. Cependant ces modèles de composants logiciels ne permettent pas de répondre à une contrainte de haute disponibilité haute performance. Il existe par exemple un modèle, FT CORBA, qui répond aux contraintes de disponibilité mais il s'agit d'un modèle orienté objets et non orienté composants logiciels donc bas niveau. Ce modèle s'adresse à CORBA objets, FT signifiant Fault Tolerance qui est l'expression anglo-saxonne qui exprime la disponibilité. Un but de l'invention est notamment de permettre la réalisation d'une architecture logicielle à haute disponibilité et haute performance, cette architecture étant orientée composants logicielles. A cet effet, l'invention a pour objet une architecture de composants logiciels comportant une configuration primaire et au moins une configuration secondaire pour se substituer à la configuration primaire en cas de défaillance de cette dernière, la configuration primaire comportant au moins un composant de traitement de tâches et un premier composant client et la configuration secondaire comportant au moins un composant de traitement de tâches et un composant client, les données d'état étant présentes dans les deux configurations. Les services d'accès en écriture et en lectures aux composants de traitement des tâches sont séparés de sorte que les requêtes de lecture des données d'état venant des composants clients soient réparties entre les configurations. Dans un mode de réalisation, le premier composant client accède en lecture des données d'état à l'intérieur de la configuration primaire et un composant client d'une configuration secondaire accède en lecture aux données d'état à l'intérieur de sa configuration. La configuration primaire répond aux requêtes en écriture de tous les composants clients. La détection d'une défaillance de la configuration primaire est par exemple effectuée par un modèle orienté objet testant, lors de chaque requête lancée par un composant client la réponse du composant de traitement de tâches. Le modèle utilisé est le modèle FT CORBA. Un service de distribution des données permet de dupliquer les données d'état d'une configuration à l'autre. Chaque configuration est par exemple implantée dans un calculateur distinct. Les configurations peuvent être reliées entre elles par une liaison multicast, les accès d'une configuration à l'autre s'effectuant par cette liaison. L'invention a pour principaux avantages qu'elle s'applique pour la gestion de tous types de systèmes, qu'elle s'appuie sur des infrastructures bas niveau existantes, qu'elle s'adapte à de nombreux types de configurations logicielles, qu'elle s'adapte à des architectures modulaires et réutilisable, qu'elle est économique et qu'elle est simple à mettre en oeuvre. D'autres caractéristiques et avantages de l'invention apparaîtront à l'aide de la description qui suit faite en regard de dessins annexés qui représentent: la figure 1, un exemple de réalisation informatique redondant classique; la figure 2, un exemple d'architecture de composants logiciels selon l'invention; la figure 3, par une vue partielle un autre exemple de réalisation d'une 25 architecture selon l'invention; la figure 4, un état de fonctionnement en cas de défaillance de la partie primaire de l'architecture; la figure 5, une illustration d'un mécanisme bas niveau détectant notamment les défaillances des composants logiciels. La figure 1 représente un exemple de réalisation d'un système informatique redondant classique. Ce système comporte des composants matériels dans lesquels sont implantés des composants logiciels. Il comporte une voie maître 1 et une voie esclave 2, cette dernière étant une réplication de la voie maître. Pour simplifier la présentation chaque voie comporte un seul calculateur. Un poste client 3 est relié aux deux calculateurs 1, 2. Les échanges de données entre le poste client et les calculateurs se font par liaison multicast. D'autres postes clients pourraient adresser les calculateurs. Chaque calculateur comporte des composants logiciels 4, 5. Des composants d'accès en écriture/écriture 6, 8 et les interfaces correspondantes permettent les échanges entre les composants logiciels et le client 3. Il existe au moins deux styles de fonctionnement d'un tel système redondant, un style actif et un style passif. Dans le styles actif les différents composants 4, 5 de chacune des deux voies 1, 2 exécutent en parallèle les mêmes instructions. Néanmoins une seule voie, la voie maître, répond aux requêtes du client 3. Dans le style passif seul les composants de la voie maître 1 exécutent le traitement. Elle reçoit les requêtes du poste client et fait le traitement. Les composants de la voie esclave 2 n'effectuent pas de traitement. Ils restent inactifs, à l'état de veille. Comme il a été indiqué précédemment, un modèle orienté objet tel que par exemple FT CORBA qui pourrait répondre aux exigences de disponibilité, au niveau performance ne peut pas traiter les composants logiciels 4, 5 du système. La figure 2 présente un exemple de réalisation d'une architecture de composants logiciels selon l'invention. Pour assurer la disponibilité de service le système comporte deux configurations, une configuration primaire 21 et une configuration secondaire 22, appelé par la suite configuration back up . Chaque configuration est par exemple implantée dans un calculateur. Les deux calculateurs sont par exemple reliés entre eux par une liaison multicast. La configuration maître 21 comporte au moins un composant client 231 et des composants logiciels 24, 25, 26, 27, 28. Un 3o composant logiciel 28 exécute les traitements. Des composants logiciels d'accès aux services 24, 25, 26, 27 relient le client 23 au composant logiciel de traitement 28. Ce composant logiciel 28 de traitement de tâches est le composant dont la disponibilité est requise. Il sera appelé par la suite composant FT en référence aux initiales anglosaxonnes Fault Tolerance . Un composant 29 comporte l'état du système, cet état étant constitué de l'ensemble des données. Cet état évolue bien sûr au cours du temps. Il pourrait être logé ailleurs que dans le composant logiciel de traitement. Le composant d'état 29 peut être intégré dans le composant FT 28. La configuration back up 22 comporte une réplication 28' du composant FT 28 de la configuration primaire 21. Ce composant FT 28' est prévu pour exécuter les traitements effectués par le composant 28 de la configuration primaire en cas de défaillance de celui-ci. Un composant 29' est aussi destiné à recueillir l'état du système. Cette configuration back up 22 comporte aussi un composant client 232 qui n'est pas nécessairement une réplication du client 231 de la configuration primaire, du moins en ce qui concerne ses fonctions dans le système global. II s'agit en fait d'un autre client. Ce dernier aurait pû être situé dans la configuration primaire ou dans une autre configuration. Néanmoins pour des raisons de standardisation des configurations le deuxième client est placé dans la configuration back up. II est par exemple relié au composant FT 28' par les réplications 24', 25', 26', 27' des composants d'accès aux services 24, 25, 26, 27 de la configuration primaire, de sorte que l'architecture logicielle de la configuration back up est une réplication de l'architecture logicielle de la configuration primaire. En cas de défaillance de la configuration primaire, notammente de son composant FT 28, la configuration back up est destinée à prendre le relai par l'intermédiaire de son composant FT 28'. Les deux configurations sont par exemple hébergées chacune dans un calculateur distinct. Selon l'invention le composant d'état 29 de la configuration primaire et le composant d'état 29' de la configuration back up comportent en permanence l'état du système, c'est-à-dire les données décrivant cet état. En fait il s'agit de toutes les données en jeu à un instant donné de reconstituer l'état du système. Donc les données décrivant l'état du système ne sont pas seulemen présentes dans la configuration primaire mais aussi dans la configuration back up. Un service de distribution de données 30 permet de dupliquer les données du composant d'état 29 de la configuration primaire 21 dans le composant d'état 29' de la configuration back up 22 et vice versa. Ce service de distribution est par exemple implanté dans la configuration primaire 21 mais pas nécessairement. La distribution est symbolisée par une ligne sur la figure 2, il s'agit d'une liaison fonctionnelle et non matérielle spécifique car les échanges entre les deux configurations se font par une liaison matérielle unique qui est une liaison multicast. D'autres types de liaisons pourraient bien sûr être envisagées, y compris des liaisons spécifiques. Les accès de service au composant FT 28 de la configuration primaire se font par deux accès séparés, un accès dédié à l'écriture 26 et un accès dédié à la lecture 27. Une interface logicielle 24 est associée au service d'accès en écriture 26 et une autre interface logicielle 25 est associée au service d'accès en lecture 27. Ces interfaces 24, 25 sont adaptés au client 231 en particulier pour lui permettre d'accéder à chacun des services 26, 27, en écriture et en lecture. De même, et en particulier conformément à la réplication de l'architecture logicielle de la configuration primaire, l'accès au service du composant FT 28' de la configuration back up est séparé en deux, avec un accès en écriture 26' et un accès en lecture 27'. L'accès en écriture 26' est non pas couplé au composant FT 28' de la configuration back up mais au composant FT 28 de la configuration primaire, de sorte que le deuxième client accède en écriture à ce composant FT 28 de la configuration primaire. Les interfaces logicielles 24', 25' autorisent l'accès aux services 26', 27' pour le deuxième client 232. Les liaisons de services entre les deux configurations se font par exemple par liasion multicast. Le composant FT 28 de la configuration primaire 21 et le composant FT 28' de la configuration back up fonctionnent en parallèle, c'est-à-dire selon le style actif précédemment décrit. Les accès aux services des composants FT 28, 28', quant à eux ne fonctionnent pas en parallèle. En particulier, le composant FT 28 de la configuration primaire fonctionne en écriture/lecture et le composant FT 28' de la configuration back up fonctionne en lecture seule. De la sorte le composant FT 28 de la configuration primaire répond aux requêtes du premier client 231 et du deuxième client 232. Le premier client 231 lit les données sur ce composant FT 28. Quant au deuxième client 232, il lit les données sur le composant FT 28'. Ce mode de fonctionnement est possible car les données sont présentes dans les deux configurations. Ainsi les services fournis par un composant FT sont séparés d'une part en services en écriture et d'autre part en services en lecture. Les services en écriture altèrent l'état du composant FT et requèrent des ressources de gestion. Dans l'exemple de réalisation de la figure 2, seul le composant FT 28 de la configuration primaire répond aux accès en écriture. L'accès en lecture n'altère pas l'état du composant. Les deux composants 28, 28' peuvent donc répondre aux accès de service en lecture, d'autant plus que l'état du système est répliqué dans chacun des composants, du moins dans les composants d'état 29, 29'. Les accès en lecture peuvent impliquer des traitements complexes et inclure des notifications de services à critères de sélection. Une architecture d'un système selon l'invention telle que présentée par la figure 1 permet d'améliorer les perfomances en particulier au niveau de la disponibilité. Les requêtes en lecture et en écriture du premier client 231 sont traitées par le composant FT 28 de la configuration primaire 21. Seules les requêtes en écriture du deuxième client 232 sont traitées par ce composant FT 28. Les requêtes en lecture de ce deuxième client 232 sont traitées directement par le composant FT 28 de la configuration back up 22. Ainsi la charge globale est répartie entre la partie primaire et la partie back up. II en résulte une amélioration de performance. La figure 3 illustre par une vue partielle une variante de réalisation. La figure 2 a montré que la séparation des accès en écriture des accès en lecture permettait de répartir les requêtes de lectures entre les différentes configurations. La figure 2 présente un exemple de répartition possible des accès en lecture. D'autres exemples sont possible. Dans la variante de réalisation de la figure 3, le premier client 232 accède aussi en lecture au composant FT 28' de la configuration back up. En particulier le service d'accès en écriture 27 de la configuration primaire est connecté au composant FT 28' de la configuration back up. La partie primaire ne fonctionne ainsi qu'en accès en écriture et la partie back up ne fonctionne qu'en accès en lecture, ce qui va vers une meilleure répartition de la charge. Néanmoins ce gain peut être anhilé ou du moins fortement réduit du fait que la liaison au composant FT 28' de la configuration back up depuis l'accès au service d'écriture 27 de la configuration primaire se fait via le réseau multicast 31. En effet dans l'exemple de réalisation de la figure 2 chaque configuration, client compris, est implantée sur un même calculateur ou du moins sur un même système matériel, ce qui simplifie les liaisons entre composants. Le passage à un autre calculateur ou à une autre structure matériel nécessite le passage par la liaison multicast avec notamment tous les protocoles associés. La figure 4 illustre un cas de défaillance de la configuration primaire 21 où le traitement est repris par la configuration back up 22. Plus précisément la figure 4 présente un cas où le composant FT 28 de la configuration primaire 21 est hors service. C'est le composant FT 28' de la configuration back up qui supporte alors toute la charge et qui assure notamment tous les services en écriture et en lecture. En particulier les deux accès en écriture 26, 26' qui étaient connectés au composant FT 28 de la partie primaire sont connectés au composant FT 28' de la partie back up. L'accès en écriture 27 de la partie primaire est maintenant connecté à ce composant FT 28'. Les autres connexions restent inchangées. L'amélioration de la répartion de la charge entre les configurations primaire et back up, ainsi que le fait que l'état du système soit stocké à la fois dans la configuration primaire et dans la configuration back up concourrent ensemble à l'amélioration des performances dans la mesure où dès défaillance de la configuration primaire la configuration back up peut très vite reprendre le relai. Il est ainsi possible d'espérer selon les cas de parvenir une indisponibilité de service inférieure à 500 millisecondes. C'est-à-dire que la durée entre l'apparition de la défaillance de la configuration primaire et la reprise en main par la configuration back up peut être inférieure à 500 millisecondes. Pour arriver dans le nouvel état illustré par la figure 4 où la configuration back up a pris le rôle de la configuration primaire défaillante, il faut des moyens pour détecter la défaillance de la configuration primaire et pour élire une nouvelle configuration primaire. Dans le cas de l'exemple des figures 3 et 4 où il n'y a que deux configuration, le choix se reporte sur l'unique configuration disponible. Il faut aussi des moyens pour dérouter les requêtes des clients, en l'occurrence le premier client dans le cas des figures 3 et 4, vers la nouvelle configuration primaire. En particulier il faut dérouter les services d'accès en écriture et lecture connectés au composant FT 28 de la configuration primaire vers le composant FT 28' de la configuration back up. Pour y parvenir le système selon l'invention utilise une structure bas niveau qui traite les objets logiciels. Le modèle orienté objet utilisé est par exemple le modèle FT CORBA. La figure 5 illustre un exemple d'infrastructure bas niveau qui permet de répondre aux exigences précitées, en particulier pour la détection des défaillances et pour dérouter les requêtes. Le modèle FT CORBA répond au mécanismes illustré. D'autres types de modèles qui répondent à ce mécanisme ou à des mécanismes analogues pourraient être utilisés. La figure 5 illustre donc une infrastructure logicielle bas niveau. Le client 231 dialogue avec un objet logiciel 51 qui contient une référence. De façon général un client a besoin d'une référence pour communiquer. L'objet logiciel comporte en fait au moins deux références, la référence du code d'une copie primaire 52, destinée à un test de conformité, contenue dans la configuration primaire 21 et la référence du code d'une copie secondaire 53 comprise dans la configuration back up 22. Lorsque le client lance une communication, pour une requête en lecture ou en écriture, il teste en premier la copie primaire. Si cette dernière est conforme à la référence, cela signifie que le composant FT 28 de la configuration primaire est en service. Si le test est négatif, cela signifie que le composant FT 28 ne répond plus et donc qu'il est en service, le modèle FT CORBA par exemple déroute la même requête vers la copie secondaire. Puis déroute toutes les services d'accès vers le composant FT 28' de la configuration secondaire. Le modèle FT CORBA est particulièrement bien adapté car il comporte dans ses protocoles d'accès un test de référence. Sachant détecter les composants défaillants le modèle peut ensuite orienter les accès vers les composants en service. Les exemples de réalisation d'architectures présentés précédemment ne comportent que deux configurations 21, 22. L'invention s'applique évidemment à des systèmes comportant un nombre supérieur de réplications. On peut par exemple envisager N réplications de la configuration primaire 21. Dans ce cas la partie primaire 21 répond aux requêtes en écriture de tous les clients. Le premier composant client 231 accède en lecture des données d'état à l'intérieur de la configuration primaire 21 et un composant client 232 d'une configuration secondaire 22 accède en lecture aux données d'état à l'intérieur de sa configuration 22. En cas de défaillance de la configuration primaire, une configuration secondaire prend en charge les traitements assurés par cette dernière et devient à son tour configuration primaire. Dans un autre exemple de réalisation, la configuration primaire, et ses réplications, peuvent comporter plusieurs clients. En particulier l'invention est bien adapté à une architecture globale modulaire et réutilisable. En effet les différentes configuration et leurs réplications peuvent constituer des modules réutilisables. A ce titre, outre l'aspect modulaire et réutilisable, l'invention est aussi économique. Avantageusement l'invention s'applique pour la gestion de tous types de systèmes, en particulier pour de gros systèmes dont la sureté de fonctionnement exige une haute disponibilité et une haute performance de leurs systèmes de commande ou de gestion. Par ailleurs l'invention est simple à mettre en oeuvre, elle ne nécessite notamment pas de composants supplémentaires ni de connexions complexes. Elle s'appuie sur des infrastructures bas niveau existantes et elle s'adapte à de nombreux types de configurations logicielles, ce qui lui permet un large spectre d'applications. REVENDICATIONS 1. Architecture de composants logiciels comportant une configuration primaire (21) et au moins une configuration secondaire (22) pour se substituer à la configuration primaire en cas de défaillance de cette dernière, caractérisée en ce que la configuration primaire (21) comportant au moins un composant de traitement de tâches (28) et un premier composant client (231) et la configuration secondaire (22) comportant au moins un composant de traitement de tâches (28') et un composant client (232), les données d'état (29, 29') étant présentes dans les deux configurations (21, 22), les services d'accès en écriture (26, 26') et en lectures (27, 27') aux composants de traitement des tâches (28, 28') sont séparés de sorte que les requêtes de lecture des données d'état venant des composants clients (231, 232) soient réparties entre les configurations. 2. Architecture selon la revendication 1, caractérisée en ce que le premier composant client (231) accède en lecture des données d'état à l'intérieur de la configuration primaire (21) et un composant client (232) d'une configuration secondaire (22) accède en lecture aux données d'état à l'intérieur de sa configuration (22). 3. Architecture selon l'une quelconque des revendications précédentes, caractérisé en ce que la configuration primaire (21) réponds aux requêtes en écriture de tous les composants clients (231, 232). 4. Architecture selon l'une quelconque des revendications précédentes, caractérisée en ce que la détection d'une défaillance de la configuration primaire (21) est effectuée par un modèle orienté objet testant, lors de chaque requête lancée par un composant client (231, 232) la réponse du composant de traitement de tâches (28). 5. Architecture selon la revendication 4, caractérisée en ce que le modèle est le modèle FT CORBA. 6. Architecture selon l'une quelconque des revendications précédentes, caractérisée en ce qu'elle comporte un service (30) de distribution des données pour dupliquer les données d'état (29, 29') d'une configuration à l'autre. 7. Architecture selon l'une quelconque des revendications précédentes, 5 caractérisée en ce que chaque configuration (21, 22) est implantée dans un calculateur distinct. 8. Architecture selon l'une quelconque des revendications précédentes, caractérisée en ce que les configurations (21, 22) sont reliées entre elles par o une liaison multicast, les accès d'une configuration à l'autre s'effectuant par cette liaison.