Reimpresión: la diferencia entre SpringCloud y Dubbo

Este artículo se reproduce en: Sólo para que conste


1. La diferencia entre SpringCloud y Dubbo

Ambos son ahora marcos de microservicios convencionales , pero existen muchas diferencias:

  • El posicionamiento inicial es diferente : SpringCloud se posiciona como una solución integral bajo la arquitectura de microservicios; Dubbo es un producto de la era SOA y se centra principalmente en la invocación y gobernanza de servicios.
  • El entorno ecológico es diferente : SpringCloud se basa en la plataforma Spring y tiene un sistema ecológico más completo; mientras que Dubbo solo hacía llamadas remotas RPC al principio, la ecología es relativamente escasa y ahora se ha enriquecido gradualmente.
  • Método de llamada : SpringCloud usa el protocolo Http para llamadas remotas y la interfaz generalmente es de estilo Rest, que es relativamente flexible; Dubbo usa el protocolo Dubbo y la interfaz es generalmente una interfaz de servicio Java con un formato fijo. Sin embargo, al llamar, se utiliza el método NIO de Netty y el rendimiento es mejor.
  • Hay muchas diferencias en los componentes . Por ejemplo, el centro de registro de SpringCloud generalmente usa Eureka, mientras que Dubbo usa Zookeeper.

SpringCloud tiene una ecología rica y funciones completas, que se parece más a una máquina de marca, mientras que Dubbo es relativamente flexible y altamente personalizable, más como una máquina de ensamblaje. Informacion relevante:

SpringCloud : marco de microservicios de código abierto de Spring . SpirngCloud se posiciona como una solución integral bajo la arquitectura de microservicios.

Dubbo : Marco RPC de código abierto de Alibaba. Dubbo es un producto de la era SOA. Su enfoque se centra principalmente en la invocación de servicios, distribución de tráfico, monitoreo de tráfico y interrupción de circuitos.

PrimaveraNubeAlibaba

Comparación ecológica entre ambos:

Función dubbo Nube de primavera
Registro de servicios cuidador del zoológico Eureka (corriente principal), cónsul, cuidador del zoológico
Método de llamada de servicio RPC se basa en el protocolo Dubbo API REST basada en el protocolo Http
monitoreo de servicio Monitor Dubbo Administrador de arranque de primavera
fusible imperfecto Nube de primavera Netflix Hystrix
puerta de enlace de servicio ninguno Spring Cloud Netflix Zuul, puerta de enlace
configuración distribuida ninguno Configuración de la nube de primavera
seguimiento del servicio ninguno Detective de la nube de primavera+Zipkin (general)
flujo de datos ninguno Corriente de nube de primavera
tarea por lotes ninguno Tarea de nube de primavera
autobús de información ninguno Autobús de la nube de primavera

Las funciones de Spring Cloud son obviamente más poderosas que Dubbo y su cobertura es más amplia. Como proyecto insignia de Spring, también se puede integrar perfectamente con otros proyectos de Spring como Spring Framework, Spring Boot, Spring Data y Spring Batch. Estos son para microservicios. Las palabras son cruciales.

La arquitectura de microservicio construida con Dubbo es como ensamblar una computadora . Hay un alto grado de libertad en la selección de cada enlace, pero es probable que el resultado final no se ilumine debido a la mala calidad de la memoria, lo que siempre hace que las personas se sientan incómodas, pero si El usuario es un maestro, entonces estos no son problemas.

Y Spring Cloud es como una máquina de marca . Bajo la integración de Spring Source, se han realizado muchas pruebas de compatibilidad para garantizar que la máquina tenga una mayor estabilidad y el principio tiene suficiente comprensión.

2. La diferencia entre llamadas remotas dubbo y Feign

Feign es un método de llamada remota en Spring Cloud, basado en el protocolo Http maduro, y todas las interfaces adoptan el estilo Rest. Por lo tanto, la especificación de la interfaz está más unificada y, siempre que se ajuste a la especificación, el microservicio que implementa la interfaz se puede desarrollar en cualquier lenguaje o tecnología. Sin embargo, limitado por las características del propio protocolo http, los formatos de solicitud y respuesta están inflados y su eficiencia de comunicación será relativamente pobre.

