Цель : задержка до ~ 10 [ms]
для стабильности SuT
?
Спасибо за добавленные сведения о довольно широком диапазоне потолочные задержки ~ 10 .. 100 [ms]
+
… на самом деле это , заменяющее чем-то, что ранее было реализовано в C. Идея состоит в том, что если интерфейсный слой библиотеки и cli реализованы в Python, пользователям будет проще *1027* собрать из основные функции для их вариант использования . Некоторые из более сложных циклов управления могут быть реализованы как библиотека stati c C или библиотека ржавчины, которую мы будем вызывать с помощью python. В любом случае верхний слой все еще реализован в Python, который должен будет взаимодействовать с C#
( = наиболее важный отсюда …
Необходимость понимания обоих
Затраты желаемого простоты пользовательских расширений и рефакторинга архитектуры
+
Кто платит эти Расходы
)
Прежде чем мы даже начнем поиск Решение :
Для того, чтобы это было сделано безопасно и профессионально, вам, скорее всего, понравится this , чтобы не повторять типичные ошибки неосведомленных решений, где общие замечания исходят из кучи непосредственного опыта с обработкой система с контролем-l oop под ~ 80 [us]
Карта вашей системы управления - как внутренняя экосистема (ресурсы) & экзосистема (взаимодействие с внешним миром)
* 1 084 * Далее следует архитектура:
Без должного понимания игрушек никто не может определиться с «Достаточно правильной архитектурой».
Понимание структуры устройств с задержкой устройство требует, чтобы мы сначала знали (читай + тестируйте + эталон, а также конверт (ы) дрожания / блуждания при (перегруженных) условиях S ystem- ) u nder- T est). Не зная, что это приведет только к слепому и неподтвержденному факту убеждению, наш SuT никогда не ударится в стену реальности , которая докажет себя неправильно, как правило, в наименее приятные моменты.
Необратимо неправильная и плохая практика, поскольку все накопленные до сих пор затраты уже сожжены ...
Знание и тестирование - это ключевой шаг до создания эскиза архитектуры - где важны детали ( ref. Сколько человек теряет в h2d/d2h
латентности [us]
? - почему эти основные расходы так слабо отражены? Значит ли это, что эти расходы не существуют? Нет. Они делают существуют, и ваши контрольные циклы будут платить им каждый раз ... так что лучше знать обо всех таких скрытых затратах, оплаченных в TimeDOMAIN
, задолго до ... до архитектуры проектируется и разрабатывается.)
Не стесняйтесь go Распределено (где разумно поддерживается ) :
Learn от НАСА Аполлон Миссио n design
- он был глубоко распределен
и
- правильная инженерия помогла достичь Луны
- он спас как Национальную гордость, так и жизни этих первых и пока единственных, внеземных жителей Земли
( кредиты Мисс Маргарет ХАМИЛЬТОН *1136* мудрость в определении ее правил проектирования и ее изменения в умах правильной инженерии многих элементов управления стратегии координации петлевых систем )
Либо ZeroMQ (zmq
, представляющая собой зрелую, компонуемую, хорошо масштабируемую архитектуру принципиально распределенного поведения «многие ко многим» , разработанного поверх набор из нескольких простых масштабируемых формальных шаблонов форм общения) или его младшая и легковесная сестра Marting SUSTRIK, nanomsg
, может очень помочь в создании умной макросистемы, где Сильные стороны отдельных компонентов (или монополии, не имеющие замены) могут быть соединены в стабильные, учитывающие приоритеты макросистемы все еще в пределах задержки *1153*, для которых в принципе нельзя (или не нужно) чтобы, по ряду других причин - экономия затрат, время выхода на рынок, первыми из них были юридические ограничения) разработать монолитную c систему «все в одном» .
Хотя на первый взгляд это может показаться усложняющим проблему, вскоре можно понять, что оно служит совершенно противоположному:
- не сжигает топливо (да, деньги инвесторов) на еще одном изобретении колеса (s…)
- с использованием проверенных в отрасли инструментов чаще всего повышает надежность , конечно, если использовать их правильно…
- масштабирование производительности может быть хорошим побочным эффектом, а не pani c слишком поздно перефакторировать кошмар
не говоря уже о положительных преимуществах независимой эволюции таких инструментов и их дальнейшем расширении.
Моя система столкнулась с подобной дилеммой - # C я ни на секунду не могу (зависимость приложения с закрытым исходным кодом была слишком дорогой, если не фатальной для нашего успеха).
- CLI: называется remote-keyboard был точным примером разделения первого python, где remote можно было прочитать как trans-atlanti c -keyboard
- ML: был наименьшим элементом задержки в городе, поэтому необходимо было использовать слияние
- core- Приложение: * 1 200 * была расширена с использованием стандартной отраслевой библиотеки DLL в систему распределенных вычислений , не сообщая об этом (в этом случае оставались только удаленные core-logi c. все остальное было распределено, чтобы минимизировать задержки всех циклов управления и позволить обрабатывать различные уровни приоритетов)
- неблокирующие надстройки : были отключены загружено из core-App
- core-App- (1 + N) -Hot-Standby -Shading: введено в изначально монолитную c C / S экзосистему
Есть ли необходимость добавлять больше для того, чтобы идти скорее Распределенным и независимым от первоначальной блокировки поставщиков?
Выбрав, кроме пота, слез и крови - начать с ZeroMQ в дни его зрелости v2.x, Я не жалею ни одного часа, что сделал это , и не могу себе представить, чтобы выполнить все вышеперечисленное, не сделав этого.