Andrey123815 / node_js_super_app

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

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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-разработки

About

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


Languages

Language:TypeScript 80.6%Language:JavaScript 12.8%Language:Shell 6.5%