Несколько приложений сиддхи или одно большое - PullRequest
0 голосов
/ 22 мая 2019

Мы создаем приложение поверх Siddhi (использующее библиотеку Java), которое позволяет пользователям динамически добавлять правила и запускать всю поступающую информацию в будущем в соответствии с этими правилами.Мой вопрос: лучше ли иметь одно большое приложение с множеством запросов, потоков, окон и разделов или разбить каждый запрос на его собственное приложение?

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

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

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

(Если это слишком широко или требуется какое-либо разъяснение, я сделаю все возможное, чтобы обновитьэтот вопрос соответственно)

1 Ответ

1 голос
/ 22 мая 2019

Из длинного описания, которое вы дали, я предполагаю, что эти правила, добавленные пользователями, не взаимодействуют друг с другом, то есть правила, добавленные пользователем 1, не будут взаимодействовать с правилами, добавленными пользователем 2.

В таком случае рекомендуется использовать разные приложения Siddhi (SiddhiAppRuntimes) для каждого пользователя. Это не добавит много дополнительной производительности, так как приложения не будут взаимодействовать друг с другом. Это улучшит процесс создания снимков, так как мы будем брать отдельные снимки для каждого приложения. Также это обеспечит четкое разделение между каждым набором правил и будет легко управляемым.

...