-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Ускорение времени ответа системы на запросы пользователя #24
Comments
Код есть в Описание протокола: Все проверено и работает |
Чтобы собрать и запустить данную версию что нужно? |
Версии нет такой же жду веб, есть возможность существующую перевести на этот протокол. Его поддержка есть по умолчанию в |
Исходя из описания репозиториев, где будет располагаться решение данного вопроса? |
https://github.com/ostis-dev/sc-machine решение не предназначено для тысяч пользователей, для этого надо решение доделывать. Но для пары сотен оно будет куда быстрее. Реализация протокола уже есть в проекте https://github.com/ostis-dev/sc-core его можно поставить из пакета this._deviceClassSet = new ScSet(
this._client,
this._keynodes.kDevice,
this.OnInitializeDeviceClassSet.bind(this),
this.OnAddDeviceClass.bind(this),
this.OnRemoveDeviceClass.bind(this));
...
private async OnInitializeDeviceClassSet(devices: ScAddr[]) : Promise<void> {
for (let i = 0; i < devices.length; ++i) {
const addr: ScAddr = devices[i];
await this.OnAddDeviceClass(addr);
}
return new Promise<void>(function(resolve) {
resolve();
});
}
private async OnAddDeviceClass(addr: ScAddr) : Promise<void> {
const name: string = await this.GetMainIdtf(addr);
let image: ScAddr = await this.GetImage(addr);
if (!image.isValid()) {
image = await this.GetImage(this._keynodes.kDevice);
}
this._store.dispatch(store.actions.device.addDeviceClass({
addr: addr,
devices: store.NewDeviceMap(),
name: name,
image: image
}));
await this.ListDevicesInClass(addr);
return new Promise<void>(function(resolve) {
resolve();
});
}
private async OnRemoveDeviceClass(addr: ScAddr) : Promise<void> {
this._store.dispatch(store.actions.device.removeDeviceClass(addr));
return new Promise<void>(function(resolve) {
resolve();
});
} Пример использования: |
Правильно ли я понимаю, что ускорение происходит за счет того, что поиск делается одним запросом по шаблону, а не поэлементно как в чистом SCTP? |
@ShunkevichDV
За один запрос мы можем как получить содержимое ссылок, так и установить. При этом часть может получаться, другая устанавливаться. И также с созданием конструкций http://ostis-dev.github.io/sc-machine/http/websocket/#createelements |
Кроме того шаблоны в новой версии будут поддерживать опциональные конструкции. Если топишь тройка помеченная флагом, может отсутствовать в результате. Можно за один запрос получить например все виды идентификаторов, и если отношение например к системному в шаблоне указано как опционально, то его отсутсвие у элемента по прежнему вернет результат в поиске. Просто эти поля будут с пустыми адресами. Вот примеры в юнит тестах (для понимания семантики): https://github.com/deniskoronchik/sc-machine/blob/dev/sc-memory/test/wrap/units/test_templates.cpp#L1542-L1710 Тоже самое есть и в В итоге многие страницы в умном доме ускорились более чем в 30 раз. Изначально этот протокол и делался для него, но я решил его открыть и сделать частью ядра |
День добрый. @deniskoronchik, @ShunkevichDV - какая новая информация по данному вопросу? Как я помню, часть уже внедрена? |
Были некоторые проблемы со сборкой под системы на базе Ubuntu 18.04, Денис исправляет и мы будем пробовать внедрять новый протокол в интерфейсную часть, я другим ребятам уже частично показал |
День добрый. @deniskoronchik, @ShunkevichDV - есть новая информация по данному вопросу? С учетом последних доработок этот вопрос уже решён? |
@idzm частично решен, но требуется переработка интерфейса, она в процессе, но пока еще далека от завершения. Тогда и скорость, и возможности значительно обновятся |
@ShunkevichDV - я так понимаю учетом последних доработок этот вопрос уже решён? |
В какой-то мере да, стало значительно быстрее. Можно дождаться обновлений на сервере и тогда закрыть |
После установки версии https://github.com/ostis-ai/ostis-web-platform/releases/tag/0.7.0-Rebirth проблема должна уйти |
По результатам демонстрации работы системы (база знаний по S88), оказалось, что текущее время отклика системы, развернутое на тестовом общедоступном сервере, велико - у пользователя уже появился следующий запрос, а текущий ответ ещё не до конца отобразился. @deniskoronchik упоминал о варианте оптимизации сетевого обмена - необходимость такой модернизации получила реальное подтверждение.
The text was updated successfully, but these errors were encountered: