Para comenzar, necesitamos instalar y ejecutar Zookeeper utilizando Docker:
docker pull zookeeper
docker run --name zk-server -p 2181:2181 --restart always -d zookeeper:latest
Esto indica que Zookeeper se ha iniciado correctamente.
Conceptos básicos de Zoookeeper y Dubbo
ZooKeeper
ZooKeeper es un servicio de coordinación de aplicaciones distribuidas de código abierto. Proporciona servicios de consistencia para aplicaciones distribuidas, incluyendo: mantenimiento de configuración, servicios de nombres, sincronización distribuida y servicios de grupo.
Dubbo
Dubbo es un framework de servicios distribuidos de código abierto desarrollado por Alibaba. Su característica principal es su arquitectura por capas que permite desacoplar los componentes. Desde la perspectiva del modelo de servicios, Dubbo utiliza un modelo simple donde existen proveedores de servicios (Provider) y consumidores de servicios (Consumer).
Configuración del consumidor (cleinte)
Clase principal de inicio
@SpringBootApplication
public class ClienteApplication {
public static void main(String[] args) {
SpringApplication.run(ClienteApplication.class, args);
}
}
Controlador
@RestController
public class GestionController {
@Reference
private ServicioGestion servicioGestion;
@GetMapping("/saludar")
public String saludar() {
return servicioGestion.saludar();
}
}
Interfaz del servicio
public interface ServicioGestion {
String saludar();
}
Archivo application.properties
dubbo.application.name=cliente-gestion
dubbo.registry.address=zookeeper://192.168.0.106:2181
server.port=8081
Configuración del proveedor (servidor)
Clase principal de inicio
@SpringBootApplication
public class ProveedorApplication {
public static void main(String[] args) {
SpringApplication.run(ProveedorApplication.class, args);
}
}
Interfaz e implementación del servicio
public interface ServicioGestion {
String saludar();
}
@Service
public class ServicioGestionImpl implements ServicioGestion {
@Override
public String saludar() {
System.out.println("¡Solicitud recibida del cliente!");
return "¡Operación exitosa!";
}
}
Archivo application.properties
dubbo.application.name=proveedor-gestion
dubbo.registry.address=zookeeper://192.168.0.106:2181
dubbo.scan.base-packages=com.ejemplo
Prueba de la integración
Para verificar que todo funciona correctamente, acceda a través del navegador: