как улучшить время отклика для моего бота после перехода с MemoryStorage на хранилище BLOB-объектов Azure - PullRequest
0 голосов
/ 13 мая 2019

Смена провайдера хранилища для моего бота привела к значительным задержкам во времени отклика - а иногда и вообще нет никакого отклика -

до: Память Память - отличное время отклика

после: хранилище BLOB-объектов Azure - довольно низкая производительность

Память для ботов должна использоваться только для установок без PROD - по крайней мере, при переходе на QA или разработчики PROD должны либо переключиться на «Blob», либо на CosmosDB - есликод бота был взят из примеров или сгенерирован генератором yeoman, поэтому обычно есть несколько встроенных комментариев для напоминания разработчикам.

Я использую SDK V4 - последний код бота от 2019 года - с использованием nodeJS -

до:

const memoryStorage = new MemoryStorage();
conversationState = new ConversationState(memoryStorage);
userState = new UserState(memoryStorage);

после:

const { BlobStorage } = require('botbuilder-azure');
const STORAGE_CONFIGURATION_ID = "myblogstorage";
// Get service configuration
const blobStorageConfig = botConfig.findServiceByNameOrId(STORAGE_CONFIGURATION_ID);
const blobStorage = new BlobStorage({
     containerName: (blobStorageConfig.container || DEFAULT_BOT_CONTAINER),
     storageAccountOrConnectionString: blobStorageConfig.connectionString,
 });

conversationState = new ConversationState(blobStorage);
userState = new UserState(blobStorage);

Я ожидал некоторой очевидной задержки из памяти для вызова удаленного сервиса - но я боюсь, что такая значительная задержка вряд ли приемлема.

1.) Это только у меня - или другие нашли такую ​​же проблему?

2.) Есть ли что-то еще, что мне нужно рассмотреть, чтобычтобы исправить это - например, перейти к определенному классу обслуживания хранилища, который может открываться и реагировать быстрее (что?), или сделать функции «асинхронными», которые все еще блокируют (что, любой передовой опыт?), или «подогреть» / подготовитьсоединение раньше, чтобы избежать рукопожатия во время диалога - что-то вроде этого?

Я обнаружил некоторые жалобы на производительность прямой / бот-фреймворк еще в 2017 году - но предположим, что они больше не действительны- Прямая линия была достаточно быстрой с MemoryStorage

Ответы [ 2 ]

0 голосов
/ 15 мая 2019

Ознакомьтесь с сообществом бодибилдеров на GitHub, у них есть отличные ресурсы, которые помогут вам понять ваши варианты управления состоянием. В этом примере показано, как использовать Elasticstorage в качестве поставщика ConversationState.Также может быть пользовательская реализация, которую вы можете свернуть.

0 голосов
/ 14 мая 2019

Я бы порекомендовал вам отойти от хранилища блогов.Хотя это и является предоставленной опцией для службы хранения, она не так масштабируема, как некоторые другие службы.Например, Cosmos обеспечивает лучшую масштабируемость за счет корректировки пропускной способности и т. Д.Однако для большинства людей ценообразование.

Важно отметить, что вы можете подключаться к своим данным и хранить их на любом носителе.Bot Framework Team предоставляет информацию для подключения вашего бота к Cosmos и хранилищу BLOB-объектов, но вы не ограничены только этими вариантами.Вам будет необходимо определить конфигурацию между вашим ботом и любым сервисом, на котором вы решите воспользоваться.В качестве примера, этот (не MS) GitHub repo демонстрирует, как использовать Mongo в качестве слоя хранения данных.Я лично не проверял это, но это стоит посмотреть.

Надеюсь на помощь!

...