Какие инструменты отсутствуют у распределенных программистов? - PullRequest
49 голосов
/ 23 ноября 2010

У меня есть мечта улучшить мир распределенного программирования:)

В частности, я испытываю недостаток необходимых инструментов для отладки, мониторинга, понимания и визуализации поведения распределенных систем (черт,Мне пришлось написать свой собственный регистратор и визуализаторы, чтобы удовлетворить мои требования), и я пишу пару таких инструментов в свободное время.

Сообщество, какие инструменты вам не хватаетэто отношение?Пожалуйста, опишите по одному на ответ, с приблизительным представлением о том, что должен делать инструмент.Другие могут указать на существование таких инструментов, или кто-то может вдохновиться и написать их.

Ответы [ 10 ]

14 голосов
/ 23 ноября 2010

ОК, позвольте мне начать.

Распределенный регистратор с высокоточной глобальной временной осью - позволяет регистрировать события с разных машин в распределенной системе с высокой точностью и независимо отсмещение часов и дрейф;с достаточной масштабируемостью для обработки нескольких сотен машин и нескольких тысяч процессов ведения журнала.Такой регистратор позволяет находить узких мест задержки транспортного уровня в распределенной системе, например, за счет того, сколько миллисекунд требуется для передачи сообщения от издателя к подписчику через очередь сообщений и т. Д..

С системным журналом не все в порядке, потому что он недостаточно масштабируемый - для него будет слишком много 50000 событий журналирования в секунду, а при такой нагрузке точность метки времени сильно пострадает.потому что он не обеспечивает глобальную временную ось.

На самом деле, и системный журнал, и сценарий регистрируют события под временными метками прибытия, а не временными метками.

Честно говоря, у меня нет такого инструмента- Я написал один для себя, я очень доволен этим и собираюсь открыть его.Но другие могут.

PS Я с открытым исходным кодом: http://code.google.com/p/greg

10 голосов
/ 23 ноября 2010

Дорогой Санта, я хотел бы визуализировать взаимодействия между компонентами в распределенной системе.

Мне бы хотелось визуальное представление, показывающее:

  • Взаимодействия между компонентами в виде диаграммы сотрудничества UML или диаграммы последовательности.
  • Время выключения и запуска компонентов каксамовзаимодействия.
  • На каких хост-компонентах в данный момент работают компоненты.
  • Расположение этих хостов, если доступно, в здании или географически.
  • Время выключения и запуска хоста.

Я хотел бы иметь возможность:

  • Отфильтровать отображаемые компоненты и / или взаимодействия, чтобы показать только те, которые представляют интерес.
  • Записать взаимодействия.
  • Отображение желаемого диапазона времени на статической диаграмме.
  • Воспроизведение взаимодействий в анимации с типичными элементами управления видео для воспроизведения, паузы, перемотки, быстрой перемотки вперед.

Я был хорошим разработчиком в течение всего года и очень хотел бы этого.

9 голосов
/ 23 ноября 2010

Опять же, посмотрите на этот вопрос - Как визуализировать поведение многих параллельных многоступенчатых процессов? .

alt text

(я бесстыдноссылаясь на свой собственный материал, но это потому, что проблемы, решаемые этим материалом, были важны для меня, и текущий вопрос как раз о проблемах, которые важны для кого-то).

5 голосов
/ 24 ноября 2010

Вы могли бы взглянуть на некоторые инструменты, которые поставляются с erlang / OTP.Он не имеет всех функций, предложенных другими людьми, но некоторые из них довольно удобны и построены с большим опытом.Вот некоторые из них, например:

  • Отладчик, который может отлаживать параллельные процессы, в том числе удаленно, AFAIR
  • Инструменты самоанализа для таблиц mnesia / ets и кучи процессов
  • Трассировка сообщений
  • Мониторинг нагрузки на локальных и удаленных узлах
  • распределенная система регистрации и отчетов об ошибках
  • профилировщик, который работает для распределенных сценариев
  • Процесс / задача/ диспетчер приложений для распределенных систем

Они, конечно, дополняют базовые функции, которые предоставляет платформа, такие как обнаружение узлов, протокол IPC, протоколы и службы RPC, прозрачное распределение, распределенное встроенное хранилище базы данных., глобальный и локальный реестр для имен процессов и всего остального, что делает платформу простой.

2 голосов
/ 23 ноября 2010

Вы также можете взглянуть на Akka: http://akka.io

2 голосов
/ 23 ноября 2010

По моему мнению, не хватает платформы распределенного программирования ... платформы, которая делает прикладное программирование в распределенных системах таким же прозрачным, как и нераспределенное программирование.

2 голосов
/ 23 ноября 2010

Я думаю, что это отличный вопрос, и вот мой 0,02 на инструмент, который я нашел бы действительно полезным.Одна из проблем, с которыми я сталкиваюсь при распределенном программировании, заключается в развертывании кода на нескольких машинах.Довольно часто эти машины могут иметь слегка различную конфигурацию или, что еще хуже, разные настройки приложения.

Я имею в виду инструмент, который по требованию может охватывать все машины, на которых развернуто приложение, и предоставлять системную информацию.Если указать файл настроек или ресурс, такой как реестр, он предоставит список для всех машин.Он также может посмотреть на привилегии доступа пользователей для пользователей, запускающих приложение.

Уточнение будет состоять в том, чтобы предоставлять указания, когда настройки не соответствуют основному списку, предоставленному разработчиком.Это также может указывать на серверы, которые имеют разные конфигурации и предоставляют различные функции.

Это было бы очень полезно для приложений .NET, поскольку существует так много конфигураций (machine.config, application.config, настройки IIS, пользовательские разрешения и т. Д.), Что вероятность различных конфигураций высока.

1 голос
/ 23 ноября 2010

Не слишком ли рано работать с Инструментами, когда мы даже не договариваемся о платформе?У нас есть несколько разновидностей моделей акторов, виртуальная общая память, UMA, NUMA, синхронный поток данных, поток данных с метками токенов, многоуровневые векторные процессоры памяти, кластеры, сетка передачи сообщений или сеть на кристалле, PGAS, DGAS и т. Д.

Не стесняйтесь добавлять больше.

Внести свой вклад: я нахожу себя пишущим много распределенных программ, создавая DAG, которая преобразуется в специфичный для платформы код.Каждая оптимизация платформы - это различные правила преобразования в этой группе DAG.То же самое можно наблюдать в Microsoft Accelerator и Dryad, в Concurrent Collections от Intel, в MIT StreaMIT и т. Д. Не зависящая от языка библиотека, которая собирает все эти преобразования DAG, позволит каждый раз заново изобретать колесо.

0 голосов
/ 16 декабря 2010

Помимо упомянутого инструмента для «визуализации поведения многих параллельных многоэтапных процессов» (splot), я также написал «tplot», который подходит для отображения количественных шаблонов в журналах.

Большая презентация об обоих инструментах, с лотами красивых картинок здесь .

0 голосов
/ 06 декабря 2010

Позвольте мне сообщить тем, кто одобрил этот вопрос, указав на регистратор Грега - http://code.google.com/p/greg. Это распределенный регистратор с высокоточной глобальной временной осью, о котором я говорил в другом ответе в этой теме.

...