La Red de Conocimientos Pedagógicos - Currículum vitae - ¿Qué son los marcos rpc rmi dubbo?

¿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

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

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

Supervisar

Protocolo

Intercambio

Transporte

Serializar

Jerarquía

Descripción de capa