Desafíos, ideas de implementación y soluciones de escala de grises de enlace completo

Desafíos de la publicación en escala de grises bajo la arquitectura de microservicios

En la arquitectura de aplicación monolítica tradicional, la publicación en escala de grises es relativamente simple. Solo es necesario desviar el tráfico en la entrada de tráfico del servicio, lo que se puede realizar utilizando el Servicio K8s o varios tipos de puertas de enlace. Sin embargo, la arquitectura de microservicios presenta nuevas complejidades, con dependencias entrelazadas entre servicios. A veces, el lanzamiento de una determinada función puede depender de varios servicios, lo que requiere que el tráfico en escala de grises se enrute con precisión a la versión en escala de grises del servicio en toda la cadena de llamadas. La forma tradicional de establecer el desvío para una entrada de tráfico de servicio único no puede cumplir con este requisito. Para resolver el problema de la versión en escala de grises en la arquitectura de microservicio, la versión en escala de grises de enlace completo introduce el concepto de Lane. Los carriles amplían la perspectiva de la escala de grises desde un solo servicio a toda la cadena de solicitudes, lo que garantiza que el tráfico pueda fluir con precisión entre un conjunto de reglas de servicio específicas, al igual que en un carril preestablecido. La solución de lanzamiento en escala de grises de enlace completo está especialmente diseñada para la arquitectura de microservicios, con el objetivo de enfrentar los desafíos del lanzamiento en escala de grises bajo la arquitectura de microservicios.

La idea de realización de la publicación en escala de grises de enlace completo

El núcleo de la publicación en escala de grises de enlace completo radica en la realización del concepto de carriles de tráfico. Como se mencionó anteriormente, los carriles definen un rango de actividad para el tráfico que cumple con las reglas especificadas. Tiene las siguientes dos ideas de implementación:

La primera idea: aislamiento completo del entorno.

La principal dificultad en la implementación de carriles es cómo enrutar el tráfico a la versión de servicio correcta durante las llamadas entre servicios, pero existe una idea de implementación simple para evitar este problema: copie un entorno completo que incluya todos los microservicios y reemplace los servicios que requieren escala de grises con versiones en escala de grises. Luego, solo necesita dividir el tráfico regularmente a través de la puerta de enlace en la entrada de tráfico de los dos entornos.Debido al aislamiento de la red entre los dos entornos, el entorno en escala de grises se convierte naturalmente en un carril de tráfico en escala de grises.

Sin embargo, para proyectos de microservicios con una gran cantidad de servicios, este enfoque desperdiciará recursos, ya que la creación de servicios que no sean de escala de grises en un entorno de escala de grises consumirá recursos adicionales. Si desea escalar en gris varias versiones al mismo tiempo, debe crear varios conjuntos de entornos completos, lo que aumenta aún más el desperdicio de recursos.

La segunda idea: el enrutamiento del tráfico de servicios

Si a cada servicio se le puede dar la capacidad de enrutar el tráfico, la configuración de los carriles de natación puede compartir los servicios normales para hacer un uso completo de los recursos, y también se pueden realizar versiones en escala de grises de enlace completo de múltiples versiones en el mismo entorno al mismo tiempo. Específicamente, se requieren dos capacidades: enrutamiento de tráfico de enlace completo y transmisión transparente de datos de enlace completo.

Enrutamiento de tráfico de enlace completo

El enrutamiento de tráfico significa que cuando el propio servicio envía tráfico, se puede enrutar al destino correcto de acuerdo con las reglas especificadas. Por ejemplo, el tráfico con una etiqueta de escala de grises debe enviarse primero a la versión de escala de grises del servicio. El enrutamiento de tráfico de enlace completo requiere que cada servicio tenga esta capacidad.

Actualmente hay dos implementaciones principales de enrutamiento de tráfico de enlace completo:

  1. Basado en Istio: uso de Istio, un componente de Service Mesh de código abierto, al implementar el proxy transparente de Envoy en cada contenedor de servicios, interceptar la comunicación de red entre servicios y reenviar de acuerdo con reglas específicas, logrando así el enrutamiento de tráfico de enlace completo sin modificar el código existente.
  2. Basado en el componente de descubrimiento del servicio: a través del registro del servicio que admite la configuración de metadatos para el servicio, como Nacos, se pueden marcar las características de la instancia del servicio, como la versión en escala de grises. Cada servicio puede obtener la información de la versión de otras instancias de servicio a través del registro e implementar el enrutamiento del tráfico modificando la lógica del código o el Agente Java.

Transmisión transparente de datos de enlace completo

Para realizar la liberación de escala de grises de enlace completo, las reglas de enrutamiento de tráfico se basan en marcas de teñido de tráfico, por lo que las marcas de teñido deben pasarse a todo el enlace de solicitud, es decir, se realiza la capacidad de transmisión transparente de datos de enlace completo. La transmisión transparente de datos simple se puede realizar en función del encabezado HTTP nativo, los parámetros de consulta y otros recursos, pero en escenarios de microservicios complejos, se debe usar el mecanismo de rastreo de equipaje. El rastreo de equipaje es una capacidad proporcionada por las herramientas de seguimiento de enlaces distribuidos, que pueden transportar pares clave-valor definidos por el usuario. Las herramientas de seguimiento convencionales, como Skywalking y OpenTelemetry, admiten esta función. El registro y la solución de problemas se pueden realizar fácilmente utilizando el marco de seguimiento de enlaces distribuidos, que es especialmente adecuado para los requisitos de los escenarios de versiones grises.

Análisis de puntos débiles del estado de publicación empresarial

En la actualidad, las empresas enfrentan los siguientes dilemas al seleccionar e implementar estrategias de lanzamiento:

1. Después de la transformación del modelo de implementación tradicional al modelo nativo de la nube, los talentos que carecen de capacidades relevantes llevan a cabo la transformación de la arquitectura técnica, lo que dificulta que las empresas comiencen con la estrategia de lanzamiento.

2. Se ha encontrado una estrategia de lanzamiento adecuada para el estado actual del producto, pero carece del soporte de una plataforma o herramienta automatizada, y aún depende de la ejecución manual paso a paso, lo que puede generar omisiones en el proceso o errores de operación manual, lo que resulta en accidentes de producción.

3. Solo se han implementado capacidades de escala de grises a nivel de servicio, y lleva mucho tiempo publicar los servicios uno por uno, lo que da como resultado un proceso de lanzamiento lento y resultados de verificación deficientes.

En respuesta a los problemas anteriores, ZadigX proporciona soluciones de lanzamiento en escala de grises para ayudar a las empresas a lidiar con estos puntos débiles.

Esquema de implementación de la publicación en escala de grises de enlace completo

Existen principalmente soluciones convencionales como Istio y JavaAgent. Basado en la capacidad de enrutamiento de tráfico, ZadigX proporciona dos conjuntos de soluciones generales:

Alibaba Nube MSE + ZadigX

Alibaba Cloud MSE proporciona aplicaciones Java con la capacidad de implementar fácilmente una escala de grises de enlace completo. El motor de microservicios MSE es un producto de gobierno de servicios de nivel de producción empresarial no intrusivo basado en Java Agent. No necesita modificar ninguna línea de código comercial para tener capacidades de gobierno que no se limitan a la escala de grises de enlace completo, y es compatible con Spring Boot, Spring Cloud y Dubbo en los últimos cinco años.

En el proceso de uso de MSE para la publicación en escala de grises, ZadigX puede crear fácilmente un entorno en escala de grises y recursos K8S en escala de grises, combinados con las capacidades de orquestación del flujo de trabajo de publicación, establecer automáticamente las etiquetas de recursos requeridas por MSE para los recursos de K8S e integrar la API de MSE para reducir la carga de trabajo repetitiva.

Istio + Seguimiento distribuido + ZadigX

Istio puede implementar capacidades de enrutamiento de tráfico de enlace completo sin intrusión, y también puede establecer el enrutamiento de tráfico en función de condiciones como la proporción, el peso y el encabezado HTTP. Sin embargo, la transmisión transparente de datos de enlace completo requiere la implementación del propio servicio. Por esta razón, el servicio debe estar conectado a un marco de seguimiento de enlace distribuido que admita Baggage. Si no está conectado, implicará un cierto costo de transformación.

ZadigX puede crear automáticamente recursos Istio VirtualService y DistinationRule para implementar los carriles correspondientes de acuerdo con la tarea de escala de grises especificada y las reglas de marcado de escala de grises, combinado con capacidades de orquestación de flujo de trabajo de publicación y capacidades de administración y monitoreo ambiental, lo que permite a los desarrolladores realizar fácilmente la publicación en escala de grises de enlace completo.

Autor: ZadigX

¡Haga clic para probar los productos en la nube de forma gratuita ahora para comenzar el viaje práctico en la nube!

Enlace original

Este artículo es el contenido original de Alibaba Cloud y no se puede reproducir sin permiso.

Los 8 lenguajes de programación más demandados en 2023: PHP es fuerte, la demanda de C/C++ se está desacelerando Musk anunció que Twitter pasará a llamarse X y el logotipo se cambiará durante cinco años, se lanza oficialmente Cython 3.0 GPT-4 ¿se está volviendo cada vez más estúpido? La tasa de precisión se redujo del 97,6 % al 2,4 %. Se lanzaron oficialmente MySQL 8.1 y MySQL 8.0.34. El padre de C# y TypeScript anunció el último proyecto de código abierto: TypeChat Meta Enlargement move: lanzó un modelo de lenguaje grande de código abierto Llama 2, que es gratuito para uso comercial. El desarrollador principal de React, Dan Abramov, anunció su renuncia a Meta. ChatGPT para Android se lanzará la próxima semana. La preinscripción comienza ahora . ¿Necesitas? Tal vez este proyecto de código abierto GitHub de 5k estrellas pueda ayudar - MetaGPT
{{o.nombre}}
{{m.nombre}}

Supongo que te gusta

Origin my.oschina.net/yunqi/blog/10090753
Recomendado
Clasificación