{"id":29439417,"url":"https://github.com/andrey123815/node_js_super_app","last_synced_at":"2026-04-14T06:03:39.664Z","repository":{"id":193732736,"uuid":"689301890","full_name":"Andrey123815/node_js_super_app","owner":"Andrey123815","description":":recycle: NodeJS project with microservice-architecture with highload best-practice patterns","archived":false,"fork":false,"pushed_at":"2023-09-16T14:38:28.000Z","size":825,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2023-09-16T21:30:52.546Z","etag":null,"topics":["amqp","cluster","express","microservices-architecture","nginx","nodejs","rabbit-mq"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Andrey123815.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-09-09T11:41:16.000Z","updated_at":"2023-09-16T15:06:33.000Z","dependencies_parsed_at":null,"dependency_job_id":"244217d7-9e1e-499a-b9ab-6f80820536e5","html_url":"https://github.com/Andrey123815/node_js_super_app","commit_stats":null,"previous_names":["andrey123815/node_js_super_app"],"tags_count":0,"template":null,"template_full_name":null,"purl":"pkg:github/Andrey123815/node_js_super_app","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Andrey123815%2Fnode_js_super_app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Andrey123815%2Fnode_js_super_app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Andrey123815%2Fnode_js_super_app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Andrey123815%2Fnode_js_super_app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Andrey123815","download_url":"https://codeload.github.com/Andrey123815/node_js_super_app/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Andrey123815%2Fnode_js_super_app/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265121405,"owners_count":23714503,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["amqp","cluster","express","microservices-architecture","nginx","nodejs","rabbit-mq"],"created_at":"2025-07-13T09:39:59.547Z","updated_at":"2026-04-14T06:03:39.637Z","avatar_url":"https://github.com/Andrey123815.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NodeJS Super App\r\n\r\n### Описание проекта:\r\n\r\n1) Реализованы микросервисы чата и истории чата на основе брокера сообщений RabbitMQ и протокола AMQP\r\n\u003cimg src=\"https://github.com/Andrey123815/node_js_super_app/blob/main/assets/readme_1.png\"\u003e\r\n- Применялся развлетвляющий коммутатор, две эксклюзивных очереди для чатов и одна надежная очередь для истории чата\r\n\u003cbr /\u003e\r\n- Обеспечена отказоустойчивость: при отказе сервиса истории (или его временном отключении) сервис чата работает, при подключении сервиса истории все отправленные в период отключения сообщения подгружаются в историю\r\n\u003cbr /\u003e\r\n2) С помощью кастомного shell-скрипта реализована возможность поднять необходимое количество инстансов главного сервера\r\n\u003cbr /\u003e\r\n3) С помощью библиотеки cluster произведена кластеризация основного процесса главного сервера на express, обеспечена высокая производительность засчет создания дочерних процессов по количеству ядер процессора\r\n\u003cimg src=\"https://github.com/Andrey123815/node_js_super_app/blob/main/assets/readme_2.png\"\u003e\r\n4) Реализован алгоритм безотказной работы сервера: Master-процесс отслеживает состояние дочерних, в случае завершения с ошибкой - перезапуск (написан скрипт на эмуляцию ошибок дочерних процессов, произведена проверка алгоритма)\r\n\u003cbr /\u003e\r\n5) Реализован алгоритм мягкой перезагрузки сервера: в случае получения сигнала перезагрузки Master-процесс начинает последовательно останавливать и создавать новых воркеров\r\n\u003cbr /\u003e\r\n6) Сервис удаленного журналирования через механизм мультиплексирование-демультиплексирование (MUX-DEMUX) потоков (Streams) через самописный протокол межсерверного взаимодействия\r\n\u003cimg src=\"https://github.com/Andrey123815/node_js_super_app/blob/main/assets/readme_3.png\"\u003e\r\n7) Настроен Nginx со схемой редиректов на основные сервера и на сервера микросервисов, реализована балансировка между основными серверами (nginx.conf)\r\n\u003cbr /\u003e\r\n8) Отказоустойчивость мастер процесса с использованием супервизора forever\r\n\u003cbr /\u003e\r\n9) Написан модуль highload.js, в котором производится нагрузочное тестирование через утилиту siege\r\n\u003cbr /\u003e\r\n10) Организованы сложные вычисления в отдельном потоке при помощи модуля worker_threads с использованием crypto-streams\r\n\u003cbr /\u003e\r\n11) Проведены замеры performance\r\n\u003cbr /\u003e\r\n12) Конфигурация nodemon \u0026 ts-node для ускорения dev-разработки\r\n\u003cbr /\u003e\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrey123815%2Fnode_js_super_app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandrey123815%2Fnode_js_super_app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrey123815%2Fnode_js_super_app/lists"}