Observadores de estrellas a lo largo del tiempo | Contribuyentes a lo largo del tiempo |
---|---|
GitHub: opengoofy/hippo4j
Alojamiento rural: opengoofy/hippo4j
Para obtener documentación completa y más detalles, visite: Documentos
El grupo de subprocesos es una herramienta para administrar subprocesos basada en la idea de agrupación. El uso del grupo de subprocesos puede reducir el costo de crear y destruir subprocesos y evitar el agotamiento de los recursos del sistema causado por demasiados subprocesos. En escenarios de procesamiento de tareas de gran volumen y alta concurrencia, el uso de grupos de subprocesos es esencial.
Si realmente utiliza el grupo de subprocesos en su proyecto, creo que puede encontrar los siguientes puntos débiles:
El grupo de subprocesos está definido arbitrariamente y hay demasiados recursos de subprocesos, lo que provoca una gran carga en el servidor.
Los parámetros del grupo de subprocesos son difíciles de evaluar. A medida que aumenta la concurrencia empresarial, la empresa corre el riesgo de fracasar.
El tiempo de ejecución de la tarea del grupo de subprocesos excede el ciclo de ejecución promedio y es invisible para los desarrolladores.
La acumulación de tareas del grupo de subprocesos desencadena la política de rechazo y afecta el funcionamiento normal de las empresas existentes.
Cuando ocurren problemas como tiempos de espera y disyuntores en el negocio, debido a que no hay monitoreo, es imposible determinar si el problema es causado por el grupo de subprocesos.
El grupo de subprocesos nativo no admite la transferencia de variables de tiempo de ejecución. Por ejemplo, el contexto MDC generará GG cuando encuentre el grupo de subprocesos.
Al no poder realizar un cierre ordenado, se descartó una gran cantidad de tareas del grupo de subprocesos en ejecución cuando se cerró el proyecto.
Mientras se ejecuta el grupo de subprocesos, la ejecución de la tarea se detiene. Se sospecha que se ha producido un punto muerto o que se ha realizado una operación que requiere mucho tiempo, pero no hay forma de comenzar.
Proporciona soporte para las siguientes funciones:
Control global: administra instancias del grupo de subprocesos de aplicaciones.
Cambios dinámicos: cambie dinámicamente los parámetros del grupo de subprocesos mientras la aplicación se está ejecutando, incluidos, entre otros: núcleos, número máximo de subprocesos, capacidad de la cola de bloqueo, política de rechazo, etc.
Alarma de notificación: cuatro estrategias de notificación de alarma integradas, la actividad del grupo de subprocesos, el nivel de capacidad del agua, la estrategia de rechazo y el tiempo de ejecución de la tarea son demasiado largos.
Recopilación de datos: admite múltiples métodos para recopilar datos del grupo de subprocesos, incluidos, entre otros: registros, recopilación integrada, Prometheus, InfluxDB, ElasticSearch, etc.
Monitoreo de ejecución: vea los datos de tiempo de ejecución del grupo de subprocesos en tiempo real y muestre los datos de tiempo de ejecución del grupo de subprocesos en gráficos dentro de un tiempo personalizado.
Expansión de funciones: admite el contexto de entrega de tareas del grupo de subprocesos cuando el proyecto está cerrado y admite esperar a que el grupo de subprocesos complete la tarea dentro de un tiempo específico.
Múltiples modos: dos modos de uso integrados: dependencia del centro de configuración y sin dependencia de middleware.
Gestión de contenedores: visualización del tiempo de ejecución del grupo de subprocesos del contenedor Tomcat, Jetty, Undertow y cambios en el número de subprocesos.
Adaptación del marco: visualización de datos de tiempo de ejecución de grupos de subprocesos de consumo y cambios en el número de subprocesos de Dubbo, Hystrix, RabbitMQ, RocketMQ y otros.
Revisión de cambios: proporciona una variedad de roles de usuario. Los cambios en los parámetros del grupo de subprocesos realizados por usuarios normales requieren la revisión del usuario administrador antes de que puedan surtir efecto.
Complementos dinámicos: complementos integrados de múltiples grupos de subprocesos, que admiten complementos definidos por el usuario y extensiones de tiempo de ejecución.
Adaptación de múltiples versiones: después de las pruebas reales, se admitió la versión del cliente SpringBoot 1.5.x => 2.7.5 (no se han probado versiones superiores).
Para fines de demostración local, consulte Inicio rápido
Entorno de demostración: http://console.hippo4j.cn/index.html
Más empresas conectadas pueden registrarse en la dirección de registro. El registro es solo para promoción de productos.
El código abierto no es fácil, ¡haga clic en la estrella en la esquina superior derecha para alentarlo!
Si desea seguir los artículos actualizados y la información compartida de Hippo4j en tiempo real, puede seguir mi cuenta oficial.
Si tiene alguna pregunta durante el uso o tiene alguna sugerencia para el proyecto, siga la cuenta oficial y responda: Únase al grupo para comunicarse y discutir con 1000+
amigos con ideas afines.
Si su empresa no utiliza escenarios Hippo4j, también recomiendo leer los principios subyacentes del proyecto, principalmente por las siguientes razones:
Para mejorar la calidad del código y el comportamiento de expansión posterior, se utilizan múltiples patrones de diseño para lograr una alta cohesión y un bajo acoplamiento.
La capa inferior del marco depende del marco Spring para ejecutarse y utiliza una gran cantidad de funciones relacionadas con Spring en el código fuente.
Utilice una variedad de herramientas del paquete de concurrencia JUC para garantizar la seguridad de las operaciones de subprocesos múltiples y comprenda la programación concurrente a través de escenarios reales.
Aprenda de los principales marcos de código abierto Nacos y Eureka para implementar funciones ligeras de centro de configuración y centro de registro.
Personalice la implementación del marco RPC y encapsule Netty para completar la optimización de la comunicación de la red cliente/servidor.
Estandarice la escritura de código a través de complementos como CheckStyle y Spotless para garantizar un comportamiento y estilo de código de alta calidad.
[Sa-Token]: ¡Un marco de autenticación de autoridad Java liviano que hace que la autenticación sea simple y elegante!
[HertzBeat]: Sistema de monitoreo en la nube amigable y fácil de usar, no requiere agente, potentes capacidades de monitoreo personalizado.
[JavaGuide]: una guía que cubre los conocimientos básicos que la mayoría de los programadores de Java necesitan dominar.
[ toBeBetterJavaer ]: Una guía de aprendizaje de Java divertida y fácil de entender.
[Jpom]: Software de construcción en línea, implementación automática, operación y mantenimiento diarios y monitoreo de proyectos, simple, liviano y poco intrusivo.
[12306]: Usuario 12306 completo de alta imitación + obtención de boletos + pedido + servicio de pago para ayudar a los estudiantes a concentrarse en proyectos laborales.
[CongoMall]: centro comercial de nivel empresarial, desarrollado en base al modelo impulsado por dominio DDD, que incluye infraestructura y negocios de centros comerciales.
Gracias a todos los desarrolladores que contribuyeron al proyecto. Si está interesado en contribuir, consulte el primer número bueno.
La comunidad Hippo4j ha recibido múltiples licencias de Jetbrains y ha asignado desarrolladores activos al proyecto. Estamos muy agradecidos con Jetbrains por su apoyo a la comunidad de código abierto.