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
- Host: GitHub
- URL: https://github.com/andrey123815/node_js_super_app
- Owner: Andrey123815
- Created: 2023-09-09T11:41:16.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2023-09-16T14:38:28.000Z (almost 3 years ago)
- Last Synced: 2023-09-16T21:30:52.546Z (almost 3 years ago)
- Topics: amqp, cluster, express, microservices-architecture, nginx, nodejs, rabbit-mq
- Language: TypeScript
- Homepage:
- Size: 806 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
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-разработки