Buscar temas sin respuesta | Ver temas activos |

Nuevo tema Responder al tema Índice general » Programacion: Vieja escuela » Teoria de sistemas
Autor Mensaje
Desconectado 
 Asunto: Javaspaces con GigaSpaces
NotaPublicado: 16 May 2008 20:09 
poster a 1 tbps
Avatar de Usuario

Registrado: 17 Oct 2002 17:03
Mensajes: 2018
Ubicación: London, UK
Bueno, durante estos últimos tres días estuvimos probando esto, ya tenemos una pequeña implementación como prueba de concepto, vá como tiro.

Basicamente, GigaSpaces es un container de Javaspaces (aunque provee muchos servicios más), integrado con Spring. Un space es un "lugar" donde pueden vivir instancias de objetos, que se pueden meter o sacar del space.
Un space se divide en una o más particiones, que pueden estar o no en el mismo servidor o JVM. Se puede configurar de varias maneras, en nuestro caso cuando metemos un objeto al space, hace un balanceo automático y el objeto va a parar a cualquiera de las particiones que estén activas.

Si recuerdan, hace un par de meses estuve preguntando que hardware necesitaba para correr mi aplicación en producción viewtopic.php?t=29766, el problema que tenemos es que necesitamos recibir muchos datos juntos, procesarlos inmediatamente y mostrarlos y pasarlos a otro sistema. Esto implicaba hacer queries muy grandes a la BD, y traer resultsets muy grandes también, implicaba un gran gasto de licencias de Oracle y en hardware.

Gigaspaces soluciona esto. Los datos se reciben via HTTP por uno o varios servidores, que convierten esos datos y los meten al space. Cada partición contiene un subset de los datos, y procesa solo ese subset. Una vez que se procesó cada subset, se sacan los resultados fuera del space, y otro proceso se encarga de realizar un map reduce de todos los resultados de cada partición, y los datos quedan listos para mostrar o enviar. Todo esto en memoria, sin nisiquiera mirar la BD. Una vez que se terminan de procesar todos los datos, se graban todos juntos en la BD, para su uso futuro.
Los objetos que "viven" en el space son simples POJOs, manejados por Spring. Cuando el space se inicializa, también se inicializa un appContext de Spring para cada partición. La configuración del space también se define en un appContext.xml, usando unos namespaces específicos.

Obviamente cada space (y cada partición) tiene su backup, para asegurar alta disponibilidad y tolerancia a fallos.
Gigaspaces soporta directamente Amazon EC3, y como automáticamente puede deployar mas particiones cuando se exceden los límites preseteados de uso de CPU y/o memoria, prácticamente ofrece una escalabilidad sin límites.

En las pruebas que hice hoy, corriendo todo en mi laptop (Eclipse, un Tomcat, un container Gigaspaces con dos particiones, recibiendo los llamados en XML por HTTP), pudo procesar 20000 llamados por segundo sin despeinarse, hasta que se quedó sin memoria a los 800000 llamados.

Para nuestro problema, Gigaspaces nos vino como anillo al dedo. Quizá otros problemas no sean tan directamente solucionables, aunque hay varios otros servicios que Gigaspaces provee que aún no conozco.


(Esto quizá debería ir en otro foro, pero como no hay un foro "Arquitectura", lo pongo acá, si a alguien le parece que tiene que ir en otro lado, que lo mueva).

_________________
Ale Lovecraft
Imagen


Arriba
 Perfil  
 
Desconectado 
 Asunto:
NotaPublicado: 19 May 2008 09:03 
root@pcmasmas:~#
Avatar de Usuario

Registrado: 31 Dic 1969 21:00
Mensajes: 24812
Ubicación: London [uK]
realmente muy interesante

ahora bien, no conozco mucho de JavaSpace, y menos de GigaSpace.

Imagen

Imagen

http://www.gigaspaces.com/xap-technical

y no me quedo para nada claro lo que decis que cada objeto es un POJO manejado por Spring... existe una instancia en el Space y un prototype en el context? o como funciona GigaSpaces + Spring?

cuanto les cuesta?

ice


Arriba
 Perfil  
 
Desconectado 
 Asunto:
NotaPublicado: 19 May 2008 09:45 
poster a 1 tbps
Avatar de Usuario

Registrado: 17 Oct 2002 17:03
Mensajes: 2018
Ubicación: London, UK
Claro, cada partición es como un container javaSpaces, y contiene un appContext de Spring. Pensalo como si cada partición fuera una webapp, y al levantar se instancia un appContext de Spring y se instancian todos los beans. Cada partición es independiente de la otra, y puede haber n particiones simultaneas, cada una corriendo diferentes instancias de los mismos beans, y haciendo una parte del trabajo.

Con respecto al precio, nolo sé exáctamente, aunque sé que es caro y cobran por procesador igual que Oracle.

_________________
Ale Lovecraft
Imagen


Arriba
 Perfil  
 
Desconectado 
 Asunto:
NotaPublicado: 19 May 2008 10:01 
root@pcmasmas:~#
Avatar de Usuario

Registrado: 31 Dic 1969 21:00
Mensajes: 24812
Ubicación: London [uK]
cuando decis que spring "instancia todos los beans"... te referis a los servicios que hacen el procesamiento?

digamos que tengo un SOA, y mi modulo cuenta chapitas de coca cola que vienen en un request.

el javaspace va a instanciar los servicios con una llamada, digamos, de webservice via Mule?

la data que esta en memoria sigue disponible en el cache que es la memoria para ser consultada como si fuera una base de datos?


Arriba
 Perfil  
 
Desconectado 
 Asunto:
NotaPublicado: 19 May 2008 10:30 
root@pcmasmas:~#
Avatar de Usuario

Registrado: 31 Dic 1969 21:00
Mensajes: 24812
Ubicación: London [uK]
otro buen link

http://www.gigaspaces.com/wiki/display/ ... nd+Example


Arriba
 Perfil  
 
Desconectado 
 Asunto:
NotaPublicado: 19 May 2008 10:56 
poster a 1 tbps
Avatar de Usuario

Registrado: 17 Oct 2002 17:03
Mensajes: 2018
Ubicación: London, UK
hielito escribió:
cuando decis que spring "instancia todos los beans"... te referis a los servicios que hacen el procesamiento?

Sí, y cualquier bean para cualquier cosa que tengas definido en tu appContext.xml

hielito escribió:
digamos que tengo un SOA, y mi modulo cuenta chapitas de coca cola que vienen en un request.

el javaspace va a instanciar los servicios con una llamada, digamos, de webservice via Mule?

Sí, en realidad los servicios ya están instanciados en el space, a la espera de que lleguen las chapitas. Cuando entra una chapita al space, tu servicio es notificado y cuenta una. Y así.

hielito escribió:
la data que esta en memoria sigue disponible en el cache que es la memoria para ser consultada como si fuera una base de datos?

Sí, mientras no la saques sigue disponible. Obviamente ocupa memoria, asique en algún momento vas a querer mover tus chapitas del space a la BD. Pero cuando quieras podés volverte a traer las chapitas al space, si necesitás hacer algo con ellas que así lo requiera.

_________________
Ale Lovecraft
Imagen


Arriba
 Perfil  
 
Desconectado 
 Asunto:
NotaPublicado: 19 May 2008 10:59 
root@pcmasmas:~#
Avatar de Usuario

Registrado: 31 Dic 1969 21:00
Mensajes: 24812
Ubicación: London [uK]
rocking

y supongo que Spring simplemente te ofrece un API bonita que te esconda todos esos Space.finders

ice


Arriba
 Perfil  
 
Desconectado 
 Asunto:
NotaPublicado: 19 May 2008 11:08 
poster a 1 tbps
Avatar de Usuario

Registrado: 17 Oct 2002 17:03
Mensajes: 2018
Ubicación: London, UK
hielito escribió:
rocking

y supongo que Spring simplemente te ofrece un API bonita que te esconda todos esos Space.finders

ice


Bueno, hay un template similar al de Hibernate o jdbc. Después vos implementás tus DAOs para GigaSpaces.

_________________
Ale Lovecraft
Imagen


Arriba
 Perfil  
 
Desconectado 
 Asunto:
NotaPublicado: 19 May 2008 11:21 
root@pcmasmas:~#
Avatar de Usuario

Registrado: 31 Dic 1969 21:00
Mensajes: 24812
Ubicación: London [uK]
o sea que si estas laburando con Spaces, primero harias todo en memoria, y cuando te aburris, llamas a hibernate para que persista? (que a su vez puede meter todo en el cache de segunda instancia...)

ice


Arriba
 Perfil  
 
Desconectado 
 Asunto:
NotaPublicado: 19 May 2008 12:26 
poster a 1 tbps
Avatar de Usuario

Registrado: 17 Oct 2002 17:03
Mensajes: 2018
Ubicación: London, UK
Si, a Hibernate o JDBC o lo que quieras.

_________________
Ale Lovecraft
Imagen


Arriba
 Perfil  
 
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 10 mensajes ] 


  Imprimir vista Tema previo | Siguiente tema 

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado


Todos los horarios son UTC - 3 horas


No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro
No puede enviar adjuntos en este Foro

Buscar:
Saltar a:  
PC++ Style
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traducción al español por Huan Manwë