Java RPC-07: Extras y rendimiento

Septiembre 6th, 2009 por Enrique Leave a reply »

En este es último artículo de la serie RPC voy explorar algunas extras que tiene el servidor que nos van a servir para implementar un servidor de aplicaciones, pero sin perder generalidad. También vamos ha realizar un test de rendimiento, viendo el througput (pedidos por segundo) que tiene el servidor.

Extras

Los servicios en el lado del servidor toman parámetros de inicialización. Esto nos va a permitir pasar datos al servicio para configurarlos. Estos parámetros se acceden mediante el método getParameters() de la clase Service, que devuelve un Mapa con la configuración.

Validación de servicios

Antes de agregar un servicio al servidor, se realizan los siguientes chequeos:

  • Que la implementación del servicio tiene que tener un constructor sin parámetros

  • Que la implementación del servicio debe implementar la interfaz del servicio

  • Qué no haya sobrecarga de métodos en el servicio

  • Que el tipo de retorno como los parámetros de los métodos sean serializables

Estos chequeos ayudan a evitar errores comunes.

Autorización de ejecución

Antes de efectivamente ejecutar un método de un servicio, se invoca a un interceptor: onPreExecution. Si se ejecuta correctamente, entonces se pasa a invocar al servicio, si no se sale por excepción NotExecutedException. Esto nos va a servir para implementar, por ejemplo, mecanismos de seguridad y auditoría (logging).

Rendimiento

Con el test de rendimiento vamos comprobar ver si el diseño que hicimos es escalable como queríamos. El test se realizó en un notebook que tiene un CPU Intel modelo T9500 (C2D 2.6GHz, 6MB de cache core Penryn) con 2GB de RAM sobre Ubuntu 9.04 32 bits y con Java6. Los resultados fueron:

Caso Procesos cliente Hilos por cliente Pedidos por hilo Total pedidos Tiempo (segs) Pedidos/ segundo

1

5

30

2500

375000

207

1811,59

2

10

30

2500

750000

229

3275,11

Si bien no es un test de stress muy riguroso, nos da una buena aproximación de la performance y escalabilidad del servicio: aumentando al doble la cantidad de pedidos, solamente sube el tiempo en 10,6%. También, hay un valor que se puede ajustar en la creación del servidor que es el tamaño del pool de workers de la capa Pedido que despachan pedidos a la capa Servicio. Por defecto es de tamaño 10, pero si se está ante una configuración multi CPU se puede subir este valor para obtener mejor rendimiento. En el caso del test de rendimiento se utilizó un pool de 10 workers.

Un servidor de aplicaciones basado en un versión más vieja de este mecanismo de RPC está implantado hace ya varios años en uno de los bancos más importantes de Uruguay.

En el próximo artículo vamos a comenzar con la introducción al servidor de aplicaciones y cuales son los componentes principales.

Stay tuned!

  • Blogger Post
  • Digg
  • Reddit
  • Google Reader
  • Share/Bookmark
Advertisement

Deja un comentario

Spam protection by WP Captcha-Free