Introducción a Dubbo

Dubbo es el marco de servicios distribuidos de código abierto de Alibaba. Está construido en capas para desacoplar todas las capas.

Cuando Dubbo llama a un servicio remoto, tiene una interfaz local, al igual que llamar a un método local. La capa inferior implementa el paso de parámetros y la devolución del resultado de la operación del servicio remoto.

Características de Dubo:

(1) Utiliza principalmente un marco de red eficiente y un marco de serialización para hacer que las llamadas entre servicios distribuidos sean más eficientes.

(2) Utilice el centro de registro para administrar múltiples direcciones de interfaz de servicio. Cuando desee llamar a un servicio, solo necesita preguntar en el centro de registro. A diferencia del uso de WebService, cada servicio debe registrar el método de llamada de la interfaz.

(3) El centro de monitoreo puede monitorear el estado de ejecución entre el proveedor de servicios y la persona que llama, y ​​también puede controlar la prioridad, autoridad, peso, en línea y fuera de línea del servicio, haciendo que todo el enorme servicio distribuido El mantenimiento y la gestión del sistema son más convenientes.

(4) Alta disponibilidad. Si el servicio se bloquea, el registro eliminará el nodo de la lista de servicios y el cliente solicitará otro nodo de servicio disponible como el registro y lo llamará nuevamente. Al mismo tiempo, el centro de registro también puede lograr una alta disponibilidad (ZooKeeper).

(5) Equilibrio de carga, es decir, utilizar un algoritmo de equilibrio de carga suave para lograr el equilibrio de carga de solicitudes de múltiples nodos que prestan el mismo servicio.

Dubbo requiere cuatro componentes básicos: registro, monitor, proveedor y consumidor.

1. Archivo de configuración del centro de monitoreo-archivo dubbo.properties

(1) Contenedor, el centro de monitoreo se ejecuta en entornos de embarcadero y resorte, depende del centro de registro y del sistema de registro. es log4j.

dubbo.container = log4j, spring, registro, jetty

(2) El nombre del servicio de monitoreo. El sistema de seguimiento también sirve a todo el sistema de servicio Dubbo.

dubbo . application . name = simple-monitor

(3) El propietario de un servicio que es función del servicio Dubbbo puede designar a la persona responsable del servicio.

dubbo . application . propietario = co selding

(4) La dirección del centro de registro. Una vez completada la configuración, el centro de monitoreo puede obtener la lista de servicios actualmente disponibles y su estado a través del centro de registro, e informarle las operaciones del servicio en Dubbo en la página.

Dubbo.registry.address=Multicast://{ IP }:{ puerto }//Broadcast.

dubbo . registr . dirección = zookeeper://{ IP }:{ puerto }//zookeeper

dubbo dirección = redis://{ IP }:{ puerto }//redis

dubbo . registr . dirección = dubbo://{ IP }:{ puerto }//dubbo

(5)Número de puerto del protocolo Dubbo

dubbo.protocol.port = 7070

(6) Número de puerto del proyecto Jetty

dubbo.jetty.port = 8082

(7) Directorio de trabajo, Se utiliza para almacenar datos del centro de monitoreo.

dubbo .jetty directorio = $ { usuario inicio }/monitor

(8) Directorio de almacenamiento de informes del centro de monitoreo

dubbo . { dubbo . jetty . directorio }/charts

(9) Directorio de datos del centro de monitoreo

dubbo stats .

(10) Ruta del archivo de registro del centro de monitoreo

dubbo . log4j . >

dubbo.log4j.level=WARN

2.Dubbo proporciona equilibrio de carga.

(1) Aleatorio, la probabilidad aleatoria se configura según el peso, cuanto mayor sea el volumen de llamadas, más uniforme será la distribución, el modo predeterminado.

(2)RounRobin, sondeo, establece la proporción de sondeo según el peso. Si tiene una máquina lenta, es fácil solicitar más bloqueo en esa máquina.

(3) LeastActive, el número mínimo de llamadas de activación, no admite ponderación y solo se puede asignar en función del número de activaciones reconocidas automáticamente y no se puede asignar de manera flexible.

(4) Hash consistente, hash consistente. Las solicitudes de los mismos parámetros se envían al proveedor de servicios, que puede utilizarse si existen requisitos de publicación en escala de grises similares.

3. Filtro Dubbo

El proceso de inicialización de Dubbo está en META-INF/dubbo/internal/, META-INF/dubbo/ y META-INF/services/ bajo la ruta de clase The Tres rutas cargan el archivo com.alibaba.dubbo.rpc.Filter. Contenido del archivo:

Nombre = FullClassName, estas clases deben implementar la interfaz de filtro.

Categoría de filtro personalizado:

El archivo de configuración se encuentra en el filtro de configuración consumer.xml:

