Client-serveur ou producteur-consommateur : deux modèles de communication
Le modèle client-serveur propose une communication centralisée, déclenchée par la requête. Le modèle producteur-consommateur, découplé, est piloté par l'événement. Le CAN retient le second, pour une communication décentralisée, efficace et évolutive.
Deux paradigmes complémentaires
Le modèle client-serveur décrit toujours une relation un-à-un entre un client et un serveur, même si plusieurs clients sont possibles. Le modèle producteur-consommateur décrit une relation un-à-plusieurs entre un producteur et un ou plusieurs consommateurs. Tous les concepts modernes de communication en automatisme industriel prennent en charge les deux.
Sur ce diagramme, les lignes verticales représentent les couches locales ou distantes du modèle OSI chez les deux participants, et les lignes obliques la transmission des unités de données de protocole sur le support. Une requête de service au niveau 7 peut par exemple consister à lire une variable chez un participant distant : la valeur demandée est alors retournée au client avec la confirmation de service.
Les services où un participant fournit des données à d'autres sans sollicitation, ou à la suite d'une souscription unique — par exemple sous forme de message multicast ou broadcast — relèvent du modèle producteur-consommateur. Les services offerts par le producteur sont proposés aux autres participants par une notification, qu'ils peuvent consommer ou ignorer. Comme le producteur ne connaît normalement pas les consommateurs, une confirmation de service n'aurait pas de sens. C'est ce modèle qui décrit la transmission des messages CAN.
Comparaison
| Critère | Client-serveur | Producteur-consommateur |
|---|---|---|
| Flux de communication | Déclenché par la requête du client, auquel le serveur répond | Déclenché par la production de données ; le consommateur attend leur arrivée |
| Évolutivité et souplesse | Extensible en ajoutant des serveurs ou en répartissant la charge, mais limitée par la nature centrale du serveur | Élevée : producteurs et consommateurs évoluent indépendamment |
| Tolérance aux pannes | La défaillance du serveur affecte tout le système | Le découplage limite l'impact de la défaillance d'un élément |
L'usage dans les réseaux CAN
Pour la communication de base, le CAN retient le modèle producteur-consommateur. Cela permet de transmettre efficacement les messages entre calculateurs ou capteurs d'un véhicule sans serveur central. Chaque calculateur peut être à la fois producteur et consommateur, d'où une communication souple et décentralisée. Les données produites sont émises sur le bus sans désigner de consommateur ; les autres nœuds écoutent et traitent ce qui les concerne. Cette architecture réduit la complexité de la transmission et accroît la fiabilité du système.
En résumé
Là où le modèle client-serveur offre une structure centralisée et déclenchée par la requête, le modèle producteur-consommateur se distingue par son découplage et sa transmission événementielle. Dans les systèmes CAN, ce dernier s'accorde parfaitement avec la nature décentralisée et robuste du réseau.