@t800zippygod

Микросервисы при разработке сервера?

Всем сдобного времени суток.
Проконсультируйте, пожалуйста, по поводу использования микросервисов в проекте. Конкретная реализация если и будет, то на NodeJS/rabbitMQ

По той информации, которую я вычитал, микросервисы хороши для увеличения уровня абстракции и разделения логики приложения. При этом во всех примерах они поднимались на том же компе, что и основной сервер, но на другом порту.
Мне же интересен вопрос использования микросервисов с точки зрения повышения производительности. Разделение вычислений на несколько общающихся машин.
1) Возможно ли реализовать микросервисы в виде общающихся серверов, расположенных на разных машинах? Понятно, что в любом случае это можно реализовать обычными http запросами. Но мб в проектировании микросервисов есть свои фичи
2) Если подключить микросервис на том же компе, но с другого порта, то под него операционной системой будет выделен отдельный процесс? То есть таким образом можно выполнять параллельные вычисления на машине?
3) Кто знаком с реализацией микросервисов на NodeJS, подскажите хорошие ресурсы или книги плиз.
4) Кто знает какую-то фундаментальную литературу на тему построения сложных нагруженных серверов — напишите пожалуйста, с удовольствием почитаю
  • Вопрос задан
  • 287 просмотров
Решения вопроса 1
@0nkery
1. Да, через тот же RabbitMQ вы можете организовать общение ваших микросервисов. Особенно RabbitMQ будет полезен в случае, если вы сможете избежать большого количества прямых запросов к отдельным микросервисам, а сможете представить потоки данных в виде событий и их обработчиков.
2. Да, будет запущен в отдельном процессе. Это можно назвать параллельными вычислениями. :) Ну и вообще в линуксе разница между отдельным системным процессом и отдельным потоком (thread'ом) внутри одного системного процесса размыта (отличаются у них фактически только параметры создания -- есть ли общая память с какими-то другими потоками исполнения).
3. Не знаком, но знаю, что многие компании убегают с ноды, потому что не хватает производительности или запутанная модель исполнения.

Ну и вообще, если вы переживаете насчет производительности, попробуйте что-нибудь более производительное, чем нода: Erlang/Elixir, Go, .NET и так далее.

Так же попробуйте сначала написать монолитный прототип, а от него плясать в построении микросервисов -- так вы сможете четче понять свою предметную область, данные в ней и операции над ними. А микросервисы -- это скорее средство разделения ответственности в больших командах, чем способ увеличить производительность. В большинстве случаев, думаю, производительность от таких вот микросервисов только падает.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы