An open API service indexing awesome lists of open source software.

https://github.com/andrey123815/node_js_super_app

:recycle: NodeJS project with microservice-architecture with highload best-practice patterns
https://github.com/andrey123815/node_js_super_app

amqp cluster express microservices-architecture nginx nodejs rabbit-mq

Last synced: 2 months ago
JSON representation

:recycle: NodeJS project with microservice-architecture with highload best-practice patterns

Awesome Lists containing this project

README

          

# NodeJS Super App

### Описание проекта:

1) Реализованы микросервисы чата и истории чата на основе брокера сообщений RabbitMQ и протокола AMQP

- Применялся развлетвляющий коммутатор, две эксклюзивных очереди для чатов и одна надежная очередь для истории чата


- Обеспечена отказоустойчивость: при отказе сервиса истории (или его временном отключении) сервис чата работает, при подключении сервиса истории все отправленные в период отключения сообщения подгружаются в историю


2) С помощью кастомного shell-скрипта реализована возможность поднять необходимое количество инстансов главного сервера


3) С помощью библиотеки cluster произведена кластеризация основного процесса главного сервера на express, обеспечена высокая производительность засчет создания дочерних процессов по количеству ядер процессора

4) Реализован алгоритм безотказной работы сервера: Master-процесс отслеживает состояние дочерних, в случае завершения с ошибкой - перезапуск (написан скрипт на эмуляцию ошибок дочерних процессов, произведена проверка алгоритма)


5) Реализован алгоритм мягкой перезагрузки сервера: в случае получения сигнала перезагрузки Master-процесс начинает последовательно останавливать и создавать новых воркеров


6) Сервис удаленного журналирования через механизм мультиплексирование-демультиплексирование (MUX-DEMUX) потоков (Streams) через самописный протокол межсерверного взаимодействия

7) Настроен Nginx со схемой редиректов на основные сервера и на сервера микросервисов, реализована балансировка между основными серверами (nginx.conf)


8) Отказоустойчивость мастер процесса с использованием супервизора forever


9) Написан модуль highload.js, в котором производится нагрузочное тестирование через утилиту siege


10) Организованы сложные вычисления в отдельном потоке при помощи модуля worker_threads с использованием crypto-streams


11) Проведены замеры performance


12) Конфигурация nodemon & ts-node для ускорения dev-разработки