Diseño del grupo de subprocesos de Dubbo
Hay 4 tipos de grupos de subprocesos disponibles para el modelo de subprocesos de Dubbo.
Si quieres saber más sobre los principios de los grupos de subprocesos, puedes leer mi columna sobre grupos de subprocesos y cosas.
Nuestros subprocesos ejecutan principalmente 2 tipos de lógica: eventos de IO normales (como establecer y desconectar conexiones) y eventos de solicitud de IO (que ejecutan lógica de negocios).
Estos grupos de subprocesos se utilizan en el punto de extensión Dispatcher de Dubbo. El punto de extensión Dispatcher se utiliza para determinar qué eventos en Netty ChannelHandler se ejecutan en el grupo de subprocesos proporcionado por Dubbo.
Grupo de subprocesos del búfer, la configuración predeterminada es la siguiente
En lo que respecta a la configuración predeterminada, es básicamente la misma que la configuración creada por los Ejecutores, pero existe un riesgo. de desbordamiento de memoria.
NamedInternalThreadFactory se utiliza principalmente para modificar los nombres de los hilos, lo que nos facilita la resolución de problemas.
AbortPolicyWithReport imprimirá un registro de las tareas rechazadas, lo que también facilita la resolución de problemas.
Como se puede ver en la configuración de keepAliveTime, la característica del grupo de subprocesos LimitedThreadPool es que el número de subprocesos solo aumenta pero no disminuye.
El grupo de subprocesos predeterminado de Dubbo es de 200 subprocesos fijos, que es básicamente lo mismo que LimitedThreadPool en términos de configuración.
En todo caso, FixThreadPool espera hasta que se creen 200 subprocesos antes de colocar la tarea en la cola. LimitedThreadPool primero colocará la tarea en la cola y luego creará un hilo cuando la cola esté llena.
Sabemos que una vez que el número de subprocesos alcanza corePoolSize, los subprocesos de trabajo solo se agregarán cuando la cola de trabajo esté llena.
Primero, al heredar ThreadPoolExecutor para implementar EagerThreadPoolExecutor, este grupo de subprocesos está optimizado para esta función. Registra la cantidad de tareas enviadas al grupo de subprocesos actual submitTaskCount.
El segundo método es personalizar TaskQueue como workQueue, lo que determinará si currentPoolSize Para comprender por qué la devolución falsa aumenta los subprocesos de trabajo, revisemos el método de ejecución de ThreadPoolExecutor Luego, comprenderemos la lógica del método de oferta de TaskQueue Finalmente, aprenda cómo EagerThreadPoolExecutor cuenta el número de tareas enviadas Finalmente, aprenderemos cómo EagerThreadPoolExecutor cuenta el número de tareas enviadas. En términos generales, utilizamos la configuración predeterminada de Dubbo. El volumen de negocios de nuestra empresa no ha alcanzado el punto en el que se requiere una configuración especial del grupo de subprocesos. El objetivo principal de este artículo es guiarnos para comprender los puntos de configuración del marco del grupo de subprocesos maduro, así como los asuntos a los que se debe prestar atención cuando se utiliza realmente el grupo de subprocesos.