Различия версий чатбота

From Bloomex Wiki
Jump to navigation Jump to search

1 версия ПО была написана на чистом PHP для простого размещения любого ответа ИИ в чат. Версия работала в общем синхронном потоке, имела связь с LHC посредством поллинга базы на порт 3306. Как следствие работа чата была невозможна, версия была тестовой. Исходный код версии утрачен.

2 версия написана на Laravel 7 (исходный код доступен до сих пор у разработчика). Сохранен поллинг базы (база грузится постоянными запросами) и работа в синхронном потоке для эндпойнтов. Введен простейший валидатор ответов. Фронт написан на внутреннем шаблонизаторе blade. У ПО ведется собственная база для хранения ответов, что вынуждает приложению работать с двумя коннектами одновременно (не критично). Поскольку запросы обрабатываются синхронно, то связь с ИИ применена многопоточная (supervisor). Ограничения по потокам не предусмотрено, поэтому при повышении загрузки нагрузка на базу растет в геометрической прогрессии с индексом «два». Возможен перехлест событий. Эндпойнты обрабатываются на стороне бэка для уменьшения нагрузки на шаблонизатор.

3 версия написана на Laravel 8. Устранен поллинг базы — примена инжекция curl-запроса во внутренний код LHC, база разгружена полностью. Эндпойнт приема сообщений от LHC работает в синхронном режиме (возможны задержки при записи в таблицы). Расширены родительские таблицы базы (с префиксом lhc_), созданы таблицы только для ПО (префикс ab_). Наличие только одного коннекта позволило в 2 раза сократить время записи ответов чатбота. Связь с ИИ по прежнему многопоточная (supervisor) с ограничением потоков до 10. По прежнему возможен перехлест событий, хотя вероятность их уменьшена до разумной величины.

4 версия (активная) - база Symfony6+rabbitMQ+docker. Принципиальные отличия описаны выше и позволяют устранить все недостатки предыдущих версий. Кардинальное отличие новой версии — все компоненты исполнены в микросервисной архитектуре (docker). Это позволит разворачивать приложение одной командой с последующим соединеним с внешними компонетами в течениее нескольких часов. Брокер очередей (rabbitMQ) имеет встроенный GUI, что позволяет следить онлайн за загрузкой очередей, созданием и удалением динамических компонентов.

5 версия в разработке тикет на ТЗ