Skip to content

Instantly share code, notes, and snippets.

@kai3341
Last active September 20, 2016 13:10
Show Gist options
  • Save kai3341/798098e6d4520406f51afb1d5cecb3d5 to your computer and use it in GitHub Desktop.
Save kai3341/798098e6d4520406f51afb1d5cecb3d5 to your computer and use it in GitHub Desktop.
Весёлые истории о макетах и веб-сервисах

#Макеты EnergyControl имеет встроенный механизм генерации макетов 80020. В теории всё радужно и прекрасно, на практике мы столкнулись с серией проблем:

  • EnergyControl создавал макет для всех объектов, которые содержатся в его БД. По нашей просьбе разработчики EnergyControl добавили возможность генерировать макет для списка предприятий
  • Механизм макетов неоперативен и позволяет получить данные только за прошлые сутки
  • Принятие макетов в EMCOS приводило к высокой нагрузке, обработка одного макета происходила более часа. Проблема нерешаема
  • Механизм макетов не позволяет гибко контролировать заполнение дыр. Нет возможности контролировать, какие данные были высланы и какие ещё нет. Решается отправкой макетов за несколько дней, из-за чего время обработки возрастает кратно (умножаем на число дней, по которым генерируются макеты)
  • При принятии макета в EMCOS было обнаружено ограничение на число точек учёта. Ограничение отсутсвует в документации EMCOS и по всей видимости является низкоуровневым: происходило переполнение какого-то счётчика. Проблема решается увеличением числа макетов. В результате время обработки макетов возрастает кратно (умножаем на число макетов)
  • При добавлении в макет некоторых объектов макет мог по необъяснимым причинам быть не принят. Решалось переносом таких "сбойных" объектов в новый макет, из-за чего время обработки увеличивалось ещё больше. Причины невозможно локализовать (EMCOS -- чёрный ящик), нерешаемо
  • Макет содержал статус данных "данные корректны" в том числе и для данных отсутствующих или неполных. EMCOS же, всецело полагался на статус и видя, что статус данных "ОК", их не обновлял. Как следствие, данные в БД EMCOS были преимущественно некорректные. Проблема нерешаема

#Web-сервисы Ввиду вышеописанных проблем было принято решение импортировать данные из БД EnergyControl через механизм Web-сервисов. Это решило следующие проблемы:

  • Web-сервисы не приводят к росту нагрузки, данные обрабатываются быстро
  • Web-сервисы позволяют EMCOS контролировать заполнение дыр
  • Статусы данных теперь адекватные. Неполные и некорректные данные EMCOS пересобирает. Как следствие данные в БД EMCOS совпадают с данными в БД EnergyControl

По пути сквозь терни к звездам также выполнено:

  • Обнаружены ошибки в драйвере ECOM-3000:
    • [Исправлено] Не обнулялись переменные, содержащие данные авторизации для устройств. Следствия:
      • EMCOS флудил данными авторизации в сети (фактически передавал их в третьи руки)
      • Часть устройств опрашивалась случайно с чужими данными авторизации, что приводило к необъяснимым глюкам опроса и появлению дыр
    • [Исправлено] HTTP-заголовок содержал сразу 2 ошибки, для обхода которых в реализации Web-сервисов пришлось пойти на разные ухищрения
  • Было написано ПО для контроля полноты данных и анализа точек учёта ПО EnergyControl

#СЭМ-2 и СЭМ-3

  • СЭМ-2
    • Дата считанных показаний отличается от реальной дата на 1 сутки
  • СЭМ-3
    • Стабильность опроса непредсказуема. Тот факт, что устройство было опрошено один раз, не даёт гарантии, что оно будет опрошено в следующий раз
    • Полнота опроса непредсказуема: в некоторых случаях получить данные по некоторым каналам не представляется возможным
    • Отладка не представляется возможной, так как невозможно выявить закономерность глюков
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment