No ver cómo el patrón de embajador mejora la modularidad / simplicidad de la arquitectura de contenedores en Docker
No veo cómo la implementación del patrón de embajador nos ayudaría a simplificar / modularizar el diseño de nuestra arquitectura de contenedor.
Digamos que tengo un contenedor de base de datosdb
en el host A y es utilizado por un programadb-client
que se encuentra en el host B, que están conectados a través de contenedores de embajadoresdb-ambassador
ydb-foreign-ambassador
sobre una red:
[host A (db) --> (db-ambassador)] <- ... -> [host B (db-forgn-ambsdr) --> (db-client)]
Conexiones entre contenedores en la misma máquina, p.db
adb-ambassador
ydb-foreign-ambassador
adb-client
se realizan a través de Docker--link
parámetro mientrasdb-ambassador
ydb-foreign-ambassador
habla por la red.
Pero ,--link
es solo una forma elegante de insertar direcciones IP, puertos y otra información de un contenedor a otro. Cuando falla un contenedor, el otro contenedor que está vinculado a él no recibe notificación, ni sabrá la nueva dirección IP del contenedor que falla cuando se reinicia. En resumen, si un contenedor que está vinculado a otro se apagó, el enlace también está muerto.
Para considerar mi ejemplo, digamos quedb
se bloqueó y se reinicia, por lo tanto, se asigna a una IP diferente.db-ambassador
tendría que reiniciarse también, para actualizar el enlace entre ellos ... Excepto que no debería. Sidb-ambassador
se reinicia, la IP también habría cambiado, yforeign-db-ambassador
no sabrá dónde encontrarlo en la nueva dirección IP.
Citandoun artículo en los documentos de Docker sobre el patrón de embajador,
Cuando necesite volver a conectar a su consumidor para hablar con un servidor Redis diferente, puede reiniciar el contenedor de redis-embajador al que está conectado el consumidor.
Este patrón también le permite mover de manera transparente el servidor Redis a un host acoplado diferente del consumidor.
Parece que este es exactamente el problema que está tratando de resolver. Lo cual, en lo que a mi entender se refiere, no fue totalmente así. No si consideras--link
solo es útil siempre que el contenedor vinculado no se bloquee. La opción de iniciar un nodo que falla en su IP anterior habría sido una buena soluciónsi es compatible, al menos para una arquitectura pequeña / mediana.
¿Me estoy perdiendo algo obvio?