Разделение роли серверов приложения

Добрый день, коллеги!

 

Прошу подсказать, есть ли техническая возможность распределить роль серверов с приложением на пользовательский сегмент и обработку процессов на отдельные сервера, наподобие решений, где Web-Server и App-Server - это отдельные сервера.

Хотелось бы, чтобы пользователи подключались к серверам. на которых не выполняются вычисления и обработки бизнес-процессов, интеграции и прочее, а это было на отдельном сервере.

 

Если это возможно, прошу рассказать, как это реализовать

Спасибо!

Нравится

1 комментарий

Павел, здравствуйте!



Выполнение фоновых процессов можно вынести в RabbitMQ (7.17.0 и выше), в таком случае не придётся увеличивать maxthreadcount и, как следствие, нагрузка на приложение снизится.



Инструкция:

1. Развернуть сервер RabbitMQ версии 3.8.0 или выше на своем сервере:

Для режима разработки: В docker (сразу с vhost): 

docker run -d --name some-rabbit -e RABBITMQ_DEFAULT_VHOST=VirtualHostName -p 15672:15672 -p 5672:5672 rabbitmq:3-management



2. Создать виртуальный хост:  https://www.rabbitmq.com/vhosts.html

Например, так:

curl -u guest:guest -X PUT http://host:15672/api/vhosts/VirtualHostName



3. Настроить ConnectionStrings.config

<add name="messageBroker" connectionString="amqp://guest:guest@host:5672/VirtualHostName" />, где VirtualHostName - название virtual host, созданного в п.2.



4. Изменить настройки в /Terrasoft.WebApp/Web.config (net framework), Terrasoft.WebHost.dll.config (net core)

 

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

Показать все комментарии