Подтвердить что ты не робот

Какие инструменты не имеют распределенных программистов?

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

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

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

4b9b3361

Ответ 1

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

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

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

Facebook Scribe не работает, потому что он не обеспечивает глобальную ось времени.

На самом деле, как syslog, так и scribe регистрируют события под отметками времени прихода, а не под отметками времени.

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

P.S. Я открыл его: http://code.google.com/p/greg

Ответ 2

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

Я бы хотел, чтобы наглядное представление показывало:

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

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

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

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

Ответ 3

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

alt text

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

Ответ 4

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

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

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

Ответ 5

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

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

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

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

Ответ 6

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

Ответ 7

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

Ответ 8

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

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

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

Ответ 9

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

Ответ 10

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

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