Proceso de carga de filtros de Dubbo:

Primero, cargue los pares clave-valor en el archivo com.alibaba.Dubbo.rpc.Filter en tres rutas, donde clave es el nombre del filtro y valor es el nombre completo de la clase de filtro (la clase debe implementar la interfaz de filtro Dubbo ).

La anotación @Active en la clase personalizada es una propiedad básica global establecida por el filtro.

Cuando Spring carga el archivo consumer.xml, pasa

@activationnote-autoactivation. El atributo de grupo indica que solo se cargará el rol correspondiente cuando coincida, y el valor indica la condición del filtro. Si no se escribe, significa que se cargarán todas las condiciones. Si se escribe, solo se cargará si la URL de Dubbo contiene el nombre del parámetro y el valor del parámetro no está vacío. Este parámetro se enviará al proveedor como un par K-V de parámetro del protocolo dubbo.

4.Configuración del proveedor de Dubbo

5.Configuración del consumidor de Dubbo

1.

Dubbo es el marco distribuido RPC de alto rendimiento y código abierto de Alibaba basado en Java.

2. ¿Por qué utilizar Dubbo?

Muchas empresas lo están utilizando. Después de muchas pruebas en línea, Netty y Zookeeper se utilizan internamente para garantizar una disponibilidad de alto rendimiento.

Con Dubbo, los negocios principales se pueden extraer como servicios independientes, formando gradualmente un centro de servicios estable, que puede mejorar la expansión flexible de la reutilización comercial y permitir que las aplicaciones front-end respondan rápidamente a las necesidades del mercado de cada uno. La arquitectura distribuida puede transportar tráfico simultáneo a mayor escala.

Diagrama de gobernanza de servicios de Dubbo:

3. La diferencia entre Dubbo y Chunyun

Los dos no están relacionados, pero tienen los siguientes puntos:

(1) Los métodos de comunicación son diferentes. Dubbo usa comunicación RPC y Spring Cloud usa HTTP Restful.

(2) Diferentes componentes

4. Protocolos soportados por Dubbo

dubbo://? (Recomendado); RMI: //; hessian: //;. Wei Dian. dubbo " versión = " 1.0 " id = " mi demostración " URL = " dubbo : 0 . "></dubbo:referencia>

19, Dubbo multiprotocolo

Dubbo le permite configurar múltiples protocolos y admitir diferentes protocolos en diferentes servidores. O admitir múltiples protocolos en el mismo servicio.

20. ¿Qué hacer cuando un servicio tiene múltiples implementaciones?

Cuando una interfaz tiene múltiples entidades, se puede pasar el atributo de grupo a ellas y a ambos proveedores de servicios. y los consumidores pueden especificar el mismo grupo

21, compatible con versiones antiguas

Uso excesivo de números de versión, múltiples versiones diferentes de servicios Registro en el centro de registro y servicios con diferentes. los números de versión no hacen referencia entre sí.

22. ¿Puede Dubbo almacenar en caché?

Dubbo proporciona almacenamiento en caché declarativo para acelerar el acceso a datos populares, reduciendo así la cantidad de usuarios.

23. ¿Están bloqueadas las llamadas entre servicios de Dubbo?

De forma predeterminada, Dubbo admite llamadas asincrónicas basadas en la implementación sin bloqueo de llamadas paralelas. en paralelo sin iniciar varios subprocesos. La sobrecarga es menor que la de varios subprocesos. Las llamadas asincrónicas devolverán un objeto futuro

24.Dubbo no lo admite. Paquetes en los que DuBo debe confiar

DuBo debe confiar en JDK, otros son prescindibles.

26. Problemas al usar Dubbo

Dubbo está diseñado para satisfacer solicitudes rpc de alta concurrencia y pequeños volúmenes de datos, pero su rendimiento no es muy bueno con grandes volúmenes de datos.

Se recomienda utilizar rmi o /artifact/com.Alibaba.boot/dubbo-spring-boot-project->;

<Dependencies>

<groupId>com.Alibaba boot </groupId>. ;

& ltartifactId>dubbo-spring-boot-starter</artifact id>

<version>0.1.0& lt;/version>

& lt/dependency>

& lt! -/artifact/com.101 tec/ZK client->

<Dependencies>

& ltgroupId>com.101 tec</groupId> lt/id de artefacto & gt;

& ltversion>0.10 & lt;/version & gt;

& lt /dependencia & gt;

(2) Configurar dubbo

## Configuración del proveedor de servicios Dubbo

aplicación dubbo = proveedor

registro de primavera = dubbo. 127 0 . 0 . 1:2181

primavera .protocolo de dubbo = dubbo . dubbo .scan = org . spring boot . dubbo

## Configuración del consumidor del servicio Dubbo

nombre de la aplicación dubbo . dubbo .dirección = zookeeper://127 .