prueba de interfaz dubbo jmeter

Prólogo

Recientemente, estoy haciendo la integración de monitoreo del servicio Dubbo y Prometheus. Para probar el impacto en el desempeño del componente de monitoreo en las llamadas RPC de Dubbo, necesitamos hacer pruebas de desempeño antes y después de la adición. Aunque antes se creó una plataforma de prueba de servicio unificada de Dubbo para el grupo, no se puede usar para pruebas de rendimiento.

Hablando de pruebas de rendimiento, puede tener muchas opciones, wrk, JMeter, etc. Pero creo que todo el mundo se usa generalmente para probar la interfaz HTTP. Para este protocolo privado del marco Dubbo dubbo://, estas herramientas no proporcionan soporte nativo. La primera idea es escribir un cliente por la llamada de generalización de Dubbo, y luego contar los resultados de la prueba, pero este no es elegante, y el otro es que es posible repetir la rueda y perder el tiempo. Después de googlear, realmente obtuve la respuesta que quería.

Hoy voy a presentar un complemento de JMeter jmeter-plugins-for-apache-dubbo de la comunidad de Dubbo . Con este complemento, puede dejar que JMeter pruebe el servicio de Dubbo.

Este artículo asume que los lectores han usado jmeter para pruebas de rendimiento simples y han instalado jmeter

Texto

Paso 1: Instalar el complemento Dubbo

  1. Clonar el proyecto:git clone https://github.com/thubbo/jmeter-plugins-for-apache-dubbo.git

  2. Empaquete el proyecto y cree el complemento JMeter:mvn clean install

    O puede omitir los dos pasos anteriores y descargar  jmeter-plugins-dubbo-2.7.3-jar-with-dependencies.jar

  3. Agregue el complemento a  ${JMETER_HOME}\lib\ext(reinicie jmeter después de la instalación)

image.png

image.png

 

Paso 2: escribe el script JMeter

1. Crear muestra de Dubbo

Haga clic derecho en [Grupo de subprocesos] en el área [Plan de prueba] y seleccione [Agregar]> [Muestreo]> Muestra de Dubbo

image.png

image.png

 

Configure la dirección de registro, el nombre de la interfaz del servicio (nombre de clase de la interfaz Java), el nombre del método, el tipo de parámetro y el valor del parámetro en el cuadro de diálogo Dubbo Sample.

Los pasos de configuración son los siguientes:

  • Configure el centro de registro, usualmente use ZooKeeper. (Una vez completada la configuración, haga clic en el Get Provider List botón de arriba para obtener la lista de servicios registrados)

    • Si se selecciona Protocolo  zookeeper, complete la Dirección de ZooKeeper.
    • Si el entorno de producción generalmente contiene múltiples nodos ZooKeeper, puede completar varias direcciones ZooKeeper y separarlas con una coma (,).
    • Para probar en un solo servidor, seleccione Protocolo  noney complete la dirección del servicio Dubbo con Dirección.
  • Ajuste la configuración de la llamada de servicio según sea necesario, como grupo, versión, tiempo de espera de llamada (el valor predeterminado es 1 segundo), etc.

  • Configure el nombre completo de la clase de interfaz Java y el nombre del método del servicio Dubbo.

  • Configure el tipo de parámetro y el valor del parámetro de cada parámetro.

    • Tipo de parámetro: los tipos básicos (como boolean, int, etc.) escriben nombres de tipos directamente, y otros tipos escriben nombres completos de clases Java (tenga en cuenta que es un nombre de clase completo).
    • Valor del parámetro: el tipo básico y la cadena escriben directamente el valor del parámetro, y el tipo complejo se completa con JSON.

image.png

image.png

 

Para facilitar la depuración local de los scripts de prueba, puede agregar una escucha de estructura, hacer clic con el botón derecho en [Grupo de subprocesos], seleccionar [Agregar]> [Escucha]> [Ver árbol de resultados] y agregar una escucha de Ver árbol de resultados.

Paso 3: ejecución de prueba

Haga clic derecho en [Grupo de subprocesos] y haga clic en [Verificar] para ejecutar una sola solicitud para probar la conectividad entre la herramienta y el servicio.

En la pestaña [Ver árbol de resultados], puede ver los [Datos de respuesta] devueltos como se esperaba, lo que indica que la llamada de Dubbo se puede ejecutar normalmente.

image.png

image.png

 

Paso 4: Agregar afirmación

A veces verá que el resultado de la ejecución muestra el éxito, pero de hecho la llamada de servicio de Dubbo falló o el proceso de negocio falló y el resultado devuelto contiene un código de error. Por ejemplo, las siguientes dos imágenes.

Llamada RPC fallida.

image.png

image.png

 

Procesamiento comercial fallido.

image.png

image.png

 

Solución:

Para tales problemas, puede agregar aserciones para verificar si el servicio es exitoso. El resultado de la llamada de generalización se devuelve en forma de JSON, y se puede agregar una aserción para verificar los datos JSON devueltos para verificar con mayor precisión si la ejecución del servicio es exitosa.

Los pasos específicos son hacer clic con el botón derecho en Dubbo Sample en el área [Plan de prueba] de jmeter y seleccionar [Agregar]> [Afirmar]> [Afirmación JSR233].

image.png

image.png

 

Aquí doy mi maravilloso código de script de prueba:

  1. Cadena respStr = nulo;
  2. Map <String, Object> resp = null;
  3. tratar {
  4. respStr = SampleResult.getResponseDataAsString ();
  5. resp = (Mapa <Cadena, Objeto>) com.alibaba.fastjson.JSON.parse (respStr);
  6. } catch (Throwable ex) {
  7. // pasar
  8. log.error ( "error", ex);
  9. }
  10. if (resp == null) {
  11. AssertionResult.setFailure ( true);
  12. AssertionResult.setFailureMessage ( "LA RESPUESTA NO ES JSON:" + respStr);
  13. } más {
  14. // Verificación simple: cuando falla la llamada de generalización de dubbo, el JSON devuelto contiene campos de código y detailMessage.
  15. if (resp.get ( "code")! = null && resp.get ( "detailMessage")) {
  16. AssertionResult.setFailure ( true);
  17. AssertionResult.setFailureMessage ( "excepción de rpc, código =" + resp.get ( "código") + "detailMessage =" + resp.get ( "detailMessage"));
  18. } else if (! "SUCCESS" .equals ((String) resp.get ( "code"))) {
  19. // TODO verifica el éxito de la solicitud en función de su propio negocio real.
  20. AssertionResult.setFailure ( true);
  21. AssertionResult.setFailureMessage ( "Solicitud fallida, código =" + resp.get ( "código"));
  22. } más {
  23. AssertionResult.setFailure ( false);
  24. }
  25. }

image.png

image.png

 

Veamos, después de agregar la afirmación, verifique el resultado.

image.png

image.png

 

Como puede ver, la afirmación desempeñó un papel en la verificación comercial y provocó un mensaje de error.

En cuanto a cómo escribir otras partes del guión, es necesario considerar la escena que desea simular para configurar, que pertenece a la parte de cómo usar JMeter, por lo que no explicaré aquí.

Preguntas más frecuentes

Para preguntas más frecuentes sobre el complemento, consulte las preguntas frecuentes en la wiki de github del complemento .

Referencia

Supongo que te gusta

Origin www.cnblogs.com/SunshineKimi/p/12717015.html
Recomendado
Clasificación