Как улучшить производительность моего NServiceBus Saga под нагрузкой - PullRequest
0 голосов
/ 07 марта 2020

У меня очень простая Saga, построенная на NSB7 с использованием SQL Транспорт и постоянство NHibernate.

Saga прослушивает очередь, и каждое полученное сообщение проходит через 4 обработчика. Они вызываются в последовательном порядке: два обработчика работают параллельно, а последний обработчик запускается только после завершения обоих параллельных обработчиков. Последний обработчик записывает запись в БД

Допустим, для одного сообщения каждый обработчик занимает 1 секунду. При получении нового сообщения, которое запускает Saga, ожидаемый результат заключается в том, что спустя 3-4 секунды запись записывается в БД.

Если очередь резервируется, скажем, на 1000 сообщений, как только они начинают обработку опять же, для создания новой записи в последнем обработчике требуется почти 2000 секунд. По сути, вместо прохождения ожидаемого времени обработки в 4 секунды для каждого сообщения, они эффективно объединяются в исходных обработчиках до тех пор, пока очередь не будет очищена, а затем делают это снова для следующего обработчика и далее.

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

Спасибо, Уилл

1 Ответ

1 голос
/ 09 марта 2020

Существует документация по проблемам параллелизма саги: https://docs.particular.net/nservicebus/sagas/concurrency#high -load-scenar ios

Я все еще не до конца понимаю проблему. Каждое сообщение, которое создает экземпляр саги, должно создавать запись в базе данных после обработки сообщения. Не после 1000 сообщений. Как еще NServiceBus собирается гарантировать согласованность?

Кроме того, вам, вероятно, не нужно обрабатывать одно сообщение четырьмя обработчиками. Если это действительно должно работать так, используйте публикацию / подписку и создайте разные конечные точки. Сага должна быть сделана с обработкой как можно скорее, особенно в условиях высокой нагрузки ios.

...