¿Qué son los marcos rpc rmi dubbo?
Capas de Dubbo
config (capa de configuración)
proxy (capa de proxy de servicio)
registry (capa de centro de registro)
p>
clúster (capa de enrutamiento)
monitor (capa de monitoreo)
protocolo (capa de llamadas remotas)
intercambio (intercambio de información capa)
p>
transport (capa de transporte de red)
serialize (capa de serialización de datos)
Interfaz de configuración externa
Con ServiceConfig y ReferenceConfig como centro, puede dirigir una nueva clase de configuración o puede generar una clase de configuración a través de la configuración de análisis de resorte
Javassist ProxyFactory
Jdk ProxyFactory
Proxy transparente de interfaz de servicio, genera Stub de cliente de servicio y esqueleto del lado del servidor
centrado en ServiceProxy, y la interfaz extendida es ProxyFactory
Select
Zookeeper
Redis
Multidifusión
Simple
Admite agrupación en clústeres basada en red y tiene una amplia gama de productos de código abierto. Se recomienda utilizar dubbo. -2.3.3 o superior (recomendado)
Depende de la estabilidad de Zookeeper
Admite agrupación en clústeres de escritura dual basada en cliente, alto rendimiento
Requiere tiempo del servidor sincronización para verificar los datos sucios vencidos de los latidos
Descentralización, no es necesario instalar un centro de registro
Al depender de la topología y el enrutamiento de la red, existen riesgos en las salas de computadoras
Dogfooding, el centro de registro en sí también es un servicio RPC estándar
Sin soporte de clúster, posible punto único de falla
Registro y descubrimiento de direcciones de servicio encapsuladas
Con la URL del servicio como centro, las interfaces extendidas son RegistryFactory, Registry, RegistryService
Select
Spring
Jetty
Log4j p>
Cargar automáticamente todas las configuraciones de Spring en el directorio META-INF/spring
Iniciar un Jetty integrado para informes de estado
Al acceder a una gran cantidad de páginas, afectará los subprocesos y la memoria del servidor
Configura automáticamente la configuración de log4j Cuando se inicia el proceso, los archivos de registro se dividen automáticamente en directorios según el proceso
Los usuarios no pueden controlar la configuración de log4j. que es inflexible
Enrutamiento condicional
Enrutamiento de script
Las reglas de enrutamiento basadas en expresiones condicionales son simples y fáciles de usar
En algunos casos complejos condiciones de múltiples ramas, las reglas son difíciles de describir
Las reglas de enrutamiento basadas en motores de secuencias de comandos son poderosas
No hay un entorno de pruebas en ejecución y la capacidad de secuencias de comandos es demasiado poderosa y puede convertirse en un puerta trasera
Aleatorio
RoundRobin
LeastActive
ConsistentHash
Aleatorio, establece la probabilidad aleatoria según el peso (recomendado )
La probabilidad de colisión en una sección es alta y puede ocurrir una desigualdad de presión instantánea al volver a intentarlo
Round robin, establezca la relación de round robin de acuerdo con el peso después de la convención
Existe un problema de solicitud de acumulación lenta de la máquina y puede ocurrir una avalancha en casos extremos
El número mínimo de llamadas activas, el mismo número de llamadas activas Al azar, el número activo se refiere a la diferencia entre los conteos antes y después de la llamada, para que la máquina lenta reciba menos solicitudes.
No se admiten pesos en la planificación de capacidad, la presión no se puede dirigir a la capacidad de prueba de presión de una máquina a través de pesas
Hash consistente, las solicitudes con los mismos parámetros siempre se envían al mismo proveedor. Cuando un determinado proveedor falla, las solicitudes enviadas originalmente al proveedor se distribuirán por igual a otros proveedores según la reunión del nodo virtual.
Provocando cambios drásticos
Presión compartida desigual
Conmutación por error
Failfast
Failsafe
Failback
Bifurcación
Transmisión
Cambia automáticamente si ocurre una falla. Cuando ocurre una falla, vuelva a intentarlo con otros servidores, generalmente utilizados para operaciones de lectura (recomendado)
Reintentar traerá. retraso más largo
Falla rápidamente, solo inicia una llamada e informa un error inmediatamente si falla. Generalmente se usa para operaciones de escritura no idempotentes
Si una máquina se está reiniciando, se reinicia. may Cuando falla una llamada
A prueba de fallos, cuando ocurre una excepción, se ignora directamente. Generalmente se usa para operaciones como escribir registros de auditoría
Se pierde la información de la llamada
El error se recupera automáticamente. Registre las solicitudes fallidas en segundo plano y reenvíelas periódicamente, generalmente utilizado para operaciones de notificación de mensajes.
No confiable, reinicio perdido
Llama a varios servidores en paralelo y regresa. siempre que uno tenga éxito, generalmente se usa en operaciones de lectura en tiempo real con requisitos de alto rendimiento
Necesita desperdiciar más recursos de servicio
Transmitir llamadas a todos los proveedores uno por uno si alguno informa. un error, se informará un error. Generalmente se usa para actualizar el estado del proveedor local.
Velocidad lenta, si alguno informa un error, se informará un error.
Encapsular. enrutamiento y equilibrio de carga de múltiples proveedores, y puente del centro de registro
Con Invoker como centro, las interfaces extendidas son Clúster, Directorio, Enrutador, Equilibrio de carga
Selección de clúster
Selección de enrutador
Reglas de enrutamiento
Contenedor
Monitoreo del número de llamadas RPC y tiempo de llamada
Con estadísticas como centro, las interfaces extendidas son MonitorFactory, Monitor, MonitorService
Protocolo Dubbo
Protocolo Rmi
p>Protocolo Hessian
Número de conexiones : conexión única
Modo de conexión: conexión larga
Protocolo de transmisión: TCP
Método de transmisión: transmisión asíncrona NIO
Serialización: binario de Hesse serialización
Ámbito de aplicación: los paquetes de datos de parámetros entrantes y salientes son más pequeños (se recomienda que sean menos de 100 K), los consumidores son más pequeños que los proveedores. Hay muchos y un solo consumidor no puede abrumar al proveedor. utilice el protocolo dubbo para transmitir archivos grandes o cadenas muy grandes.
Escenarios aplicables: llamadas regulares a métodos de servicio remoto
Utilice NIO para reutilizar una única conexión larga y utilice el grupo de subprocesos para procesar solicitudes al mismo tiempo, reduciendo los apretones de manos y aumentando la eficiencia de la concurrencia, con mejores rendimiento (recomendado)
Adecuado para llamadas de servicio con un volumen de datos pequeño y gran concurrencia, y situaciones en las que la cantidad de máquinas consumidoras de servicios es mucho mayor que la cantidad de máquinas proveedoras de servicios
Dubbo El protocolo predeterminado no es adecuado para la transmisión de servicios con grandes cantidades de datos, como la transferencia de archivos, vídeos, etc., a menos que el volumen de solicitudes sea muy bajo.
El protocolo Dubbo utiliza de forma predeterminada una única conexión larga por servicio. por proveedor y por consumidor si la cantidad de datos es grande, puede utilizar múltiples conexiones
Para evitar que una gran cantidad de conexiones cuelguen, el proveedor de servicios puede limitar la cantidad de conexiones receptoras grandes. para lograr la autoprotección del proveedor de servicios
Al transferir archivos grandes, una única conexión se convertirá en un cuello de botella
Resumen
Interoperable con RMI nativo, basado en Protocolo TCP
Ocasionalmente, la conexión falla y es necesario reconstruir el Stub
Los parámetros y valores de retorno deben implementar la interfaz serializable
Parámetros y valores de retorno No se puede personalizar para implementar Lista, Mapa, Número, Fecha, Calendario y otras interfaces. Solo puede usar la implementación que viene con JDK porque Hessian puede realizar un procesamiento especial, los valores de los atributos en la clase de implementación personalizada. perderse
Número de conexiones: múltiples conexiones
Modo de conexión: conexión corta
Protocolo de transmisión: HTTP
Método de transmisión: transmisión síncrona
Serialización: serialización binaria de Hesse
Ámbito de aplicación: los paquetes de datos de parámetros entrantes y salientes son más grandes, el proveedor es más grande que el consumidor. Hay muchos y el proveedor está bajo una gran presión. Los archivos se pueden transferir
Escenarios aplicables: transferencia de páginas, transferencia de archivos o interoperabilidad con servicios nativos de Hesse.
El proveedor utiliza el protocolo Hessian de Dubbo para exponer un servicio y el consumidor lo llama directamente. utilizando la interfaz estándar de Hesse
o el proveedor utiliza el estándar de Hesse para exponer el servicio y el consumidor lo llama utilizando el protocolo Hessian de Dubbo
Protocolo de llamadas remotas basado en Hessian
p>Interoperable con Hessian nativo, basado en el protocolo HTTP
Necesita compatibilidad con hessian.jar, ty es una interfaz unificada
Con Mensaje como centro, las interfaces extendidas son Canal , Transporter , Cliente, Servidor, Códec
Seleccione
Hessian
Dubbo
Json
Java p>
Buen rendimiento, compatibilidad con varios idiomas (recomendado)
La compatibilidad de varias versiones de Hessian no es buena y puede entrar en conflicto con el Hessian utilizado por la aplicación. Dubbo incorpora el código fuente de hessian3. .2.1
Al no transmitir metainformación de la clase POJO, el rendimiento es mejor cuando se transmite una gran cantidad de POJO
Al agregar campos al objeto de parámetro, se requiere una declaración de archivo externo
Texto sin formato, se puede analizar en varios idiomas mediante el análisis FastJson de forma predeterminada
Rendimiento deficiente
Soporte nativo de Java
Rendimiento deficiente
p>
Algunas herramientas reutilizables
Las interfaces extendidas son Serialización, ObjectInput, ObjectOutput, ThreadPool
Select
Business
RPC
Remoto
Servicio
Configuración
Proxy
Registro
Clúster p>
Supervisar
Protocolo
Intercambio
Transporte
Serializar
Jerarquía
Descripción de capa