El marco Dubbo adopta el protocolo de comunicación personalizado Dubbo de forma predeterminada, y la capa inferior es la comunicación TCP como el protocolo Http. Sin embargo, el protocolo Dubbo personaliza los métodos de serialización y deserialización de datos de Java y los formatos de transmisión de datos, por lo que Dubbo será mejor que el protocolo Http en términos de rendimiento de transmisión de datos.

Sin embargo, no es necesario considerar demasiado esta diferencia de rendimiento a menos que alcance un nivel de concurrencia extremadamente alto.

Informacion relevante:

Dubbo utiliza el protocolo Dubbo personalizado para realizar comunicación remota, que es un esquema de llamada RPC típico, mientras que Feign utilizado en SpringCloud se basa en el método de llamada estilo Rest.

1) estilo de descanso

REST es un estilo arquitectónico que se refiere a un conjunto de limitaciones y principios arquitectónicos. Una aplicación o diseño que satisface estas restricciones y principios es RESTful.

El estilo Rest se puede implementar completamente a través del protocolo HTTP y utiliza el protocolo HTTP para manejar la comunicación de datos. Las operaciones de la arquitectura REST sobre recursos incluyen adquirir, crear, modificar y eliminar recursos, correspondientes exactamente a los métodos GET, POST, PUT y DELETE proporcionados por el protocolo HTTP.

Por lo tanto, el proceso de solicitud y deseo solo necesita seguir el protocolo http, que es más flexible.

Feign en Spring Cloud es un método de llamada de estilo Rest.

2)RPC

La llamada a procedimiento remoto, llamada a procedimiento remoto, consiste en llamar a un método remoto como un método local.
RPC generalmente necesita determinar lo siguiente:

  • Método de transmisión de datos: la mayoría de los marcos RPC eligen TCP como protocolo de transmisión, que tiene un mejor rendimiento.
  • Contenido de la transmisión de datos: el solicitante debe informar el nombre, los parámetros y otra información de la función que se llamará.
  • Método de serialización: cuando el cliente y el servidor interactúan, los parámetros o resultados se convierten en flujos de bytes para su transmisión en la red, luego se debe realizar la conversión de datos en flujos de bytes o la conversión de flujos de bytes a un formato fijo que se pueda leer. Serialización y deserialización

Debido a la necesidad de serialización y deserialización, existen requisitos estrictos sobre el formato de transmisión de datos, que no es tan flexible como Http.

El protocolo Dubbo es un representante típico de RPC.

Veamos la diferencia entre el protocolo Dubbo y la llamada Feign:

dubbo Fingir (llamada HTTP)
Protocolo de transferencia tcp tcp
Lenguaje de desarrollo Java ilimitado
actuación bien generalmente
flexibilidad generalmente bien

3. La diferencia entre los centros de registro de Eureka y Zookeeper

Tanto SpringCloud como Dubbo admiten múltiples registros, pero actualmente SpringCloud usa más Eureka, mientras que Dubbo usa principalmente Zookeeper. Hay grandes diferencias entre los dos:

  • Desde la perspectiva del diseño del clúster: todos los nodos en el clúster Eureka son iguales y no existe una relación maestro-esclavo, por lo que pueden ocurrir inconsistencias en los datos; ZK debe incluir una relación maestro-esclavo para cumplir con la coherencia, un maestro y muchos esclavos . Cuando el clúster no tiene propietario, no proporciona servicios externos
  • En términos de principios CAP: Eureka satisface el principio AP y sacrifica la coherencia de los datos del clúster para garantizar la disponibilidad de todo el servicio; y Zookeeper satisface el principio CP y sacrifica la disponibilidad de todo el servicio para garantizar la coherencia de los datos. de cada nodo.
  • En términos de métodos de extracción de servicios: Eureka adopta una estrategia activa de extracción de servicios. Los consumidores van a Eureka para extraer servicios con una frecuencia fija (30 segundos por defecto) y almacenarlos en caché localmente; los consumidores en ZK primero inician ZK para suscribirse al servicio que necesitan. información y se almacena en caché localmente. Luego supervise los cambios en la lista de servicios y ZK enviará los cambios de servicio a los consumidores en el futuro.

4. ¿Cuáles son los componentes comunes de Spring Cloud?

Hay muchos subproyectos de Spring Cloud, y los más comunes son los componentes de código abierto de Netflix:

  • La herramienta de gestión de configuración centralizada Spring Cloud Config
    , gestión de configuración externa unificada en sistemas distribuidos, utiliza Git para almacenar la configuración de forma predeterminada y puede admitir operaciones de actualización, cifrado y descifrado de la configuración del cliente.


  • Integración de componentes de código abierto Spring Cloud Netflix Netflix OSS, incluidos Eureka, Hystrix, Ribbon, Feign, Zuul y otros componentes principales.

    • Eureka: componentes de gobernanza de servicios, incluido el registro en el lado del servidor y el mecanismo de descubrimiento de servicios en el lado del cliente;
    • Cinta: componente de invocación del servicio de equilibrio de carga, con múltiples estrategias de invocación de equilibrio de carga;
    • Hystrix: componente de servicio tolerante a fallas, que implementa el modo de disyuntor y proporciona tolerancia a fallas para errores y retrasos en los servicios dependientes;
    • Feign: un componente de llamada de servicio declarativo basado en Ribbon y Hystrix;
    • Zuul: componente de puerta de enlace API, que proporciona funciones de enrutamiento y filtrado para solicitudes.
  • Spring Cloud Bus
    es un bus de mensajes que se utiliza para propagar cambios de estado del clúster, utilizando un agente de mensajes liviano para vincular nodos en un sistema distribuido, que se puede usar para actualizar dinámicamente la configuración del servicio en el clúster.

  • Spring Cloud Consul
    se basa en el componente de gobernanza de servicios de Hashicorp Consul.

  • El kit de herramientas de seguridad Spring Cloud Security
    admite el cliente OAuth2 de equilibrio de carga y la autenticación de inicio de sesión en el proxy Zuul.

  • Spring Cloud Sleuth
    Seguimiento de enlaces de solicitud distribuido para aplicaciones Spring Cloud, que admite el seguimiento mediante Zipkin, HTrace y basado en registros (por ejemplo, ELK).


  • El marco de microservicio liviano impulsado por eventos de Spring Cloud Stream puede usar un modelo declarativo simple para enviar y recibir mensajes, implementado principalmente como Apache Kafka y RabbitMQ.

  • Spring Cloud Task
    es un marco de microservicio para crear rápidamente tareas de procesamiento de datos limitadas y de corta duración para agregar características funcionales y no funcionales a las aplicaciones.

  • Spring Cloud Zookeeper
    se basa en el componente de gobernanza de servicios de Apache Zookeeper.

  • El
    componente de puerta de enlace API Spring Cloud Gateway proporciona funciones de enrutamiento y filtrado para solicitudes.

  • Spring Cloud OpenFeign
    se basa en los componentes de llamadas de servicio declarativas de Ribbon y Hystrix, que pueden crear dinámicamente implementaciones de interfaz basadas en anotaciones Spring MVC para llamadas de servicio y ha reemplazado a Feign como ciudadano de primera clase en Spring Cloud 2.0.

5. La relación entre llamadas de microservicios es compleja, ¿cómo monitorear y solucionar problemas?

Existe un conjunto de herramientas para el monitoreo de microservicios en la empresa, llamado APM. Por ejemplo: SpringCloudSeluth + Zipkin, Pinpoint, Skywalking, que pueden realizar monitoreo del rendimiento, seguimiento de enlaces (preciso para un determinado código, cierto sql), estado de operación de la CPU y operaciones de enlace que requieren mucho tiempo.

Por supuesto, también puede utilizar un sistema de gestión de registros distribuidos. Recopile los registros de operación del proyecto, forme informes estadísticos y colóquelos en elasticsearch para facilitar la búsqueda y visualización. Por ejemplo: pila de tecnología ELK, GrayLog

6. ¿Cuál es la función de Hystix?

Hystix es una biblioteca de código abierto tolerante a retrasos y fallas de Netflix, que se utiliza para aislar el acceso a servicios remotos y bibliotecas de terceros para evitar fallas en cascada. Los métodos más utilizados son el aislamiento de subprocesos y la fusión de servicios.

Supongo que te gusta

Origin blog.csdn.net/qq_36256590/article/details/132166451
Recomendado
Clasificación