Tutorial introductorio de Dubbo para principiantes

dubbo

La relación entre Dubbo y RPC

Dubbo  es un marco de servicios distribuidos de código abierto desarrollado por Alibaba. Proporciona capacidades de gobierno de servicio y comunicación RPC (llamada a procedimiento remoto) de alto rendimiento para aplicaciones , lo que permite que las aplicaciones construyan rápidamente servicios altamente confiables y escalables en un entorno distribuido. Las funciones principales de Dubbo incluyen registro y descubrimiento de servicios, equilibrio de carga, invocación de servicios y tolerancia a fallas, etc. Es adecuado para la comunicación en múltiples idiomas y múltiples entornos heterogéneos. Dubbo utiliza E/S de bloqueo y grupo de subprocesos para lograr una alta concurrencia y también admite la expansión de múltiples protocolos y formatos de serialización. Su ecosistema es cada vez más perfecto, y su comunidad de usuarios es activa.Es ampliamente utilizado en aplicaciones web, middleware empresarial, big data y otros campos.

El núcleo de Dubbo

El núcleo de Dubbo incluye:

  • Comunicación remota: Dubbo proporciona una variedad de protocolos de comunicación remota, como el protocolo Dubbo, el protocolo Http , el protocolo RMI, etc. Entre ellos, el protocolo Dubbo es un protocolo de comunicación RPC binario de alto rendimiento que viene con Dubbo. Tiene una baja sobrecarga de serialización y deserialización y es adecuado para comunicaciones de servicio de gran volumen y alta concurrencia.
  • Tolerancia a fallas de clúster: cuando los consumidores de Dubbo inician llamadas de servicio, Dubbo proporciona una variedad de estrategias de tolerancia a fallas de clúster, como Failover, Failfast, Failsafe, Failback, etc. La conmutación por error es la estrategia tolerante a fallas del clúster predeterminada de Dubbo, que cambiará automáticamente a otros nodos disponibles para realizar llamadas cuando el proveedor de servicios comete un error o se agota el tiempo de espera, lo que garantiza la confiabilidad de la llamada.
  • Detección automática: para facilitar la gestión de muchos proveedores de servicios, Dubbo proporciona un centro de registro como herramienta de gestión centralizada para el registro y detección de servicios. Dubbo admite múltiples registros, como ZooKeeper, Redis, Consul, Etcd, etc. A través del centro de registro, los consumidores de servicios pueden descubrir automáticamente los proveedores de servicios disponibles sin configurar manualmente las direcciones de los proveedores de servicios, lo que reduce en gran medida la complejidad de las llamadas de servicio.

La diferencia entre Dubbo y Spring Cloud

Dubbo es un marco RPC de alto rendimiento, que se utiliza principalmente para construir el gobierno de servicios y la comunicación de servicios bajo la arquitectura de microservicios. Puede ampliar fácilmente los servicios y mejorar el rendimiento y la escalabilidad del sistema.

Spring Cloud es un marco completo de microservicios, que proporciona un conjunto completo de soluciones de marcos de microservicios, incluido el registro y descubrimiento de servicios, el centro de configuración, el equilibrio de carga, el disyuntor, el enrutamiento, etc., que es más completo que Dubbo.

Comprensión profunda: Comparación del marco de microservicios: Spring Cloud vs Dubbo

nodo de Dubbo

  • Proveedor: Publique el servicio, registre el servicio en el registro y espere a que el consumidor llame.
  • Consumidor: suscribirse a los servicios del registro, comunicarse con los proveedores de servicios y consumir servicios.
  • Registro: registra información sobre los proveedores de servicios y la relación entre los proveedores de servicios y los consumidores de servicios para ayudar a los consumidores a descubrir instancias de servicios disponibles.
  • Supervisar: recopile indicadores de rendimiento de los nodos Dubbo, estadísticas de llamadas de servicio, etc., para que el personal de operación y mantenimiento pueda monitorear y administrar.
  • Contenedor: el contenedor en ejecución del servicio.

El marco de Dubbo

 El marco de Dubbo incluye:

  • Marco de aplicación única: adecuado para cuando el tráfico es pequeño
  • Marco de aplicación vertical: aplicable cuando el tráfico es grande
  • Arquitectura de servicios distribuidos: adecuada para cuando hay muchas arquitecturas de aplicaciones verticales
  • Arquitectura de computación de flujo: cuando el tráfico es extremadamente grande, se necesita un centro de despacho

Servicio Dubbo

Definición de interfaz Dubbo

Podemos escribir un método sayHello.

/** * xml方式服务提供者接口 */ public interface ProviderService { String SayHello(String word); }

A continuación, defina su clase de implementación.

/** * xml方式服务提供者实现类 */ public class ProviderServiceImpl implements ProviderService{ public String SayHello(String word) { return word; } }

Luego, importe las dependencias maven.

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.ouyangsihai</groupId> <artifactId>dubbo-provider</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <!-- https: //mvnrepository.com/artifact/com.alibaba/dubbo --> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.6.6</version> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.10</version> </dependency> <dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</artifactId> <version>0.5</version> </dependency> <dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> <version>4.1.32.Final</version> </dependency> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-framework</artifactId> <version>2.8.0</version> </dependency> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-recipes</artifactId> <version>2.8.0</version> </dependency> </dependencies> </project>

Publicar interfaz de Dubbo

Una vez escrita la interfaz, es necesario publicarla para poder acceder a ella.

package com.sihai.dubbo.provider; import com.alibaba.dubbo.config.ApplicationConfig; import com.alibaba.dubbo.config.ProtocolConfig; import com.alibaba.dubbo.config.RegistryConfig; import com.alibaba.dubbo.config.ServiceConfig; import com.alibaba.dubbo.container.Main; import com.sihai.dubbo.provider.service.ProviderService; import com.sihai.dubbo.provider.service.ProviderServiceImpl; import org.springframework.context.support.ClassPathXmlApplicationContext; import java.io.IOException; /** * xml方式启动 * */ public class App { public static void main( String[] args ) throws IOException { //加载xml配置文件启动 ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("META-INF/spring/provider.xml"); context.start(); System.in.read(); // 按任意键退出 } }

Inicie el servicio Dubbo

Lo último es iniciar el servicio Dubbo, si ve el siguiente registro, significa que el inicio fue exitoso.

Expansión del conocimiento:

 

Supongo que te gusta

Origin blog.csdn.net/m0_71808387/article/details/131573506
Recomendado
Clasificación