Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Qué es rpc framework rmi dubbo?

¿Qué es rpc framework rmi dubbo?

Capa Dubbo

Configuración

Agente

Centro de registro

Clúster

Monitor

Protocolo

Intercambio

Transmisión

Transmisión

Puerto serie

Intercambio

Transmisión

Serialización

Interfaz de configuración externa

Con ServiceConfig.ReferenceConfig como centro y ReferenceConfig, puede crear directamente una nueva clase de configuración o generarla mediante Spring analizando el configuración Clase de configuración

Javassist ProxyFactory

Jdk ProxyFactory

Interfaz de servicio proxy transparente, Stub del lado del cliente y Skeleton del lado del servidor que generan el servicio

Con ServiceProxy es el centro, ServiceProxy extendido es el centro y la interfaz extendida es ProxyFactory

Select

Zookeeper

Redis

Multidifusión

Simple

Admite agrupación en clústeres basada en red. Hay muchos productos de código abierto. Se recomienda utilizar dubbo-2 o superior (recomendado). p>

Depende de la estabilidad de Zookeeper

Admite clúster de escritura dual basado en cliente, alto rendimiento

Requiere sincronización de la hora del servidor, que se utiliza para comprobar el latido de los datos sucios caducados

Descentralizado, no requiere instalación El registro

Depende de la topología y el enrutamiento de la red, el riesgo entre salas de máquinas es alto

Comida para perros, el registro en sí es un servicio RPC estándar

No admite agrupación en clústeres, puede Hay un único punto de falla

Encapsulación del registro y descubrimiento de direcciones de servicio

Con la URL del servicio como centro, las interfaces extendidas son RegistryFactory, Registry y RegistryService

Select

Spring

Jetty

Log4j

Cargue automáticamente todas las configuraciones de Spring en el directorio META-INF/spring

Inicie Jetty en línea.

Se utiliza para informar el estado

Una gran cantidad de accesos a la página afectará los subprocesos y la memoria del servidor

Configure automáticamente la configuración de log4j para que cuando se inicien múltiples procesos, el directorio del archivo de registro se registre automáticamente dado por el proceso

p>

Los usuarios no pueden controlar la configuración de log4j y carecen de flexibilidad

Enrutamiento condicional

Enrutamiento de script

Reglas de enrutamiento basado en expresiones condicionales, simple y fácil

Con algunas condiciones complejas de múltiples ramas, las reglas son difíciles de describir

Las reglas de enrutamiento basadas en el motor de script son poderosas

No hay espacio aislado en tiempo de ejecución ni capacidades de secuencias de comandos. Demasiado potente, puede convertirse en una puerta trasera.

Random

RoundRobin

LeastActive

ConsistentHash.

Aleatorio, establecido por peso Probabilidad aleatoria (recomendado)

La probabilidad de colisión es alta en la sección transversal y la presión puede ser desigual instantáneamente al volver a intentarlo

Rotar, establezca la relación de rotación de acuerdo con el peso convencional

Existe un problema de solicitud de acumulación de desaceleración, que puede causar una avalancha en casos extremos

El número mínimo de llamadas de actividad, el mismo El número de actividades aleatorias y el número activo se refieren a la diferencia entre los recuentos antes y después de la llamada, por lo que la velocidad es más rápida. Las máquinas lentas recibirán menos solicitudes.

No se admite la ponderación durante la planificación de capacidad. no es posible comprimir directamente la capacidad de una sola máquina mediante ponderación

Hashing consistente, las mismas solicitudes de parámetros siempre se envían al mismo proveedor. Cuando un proveedor cuelga, la solicitud original se basa en la del proveedor. nodo virtual y se propaga a otros proveedores sin causar cambios drásticos

Presión compartida desigual

Conmutación por error

Fallo rápido

A prueba de fallos

Recuperación de fallas

Reinicio de la máquina, la llamada puede fallar

A prueba de fallas, cuando ocurre una excepción, se ignorará directamente, generalmente se usa para operaciones como escribir registros de auditoría

p>

La información de la llamada se pierde

Recuperación automática de fallas, grabación en segundo plano de solicitudes fallidas y retransmisión regular, generalmente utilizada para operaciones de notificación de mensajes

No confiable, se pierde durante el reinicio

Llamar a varios servidores en paralelo. Siempre que haya un retorno exitoso, generalmente se usa para operaciones de lectura con altos requisitos en tiempo real

Requiere desperdiciar más recursos de servicio

Transmite llamadas a todos los proveedores y llámalos uno por uno, entre los cuales cualquiera informará un error, generalmente usado para actualizar el estado local del proveedor.

