Enterprise Distributed Application Service (EDAS) admite Apache Dubbo para crear aplicaciones de microservicios. Esta guía aborda el sistema de extensiones de la Interfaz de Proveedor de Servicios (SPI) de Dubbo, los componentes internos del framework y sus principios de diseño.
Funcionamiento del sistema de extensiones SPI
Dubbo utiliza un mecanismo SPI ligero para mantener su núcleo modular. Cada componente principal (protocolos, balanceadores de carga, routers, registros) se define como un punto de extensión conectable. Esto le permite:
Reemplazar implementaciones integradas al modificar una sola propiedad de configuración, sin alterar el código del framework.
Agregar implementaciones personalizadas mediante la implementación de una interfaz de Java y su registro a través del archivo SPI.
Extender el comportamiento de forma transparente: Dubbo trata por igual las extensiones de terceros y las implementaciones integradas.
Para comprender la arquitectura subyacente, consulte los temas sobre diseño del framework y carga de SPI que se presentan a continuación.
Implementaciones de extensiones SPI
Dubbo define más de 20 puntos de extensión, organizados aquí por función. Cada punto de extensión es una interfaz de Java que admite implementaciones personalizadas.
RPC y gestión de tráfico
|
Extension point |
What it controls |
|
Protocol |
Protocolo de red para llamadas remotas |
|
Filter |
Cadena de filtros de solicitud y respuesta para aspectos transversales como registro o autenticación |
|
Cluster |
Estrategia de tolerancia a fallos cuando falla una llamada (por ejemplo, failover, failfast, forking) |
|
Router |
Reglas de enrutamiento que determinan qué proveedores reciben el tráfico |
|
LoadBalance |
Estrategia de distribución de solicitudes entre varios proveedores |
|
Merger |
Lógica de fusión de resultados para invocaciones bifurcadas |
Descubrimiento de servicios y configuración
|
Extension point |
What it controls |
|
Registry |
Integración con el registro de servicios |
|
Monitor |
Recopilación de métricas y reporte de datos de monitoreo |
Transporte y serialización
|
Extension point |
What it controls |
|
Transporter |
Capa de transporte de red |
|
Exchanger |
Patrón de intercambio solicitud-respuesta sobre la capa de transporte |
|
Networker |
Gestión de topología de red para escenarios con múltiples registros |
|
Serialization |
Formato de serialización de datos |
Ciclo de vida y proxy
|
Extension point |
What it controls |
|
InvokerListener |
Callback que se activa en eventos de invocación de servicio |
|
ExporterListener |
Callback que se activa en eventos de exportación de servicio |
|
ExtensionFactory |
Fábrica para crear y gestionar instancias de extensión |
|
ProxyFactory |
Fábrica para crear proxies de servicio |
|
Compiler |
Compilación dinámica de código fuente Java |
|
Dispatcher |
Estrategia de despacho de hilos para mensajes entrantes |
|
ThreadPool |
Estrategia de pool de hilos para la ejecución de servicios |
Diagnóstico y utilidades
|
Extension point |
What it controls |
|
TelnetHandler |
Controlador para comandos de gestión en tiempo de ejecución basados en telnet |
|
StatusChecker |
Lógica de comprobación de salud para el reporte de estado del servicio |
|
PageHandler |
Renderizado de páginas de estado para el servidor HTTP integrado |
|
Container |
Gestión del ciclo de vida del contenedor de servicios |
|
Cache |
Estrategia de caché de resultados para invocaciones repetidas |
|
Validation |
Validación de parámetros antes de la invocación |
|
LoggerAdapter |
Adaptador para integrar distintos frameworks de registro |
Componentes internos del framework
Estos temas explican cómo está construido Dubbo y cómo funciona internamente el mecanismo SPI.
|
Topic |
What it covers |
|
Source code build |
Compilar el código fuente de Dubbo desde el repositorio |
|
Framework design |
Arquitectura general, diseño por capas y dependencias de módulos |
|
SPI loading |
Cómo Dubbo descubre, carga e instancia las extensiones SPI |
|
Implementation details |
Implementación interna de los componentes principales |
|
Configuration center |
Gestión centralizada de configuración para servicios distribuidos |
|
Public agreement |
Convenciones y contratos de protocolo público compartidos entre los componentes de Dubbo |
Principios de diseño
El framework Dubbo sigue un conjunto de principios de diseño documentados en estos temas. Úselos como referencia cuando contribuya al framework o desarrolle extensiones personalizadas.
|
Topic |
What it covers |
|
Attention to detail |
Importancia de los casos extremos y las decisiones de diseño sutiles en el código del framework |
|
Foundational design patterns |
Patrones de diseño fundamentales y convenciones utilizadas en todo el código base |
|
Extensibility and incremental extension |
Diseño de extensiones compatibles con versiones anteriores y componibles |
|
Configuration design |
Directrices para diseñar parámetros de configuración y valores predeterminados |
|
Robustness |
Manejo de errores, patrones de resiliencia y programación defensiva en el framework |
|
Fool-proof design |
Prevención de uso indebido mediante API claras, valores predeterminados adecuados y validación de entradas |
|
Extension point refactoring |
Cuándo y cómo refactorizar interfaces de puntos de extensión |
Estándares de calidad de código
|
Topic |
What it covers |
|
Versioning |
Convenciones de numeración de versiones y garantías de compatibilidad |
|
Checklist |
Lista de verificación previa a la versión para cambios en el framework |
|
Code smells |
Antipatrones comunes que deben evitarse en el código del framework Dubbo |
|
Coding conventions |
Estándares de estilo de código, nomenclatura y formato |
|
Compatibility testing |
Estrategia de pruebas para compatibilidad hacia atrás y hacia adelante |