Quels sont les éléments essentiels en temps réel sur les systèmes distribués?
Je reçois mon pied dans la passation de marchés et ont eu aujourd'hui ma première ronde d'entrevues pour un poste d'entrepreneur. J'ai passé cependant, elle m'a dit - étant principalement une INTERFACE utilisateur développeur - je seulement couvert les bases de ce dont ils avaient besoin pour leur backend, et je devrais le lire sur les systèmes distribués avant la deuxième ronde.
Jusqu'à présent dans ma carrière, j'ai travaillé dans les opérations de poste, où en temps réel n'a jamais été nécessaire.
Depuis que j'ai ne reste que quelques jours, quels sont les thèmes essentiels que j'ai besoin de couvrir? D'abord pour être en mesure de répondre à sa question et qui sont généralement considérés comme à peu près adéquate dans les systèmes distribués?
La question était de savoir comment afficher les données en quasi temps réel sur votre INTERFACE utilisateur? Ce qui doit être fait sur le backend? Je l'ai mentionné Producteur/Consommateur motif en temps réel des flux de données. Il l'aimait, mais il a dit qu'il a besoin de plus lors de la deuxième entrevue.
Toute aide serait vraiment appréciée,
Vous devez vous connecter pour publier un commentaire.
Quels sont les éléments essentiels de la distribué des systèmes en temps réel?
Distribué en temps réel du système compose deux parcours de jeux de propriétés qui lui sont imposées par le domaine du problème ou de la solution de domaine (ou les deux).
Distribué
Un distribué système de liens d'un certain nombre de independent computing entités ayant des propriétés locales par le biais d'un mécanisme de communication. En conséquence, les algorithmes et les autres composants de conception doit prendre en considération les synchronie et la modèle de l'insuffisance. Un résumé utile (pas tout à fait objectif) de calcul distribué préoccupations est inclus dans Deutsch Huit Erreurs de Calcul Distribué. (Voir cette durée de l'exposition.) Tous ces éléments sont à considérer dans (temps réel) de conception distribuée; chacun d'eux est un point de départ essentiel de la conception et de la mise en œuvre concerne:
En Temps Réel
Un en temps réel système est un système dans lequel la rapidité d'exécution de l'opération d'achèvement est une partie des exigences fonctionnelles et de l'exactitude de mesure du système. (J'ai ouvert un DONC, la question ici pour essayer de clarifier cela.) En réalité, presque tous les systèmes peuvent être considérés comme "doux" en temps réel, dans qui il y a généralement tacite exigences/attentes pour la rapidité des opérations. Nous nous réservons le en temps réel terme, parfois qualifié par doux ou dur, pour les systèmes qui sont incorrect lorsque les contraintes de temps ne sont pas remplies. Notez que beaucoup de préoccupations résumées dans les erreurs ci-dessus se croisent avec l'actualité. (Voir aussi la en temps réel de la balise wiki)
Il est utile de noter que la RT (et DRT), il existe des systèmes à un ensemble d'exigences, avec "déterministe" (ou conventionnellement, dur en temps réel) à une extrémité. Cependant, beaucoup de systèmes ont de très importantes contraintes de temps qui sont néanmoins non-déterministe. En particulier dans le cadre de la DRT systèmes, il est également utile de distinguer le concept d'activité urgence de l'activité priorité. Dans les grands systèmes où la latence et l'échec sont réels et non-trivial facteurs, la gestion explicite de l'informatique et de la communication, des ressources pour effet de rapidité et d'autres exigences de conception devient de plus en plus important, et la séparation de ces deux dimensions devient important.
Composant Distribué en Temps Réel
Quelques références
Assez traditionnelle présentation de DRT systems, jetez un oeil à Kopetz livre. Pour une image plus dynamique, Jensen et de travail de la son site web sont recommandés. Dans le Java domaine, je suggère la lecture de l'excellent "Introduction à la fiabilité de la Programmation Distribuée". Il n'est pas de l'adresse de domaine complet des problèmes de rapidité d'exécution, mais ne s'adresse échec partiel est particulièrement claire.
Récemment, le concept de (peu fiable) l'échec des détecteurs de a émergé comme un utile synchronie de la construction, permettant utile raisonnement théorique et pratique de la formulation, de conception et de techniques de construction pour les systèmes DRT. Le livre séminal sur le sujet est Sur l'impact de l'échec rapide de détecteurs en temps réel à tolérance de pannes des systèmes, par Aguilera, Le Lann, et Toueg. Ce papier est lourd traîneau, mais les récompenses de chaque once de intellectuelle de l'investissement.
À un niveau élevé en existe deux moyens d'obtenir des données en temps réel depuis le back-end pour l'avant-fin:
Push: Vous pouvez "pousser" les données au client par l'envoi de messages. Je l'ai utilisé dans le passé pour envoyer inter-processus des messages au client d'alerte de l'INTERFACE utilisateur qu'une mise à jour a eu lieu. C'est le moyen le plus rapide pour transmettre des informations, mais il y a des complications. Par exemple, vous ne pouvez pas (encore) d'envoyer des messages IPC pour une application web, sauf si vous utilisez le Flash, Silverlight, etc. Et aussi, vous avez besoin de limiter ces messages, car si vous envoyez trop ça peut rendre votre INTERFACE utilisateur moins réactif. Certaines technologies pour examiner ici sont MSMQ, TCP/IP, et de la WCF équivalents.
Pull: Votre INTERFACE utilisateur peut demander périodiquement des données à partir du back-end. L'avantage de cette méthode est qu'il est facile de code dans l'INTERFACE: il suffit de consulter une source de données chaque X. Mais bien sûr, l'inconvénient est qu'il y a un décalage entre le moment où une mise à jour et lorsque votre application reçoit la mise à jour. Cela peut être inacceptable pour le traitement en temps réel. De toute façon, dans ce modèle que l'on pourrait appeler un service web ou faire un appel à une base de données.
C'est juste le point de départ de la course. Les deux méthodes peuvent être utilisées, les données peuvent être mises en cache sur le client, etc. Tout dépend des besoins de l'application.