Итак, речь идет о продукте Apache.Ignite (вариант .NET) и его части, называемой Service Grid. Если вкратце - вычислительный кластер, архитектура (микро)сервисов и все такое. И вот возник у меня на днях серьезный вопрос: что будет, если сервис А вызовет сервис Б, а тот в свою очередь вызовет другой метод сервиса А? Вопрос не так уж и прост, если вспомнить, что вся эта структура сервисов является надстройкой над основной частью вычислительного кластера, работающего с акторами и потоками сообщений. И, кстати, тут есть лимит на вложенные вызовы - каждый вызов сервиса до тех пор, пока он не вернул управление обратно вызывающему коду, занимает на целевом узле (с определенными оговорками) один поток исполнения из общего пула. А объем пула потоков, он, знаете ли, по умолчанию не очень-то большой, да и не может быть большим. Это вам не стек вызовов. Короче, было у меня опасение, что второй вызов сервиса А просто зависнет - если на каждый экземпляра сервиса Ignite тратит не более одного потока н
Вложенные циклические вызовы сервисов в Apache.Ignite
8 октября 20248 окт 2024
1
4 мин