Это очень похоже на микросервисную архитектуру. Несмотря на то, что в js есть фреймворки для создания микросервисов, такие как молекулярный , многие реализации микросервисов не зависят от языка c. Фактически, Amazon, одна из старейших историй успеха микросервисов, не использует ни одного языка программирования или платформы для веб-сайта Amazon.com. Это сочетание нескольких серверов в PHP, Java, Perl и даже некоторых C ++ .
Ядром архитектуры микросервиса является интерфейс обратного прокси-сервера HTTP , Это может быть Apache2 или Nginx или что-то более специализированное, например HAProxy . Когда веб-сервер настроен для прокси-микросервисов таким образом, их часто называют «шлюзами приложений».
Традиционно архитектура состоит в том, чтобы иметь интерфейсные средства визуализации шаблонов (например, простой веб-сайт PHP), которые получают данные из другие сервисы, которые могут быть написаны на любом языке:
┌───────────┐
.-│ Service 1 │
┌─────────────┐ / └───────────┘
┌─────────┐ │ Web Server/ │ ┌───────────┐-' ┌───────────┐
│ Browser │-- internet --│ Load │-│ Front-end │-----│ Service 2 │
└─────────┘ │ Balancer │ └───────────┘-. └───────────┘
└─────────────┘ \ ┌───────────┐
HTTP '-│ Service 3 │
HTTP/FastCGI └───────────┘
HTTP/RPC/REST
Kafka/RabbitMQ etc.
С появлением CORS такие сервисы, как Facebook, все чаще напрямую предоставляют множество бэкэнд-сервисов непосредственно веб-странице:
┌───────────────────┐
┌─────────┐ ---│ Static web server │
│ Browser │-- internet -' └───────────────────┘ ┌───────────┐
└─────────┘ \ ┌─────────────┐ │ Service 1 │ services
\ │ Web Server/ │--└───────────┘ on same
React/Angular/Vue \-------│ Load │ ┌───────────┐ server
front-end \ │ Balancer │--│ Service 2 │
\ └─────────────┘ └───────────┘
\ HTTP
HTTP+CORS \
(ajax) \ ┌───────────┐ service on
'--------------│ Service 3 │ separate
└───────────┘ server
Чтобы это работало, обмен данными между веб-страницей и службами ограничен HTTP и Websocket, поэтому внутренними службами должны быть службы HTTP (REST / json -RPC / SOAP et c.).
Мониторинг и перезапуск службы обычно выполняются с использованием специального механизма мониторинга и перезапуска службы. Для node.js популярным программным обеспечением для обнаружения и перезапуска cra sh является PM2 или forever , однако для этого есть другое универсальное программное обеспечение c, например monit . Фактически, не требуется, чтобы все службы использовали одну и ту же систему перезапуска (например, Amazon позволяет каждой функции разрабатываться другой группой и развертывать ее по своему усмотрению).
Если вы тщательно проектируете свой Система сессий (sticky session, токен JWT и c) позволяет масштабировать свой бэкэнд, просто запустив больше серверов. Например, если чат занимает много ресурсов, просто запустите 3 или 4 сервера чата, в то время как работает только один интерфейсный сервер.