У меня проблема с дизайном системы.В текущей архитектуре хост будет принимать один вход потока данных в реальном времени (например, запрос клиента на покупку) и выполнять некоторую работу с этими данными.Моя работа состоит в том, чтобы позволить хосту извлекать исторические данные и выполнять ту же работу с этими данными.
Существует два требования:
- Исторические данные должны сводить к минимуму влияние на процесс ввода в реальном времени.
- Не должно возникатьЦП хоста.
Другими словами, данные в реальном времени имеют более высокий приоритет.Как только он получает данные в реальном времени, он должен обрабатывать их как можно скорее.Данные в реальном времени неоднородны, иногда нет данных в реальном времени, особенно в непиковое время.
У меня есть два варианта.
- Планирование циклического типа для ввода в реальном времени и истории.Если ввод в реальном времени пуст, хост может получить исторические данные.Ограничения:
- Хост будет полностью занят, если ввод в режиме реального времени пуст, а исторический объем ввода достаточно велик.
- Необходимо определить время выполнения исторических данных и вернуться к потоку в реальном времени, чтобы мы могли обрабатывать ввод в реальном времени во времени.
- Сэто делается несколькими потоками (всего 10 потоков), может быть, мы можем выделить один поток для запуска исторического ввода.Это не приведет к задержке трафика в реальном времени, а также не приведет к высокой загрузке процессора.
Есть ли другие варианты решения этой проблемы?