Más lento, cualquiera de ellos informará un error, y luego informará un error

Encapsular enrutamiento y equilibrio de carga de múltiples proveedores, y registro de puente y equilibrio de carga, el registro de puente

centrado en la persona que llama, proporciona interfaces extendidas, directorios, enrutadores y equilibrio de carga para clúster

Selección de clúster

Selección de enrutador

Reglas de enrutamiento

Contenedor

Recuento de llamadas RPC y monitoreo del tiempo de llamadas

Centradas en estadísticas, las interfaces extendidas incluyen MonitorFactory, Monitor, MonitorService

Protocolo Dubbo

Protocolo Rmi

Protocolo de Hesse

Número de conexiones: conexión única

Método de conexión: conexión larga

Protocolo de transmisión: TCP

Método de transmisión: transmisión asíncrona NIO

Serialización: serialización binaria de Hesse

Ámbito de aplicación: los paquetes de parámetros entrantes y salientes son pequeños (se recomienda menos de 100 K), hay más consumidores que los proveedores, y un solo consumidor no puede abastecer al proveedor. Sin abrumar al proveedor, trate de no utilizar el protocolo dubbo para transferir archivos grandes o cadenas muy grandes.

Escenarios aplicables: llamadas regulares a métodos de servicio remoto

Use NIO para reutilizar una única conexión larga y use el grupo de subprocesos para procesar solicitudes al mismo tiempo, reduciendo los apretones de manos y mejorando la eficiencia de la concurrencia, logrando mejores rendimiento (recomendado)

Es adecuado para llamadas de servicio con un volumen de datos pequeño y una gran concurrencia, y la cantidad de máquinas consumidoras de servicios es mucho mayor que la cantidad de máquinas proveedoras de servicios

Dubbo El protocolo no es una buena opción, pero se puede utilizar en una variedad de aplicaciones. >El protocolo predeterminado de Dubbo no es adecuado para transmitir servicios de gran volumen de datos, como transferencia de archivos, transmisión de video, etc., a menos que el volumen de solicitud sea muy pequeño

El protocolo Dubbo predeterminado, cada proveedor de servicios y cada consumidor solo puede usar una conexión larga. Si la cantidad de datos es grande, puede usar múltiples conexiones.

Para evitar que una gran cantidad de conexiones lo bloqueen, puede limitar la cantidad de conexiones entrantes grandes. el lado del proveedor de servicios para lograr los siguientes servicios Autoprotección del proveedor

Una única conexión puede convertirse en un cuello de botella durante las transferencias de archivos grandes

Resumen

Interoperable con RMI nativo , basado en 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 Los valores de retorno no se pueden personalizar para implementar List. El valor de retorno no se puede personalizar para implementar interfaces como Lista, Mapa, Número, Fecha, Calendario, etc., solo la implementación proporcionada por JDK, porque Hessian realizará un procesamiento especial y los valores de atributo en la implementación personalizada. la clase se perderá

Número de conexión: múltiples conexiones

Conexión: conexión corta

Protocolo de transmisión: HTTP

Modo de transmisión: transmisión síncrona

Serialización: serialización binaria de Hesse

Ámbito de aplicación: una gran cantidad de paquetes de parámetros entrantes y salientes, más proveedores que consumidores y los proveedores están bajo una mayor presión para transferir archivos

Escenarios de aplicación: soporte jar, ty como interfaz unificada

Está centrado en mensajes y las interfaces extendidas son Channel, Transporter, Client, Server y Codec

Select

Hessian

Dubbo

Json

Java

Mejor rendimiento, compatibilidad con varios idiomas (recomendado)

La compatibilidad de varias versiones de Hessian no es buena, lo que puede entrar en conflicto con el Hessian utilizado en la aplicación. Dubbo incorpora el código fuente hessian3

Al no transmitir metainformación de la clase POJO, el rendimiento es. mejor cuando se transmite una gran cantidad de POJO

Cuando se agrega el campo de objeto de parámetro, se requiere una declaración de archivo externo

Texto sin formato, análisis entre idiomas, se utiliza análisis FastJson por defecto

Rendimiento deficiente

Soporte nativo de Java

Rendimiento deficiente

Algunas herramientas reutilizables

Interfaz extendida de serialización , entrada de objeto, interfaz extendida de salida de objeto, grupo de subprocesos

Seleccionar

Negocio

RPC

Remoto

Servicio

Configuración

Agente

Registro

Clúster

Monitoreo

Protocolo

Exchange

Transmisión

Serialización

Jerarquía

Descripción de capa