Неспособность увидеть, как шаблон посла улучшает модульность / простоту контейнерной архитектуры в Docker
Я не могу понять, как реализация шаблона посла поможет нам упростить / упростить структуру нашей контейнерной архитектуры.
Допустим, у меня есть контейнер базы данныхdb
на хосте A и используется программойdb-client
который находится на хосте B, которые связаны через контейнеры пословdb-ambassador
а такжеdb-foreign-ambassador
по сети:
[host A (db) --> (db-ambassador)] <- ... -> [host B (db-forgn-ambsdr) --> (db-client)]
Соединения между контейнерами в одной машине, например,db
вdb-ambassador
, а такжеdb-foreign-ambassador
вdb-client
делаются через докера--link
параметр в то время какdb-ambassador
а такжеdb-foreign-ambassador
разговаривает по сети.
Но ,--link
это просто модный способ вставки IP-адресов, портов и другой информации из одного контейнера в другой. При сбое контейнера другой связанный с ним контейнер не получает уведомления и не узнает новый IP-адрес аварийного контейнера при его перезапуске. Короче говоря, если контейнер, связанный с другим, перестал работать, ссылка также не работает.
Чтобы рассмотреть мой пример, скажем, чтоdb
аварийно завершает работу и перезапускается, таким образом, назначается другому IP.db-ambassador
пришлось бы тоже перезапустить, чтобы обновить связь между ними ... За исключением того, что вы не должны. Еслиdb-ambassador
перезапущен, IP-адрес тоже изменился бы, иforeign-db-ambassador
не будет знать, где его достичь при новом IP-адресе.
квотированиестатья в документах Докера о посольском образце,
Когда вам нужно перенаправить своего потребителя, чтобы он общался с другим сервером Redis, вы можете просто перезапустить контейнер redis-ambassador, к которому подключен потребитель.
Этот шаблон также позволяет вам прозрачно переместить сервер Redis на другой хост докера от потребителя.
кажется, что это именно та проблема, которую она пытается решить. Который, насколько я понимаю, это совершенно не так. Нет, если вы считаете--link
полезно только до тех пор, пока связанный контейнер не падает. Возможность запустить аварийный узел на его предыдущем IP-адресе была бы хорошим обходным путемесли поддерживаетсяПо крайней мере, для архитектуры малого / среднего размера.
Я что-то упускаю из виду?