49 votes

Quels sont les outils qui manquent aux programmeurs distribués?

J'ai un rêve pour améliorer le monde de la programmation distribuée :)

En particulier, je suis le sentiment d'un manque d'outils nécessaires pour le débogage, la surveillance, la compréhension et à la visualisation du comportement de systèmes distribués (zut, j'ai dû écrire ma propre enregistreur et visualiseurs pour satisfaire mes exigences), et je suis en train d'écrire un couple de ces outils dans mon temps libre.

De la communauté, quels sont les outils que vous manque à cet égard? Veuillez les décrire un par répondre, avec une idée approximative de ce que l'outil serait censé faire. D'autres peuvent remarquer l'existence de ces outils, ou quelqu'un pourrait trouver l'inspiration et écrire.

14voto

jkff Points 2939

OK, permettez-moi de commencer.

Distribué enregistreur avec une haute précision globale de l'axe des temps - qui permet d'inscrire les événements à partir de différents ordinateurs dans un système distribué avec une grande précision et indépendante sur l'horloge de décalage et de la dérive, avec suffisamment adaptable pour gérer la charge de plusieurs centaines de machines, et de plusieurs milliers de journalisation des processus. Tel un enregistreur permet de trouver des transports au niveau de la latence des goulots d'étranglement dans un système distribué en voyant, par exemple, combien de millisecondes qu'il prend réellement pour un message de voyager à partir de l'éditeur à l'abonné par l'intermédiaire d'un message de la file d'attente, etc.

Syslog n'est pas ok, car il n'est pas suffisamment évolutive - 50000 journalisation des événements par seconde sera trop pour elle, d'horodatage et de précision souffriront grandement sous une telle charge.

Facebook le Scribe n'est pas ok, car il ne fournit pas un mondial de l'axe des temps.

En fait, les deux syslog et le scribe enregistrer les événements en vertu de l'arrivée d'horodateurs, ne relevant pas de risque de survenue d'horodateurs.

Honnêtement, je ne manque pas d'un tel outil - j'ai écrit un moi-même, je suis très heureux avec elle et je vais ouvrir-source. Mais les autres peuvent.

P. S. j'ai open-source: http://code.google.com/p/greg

10voto

Andy Thomas Points 30979

Cher père noël, je voudrais des visualisations des interactions entre les composants dans le système distribué.

Je voudrais une représentation visuelle montrant:

  • Les interactions entre les composants, comme UML diagramme de collaboration ou d'un diagramme de séquence.
  • Composant d'arrêt et les temps de démarrage que l'auto-interactions.
  • Sur les qui héberge les composants sont actuellement en cours d'exécution.
  • L'emplacement de ces hôtes, si disponible, à l'intérieur d'un bâtiment ou géographiquement.
  • L'arrêt de l'hôte et les temps de démarrage.

Je voudrais être en mesure de:

  • Filtrer les composants et/ou des interactions affiché pour afficher uniquement ceux qui vous intéressent.
  • Enregistrement des interactions.
  • Afficher une plage de temps dans une statique diagramme.
  • Lire les interactions dans une animation, avec des contrôles de vidéo pour la lecture, la pause, rembobinage, avance rapide.

J'ai été un bon développeur toute l'année, et vraiment comme ça.

9voto

jkff Points 2939

Là encore, voir à cette question, Comment faire pour visualiser le comportement de nombreux simultanée multi-étape de processus?.

alt text

(Je suis sans vergogne, qui fait référence à mes propres trucs, mais c'est parce que les problèmes sont résolus par ce genre de choses étaient importantes pour moi, et la question actuelle est précisément sur les problèmes qui sont importants pour quelqu'un).

5voto

Amadiro Points 575

Vous pourriez avoir un coup d'oeil à quelques-uns des outils qui viennent avec erlang/OTP. Il n'a pas toutes les fonctionnalités d'autres personnes ont suggéré, mais certains d'entre eux sont tout à fait à portée de main, et construit avec beaucoup d'expérience. Certaines de ces derniers sont, par exemple:

  • Débogueur permet de déboguer les processus simultanés, également à distance, AFAIR
  • L'Introspection des outils pour l'amnésie & nbsp;/ets de tables ainsi que de processus de tas
  • Suivi de Message
  • Surveillance de la charge sur les nœuds distants
  • enregistrement distribué et rapport d'erreur système
  • profiler, qui travaille pour la distribution de scénarios
  • Processus/tâche/gestionnaire d'applications pour les systèmes distribués

Ceux-ci viennent bien sûr, en plus des caractéristiques de base de la plate-forme fournit, comme le Nœud de la découverte, de l'IPC protocole, des protocoles RPC & services, transparent distribution, distribué intégré dans la base de données de stockage, global et le nœud local du registre de noms de processus et de toutes les autres causes de la substance qui rend la plate-forme tic.

2voto

Nikhil Points 2048

Je pense que c'est une excellente question et voici mon 0.02 sur un outil que je trouverais vraiment utile. L'une des difficultés que je rencontre avec la programmation distribuée est dans le déploiement de code pour plusieurs machines. Assez souvent, ces machines peuvent être légèrement différentes de la configuration ou pire avoir différents paramètres de l'application.

L'outil que j'ai à l'esprit serait celui qui pourrait, sur demande de toucher tous les ordinateurs sur lesquels l'application est déployée et de fournir des informations sur le système. Si l'on spécifie un fichier de settings ou une ressource comme un registre, il serait de fournir la liste de toutes les machines. Il peut aussi regarder les privilèges d'accès d'utilisateur pour les utilisateurs de l'exécution de l'application.

Une amélioration serait de fournir des indications lorsque les paramètres ne sont pas la contrepartie d'une liste principale fournie par le développeur. Elle peut également indiquer les serveurs de différentes configurations et offrent diff fonctionnalité.

Ce qui serait vraiment utile pour .NET applications car il ya tellement de nombreuses configurations de la machine.config de l'application.la configuration, les Paramètres IIS, les autorisations de l'utilisateur, etc) que les chances de différentes configurations sont élevés.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X