¿Qué es rpc framework rmi 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 p>
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 p>
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