В вашем вопросе три вопроса.
Ответ на первый вопрос - «нет», а на два других - «это зависит» :) Хватит с язвительностью, давайте посмотрим начто вы спрашиваете ...
В1: Какое снижение производительности одного контейнера по сравнению с услугой с 1 репликой?
A1: 0,000n%.Ваша служба с одной репликой просто раскрутится ... одна реплика.Причина в том, что ответ составляет 0,000n%, потому что Swarm требует немного памяти и процессора в движке Docker, что может повлиять на вашу общую производительность
Q2: Какое снижение производительности сети Swarm?
A2: Теперь вы сравниваете сетевую производительность связи, вызванной сетевой системой Swarm Overlay.В большинстве случаев снижение производительности будет близко к 0. Оверлей по умолчанию, используемый Swarm - VXLAN.Это незначительное снижение производительности, так как каждый пакет должен быть инкапсулирован / декапсулирован.Если у вас много реплик и много недолговечных соединений (например, API без сохранения состояния, который получает много запросов), возможно, с входным балансировщиком нагрузки могут быть связаны некоторые издержки.Таким образом, «это зависит»
Q3: одиночная копия приложения, которая потребляет большое количество процессоров и оперативной памяти по сравнению с несколькими репликами приложения, каждая из которых потребляет незначительное количество оперативной памяти и процессора.
A3: Зависит, но это не вопрос Докера.Некоторые приложения (без сохранения состояния, не зависящие от внешних служб «единого доступа», забитые большим количеством запросов, будут хорошо работать при параллельной работе (горизонтальное масштабирование). Некоторые будут вести себя хуже и нуждаются в вертикальном масштабировании (несколько экземпляров, многоmem и cpu). Имейте в виду, что вертикальное масштабирование преодолевает определенную точку ...
Надеюсь, это поможет ...