Jump to content


Photo

Gestion de servidores middleware


  • Please log in to reply
6 replies to this topic

#1 giulichajari

giulichajari

    Advanced Member

  • Miembros
  • PipPipPip
  • 477 posts

Posted 19 December 2014 - 11:13 PM

Hola amigos, estuve leyendo hace tiempo ya el tema del middleware, o aplicacion intermedia, que como saben permite crear el modelo de 3 capas, y estoy desarrollando con DataSnap en Delphi para una empresa.

Una de las caracteristicas de esta arquitectura es la replicacion del servidor, es decir se pueden tener todos los servidores que se quieran, y si uno se cae se trabaja en otro, ademas de que la cantidad de usuarios puede crecer indefinidamente.

Pero lo que quiero saber es como se gestionan los servidores, en mi caso tengo 3 sucursales(de venta), y pense hacer LAN con un servidor en cada sucursal que tiene asociado el "TERMINAL DE PUESTO DE VENTA", ademas tengo una aplicacion administrativa, esta si es la que consume los datos, por ejemplo busca y realiza la lista de articulos comprados por el cliente.

Esta aplicacion administrativa por ejemplo debe buscar ticket en los supuestos 3 servidores, porque pudo haber comprado en cualquier sucursal. Entonces:
¿el programa podria tener un modulo que contenga el listado de servidores, y se iteraria sobre los mismos?
Y si quiero agregar otra replica: que debo hacer? comprar el hardware e instalarle la replica?

Ademas un cliente deberia tener un listado de servidores, por si se cae uno saber de otro? Cada servidor tiene ip fija obviamente, y la base de datos por si se corta internet las lan siguen funcionando.

En donde podria buscar informacion al respecto?

Gracias
  • 0

#2 genriquez

genriquez

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 539 posts
  • LocationCali, Colombia

Posted 20 December 2014 - 07:59 AM

Hola giulichajari

El objetivo de las tres capas es repartir las funcionalidades en cada capa de acuerdo a los beneficios que estas proporcionan, así la base de datos se dedica a lo que sabe hacer, el cliente  (dispositivo final) hace la interfaz con el usuario y la capa intermedia gestiona la lógica del negocio.

Por lo que entiendo de lo que escribiste, tu estas replicando 3 veces la capa de negocio y la de base de datos,  cosa que aunque no imposible, complica un poco el manejo de la unicidad de los datos. 

Lo que se busca es tener una sola base de datos (o granja de datos o SAN, o lo que bien se adapte a tus necesidades) y muchos middleware, dependiendo de la capacidad y el número de usuarios que vayas a manejar.  Pero es importante mantener los datos como una sola unidad ya que mantener sincronizada las bases de datos todavía representa un problema bastante grande.

DATASNAP:  Ya con respecto a la arquitectura de DataSnap hay muchas ventajas y de una u otra manera en el desarrollo de tu aplicación  puedes o no implementarlas.

Ventajas:
1. El tiempo de desarrollo es casi 5 veces más rápido que implementando SOAP o REST.

2. Puedes utilizar funciones para realizar el CRUD o puedes utilizar DataSets como en una aplicación de escritorio.

4. Te permite hacer balanceo de Carga. (también disponible en SOAP y REST)

5. Te permite trabajar en forma desconectada (stateless) pero debes implementarlo.  (SOAP y REST solo trabajan stateless).

6. TE PERMITE TRABAJAR SOBRE INTERNET, aunque parece obvio es una de las características más importantes de DataSnap.  Cuantos de ustedes todo el tiempo se preguntan ¿cómo correr una aplicación en diferentes sucursales con una sola base de datos central, utilizando DataSets por supuesto).

DataSnap tiene una tecnología que solo envía por internet las modificaciones, inserciones o borrados de un SataAet, así si tu aplicación tiene mil registros y modificaste 3, enviará por la red estrictamente lo modificado, reduciendo considerablemente el trafico por la red.

DataSnap tiene opciones de compresión de datos, lo que permite comprimir la información que viaja a través de la red de forma transparente, así las velocidades de transmisión sobre líneas de internet son bastante altas.

DataSnap permite encriptar la información desde la fuente directamente hasta el final, lo que te ofrece seguridad adicional en la transmisión de datos.

DataSnap permite el uso del protocolo SSL adicional a la encriptación mencionada anteriormente, lo que te permite doble seguridad de transmisión de datos.


7. Finalmente DataSnap en las versiones XE de Delphi te permite publicar tus funciones automáticamente en REST, para aquellas plataformas que no tengan soporte de DataSnap directamente.

*---------------------------------------------------

Respondiendo concretamente a tu pregunta, ya solucionado el problema de la unicidad de la base de datos, Tu debes implementar una estrategia de selección del servidor a la hora de conectarte,  ya sea preguntándole a todos los servidores su estado de carga o número de conexiones que presenta,  o seleccionando de la lista uno aleatoriamente, o cualquier estrategia que se te ocurra.

Lo que si veo es que si tienes solamente 3 sedes,  cada una con una conexión a internet compartida (redes de hogar) de apenas 2 Mb de ancho de banda y un servidor con un buen ancho de banda, perfectamente puedes conectar 100 clientes a un solo servidor DataSnap y a una base de datos, sin ningún problema, en aplicaciones normales no intensivas.

Saludos.

  • 0

#3 giulichajari

giulichajari

    Advanced Member

  • Miembros
  • PipPipPip
  • 477 posts

Posted 20 December 2014 - 05:48 PM

Gracias por responder, entonces dejaria una sola base de datos, eso es correcto, y trabajaria con stateless, voy a averiguar del mismo. Y al ser una sola bd no es necesaria la lista de servidores porque todo se realiza sobre una sola bd.

Muchas gracias
  • 0

#4 genriquez

genriquez

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 539 posts
  • LocationCali, Colombia

Posted 20 December 2014 - 09:26 PM

Hola

La lista de servidores es en caso que pierdas una conexión al servidor de aplicaciones, no al servidor de BD.  eso se utiliza para cuando requieres tener varios servidores de aplicaciones, ya sea para balance de carga, redundancia en caso de caídas del servicio de internet y cosas así.

En tu caso que es una aplicación  para muy pocas sedes o pocos dispositivos, no le vería problema en tener un solo servidor y por ahora no te compliques con el stateless, pues si se pierde la conexión simplemente se conectan y realizan nuevamente la operación.

Lo que si te recomiendo es que no intentes utilizar transacciones desde un cliente datasnap (Ni siquiera se si se puede hacer. jeje),  en el caso que requieras hacer una transacción, recopila toda la información y la envías a un procedimiento, dentro del cual haces todas las operaciones en el servidor y allí si puedes manejar la transacción.

cualquier inquietud, no dudes en preguntar.

Saludos.
  • 0

#5 giulichajari

giulichajari

    Advanced Member

  • Miembros
  • PipPipPip
  • 477 posts

Posted 28 December 2014 - 05:38 PM

Bueno pues en mi caso lo que hago en las 3 sucursales es solo vender articulos y hacer el ticket, osea que conla lista de productos y clientes actualizadas es suficiente.

Podria guardar un archivo para productos y otro de clientes para no tener la bd completa o el esquema de la bd en un servidor dentro de cada sucursal, para que esto este actualizado, podria bajar la lista la primera vez del dia que se conecta la aplicacion.

El problema de pretender volver a conectar como decis es que el internet se puede cortar 2 o 3 dias. por lo menos en mi ciudad.

Pero indudablemente que tener una bd en cada lugar es mejor, pero debo implementar una lista de servidores para ir levantando datos.

Gracias por tu recomendacion.
  • 0

#6 giulichajari

giulichajari

    Advanced Member

  • Miembros
  • PipPipPip
  • 477 posts

Posted 01 January 2015 - 07:37 AM

Hola

La lista de servidores es en caso que pierdas una conexión al servidor de aplicaciones, no al servidor de BD.  eso se utiliza para cuando requieres tener varios servidores de aplicaciones, ya sea para balance de carga, redundancia en caso de caídas del servicio de internet y cosas así.

En tu caso que es una aplicación  para muy pocas sedes o pocos dispositivos, no le vería problema en tener un solo servidor y por ahora no te compliques con el stateless, pues si se pierde la conexión simplemente se conectan y realizan nuevamente la operación.

Lo que si te recomiendo es que no intentes utilizar transacciones desde un cliente datasnap (Ni siquiera se si se puede hacer. jeje),  en el caso que requieras hacer una transacción, recopila toda la información y la envías a un procedimiento, dentro del cual haces todas las operaciones en el servidor y allí si puedes manejar la transacción.

cualquier inquietud, no dudes en preguntar.

Saludos.


Otra cosa importante: se puede usar base de datos NoSQL con delphi,para esta situacion?
  • 0

#7 chaja

chaja

    Advanced Member

  • Miembros
  • PipPipPip
  • 54 posts

Posted 05 January 2015 - 08:31 PM

genriquezi.
Como estas, estaba re leyendo todo este post, y me surge la pregunta, de como hacer cuando se me cae internet o la coneccion del cliente con el servidor de DN, como hacer para retomarla. Te cuento, tengo un caso similiar de una casa ctral y por ahora son tres sucursales. Despues de varias modificaciones, saque el manejo de las transacciones desde el cliente gracias a un post que encontre de
http://marcosalles.w...o-com-datasnap/
en el cual explica como hacer una actualizacion de dataset.
Pero me encontre en la transmision de datos haciendo un ping al servidor, que a veces tengo microcortes, no es mu seguido pero hay veces que me entorpece la coneccion y cuando se corta el cliente queda fuera de alcance con el servidor y me quedan operaciones sin concluir. No se como hacer para que el operador lo resuelva. Ademas cuando se corto el enlace cualquier operacion con el servidor me tira una exepcion y no me deja cerrarlo.
Otra cosa he visto que los recursos en el servidor donde corre el Servidor dataSnap, cuando se conecta un cliente, esto sube, es logico. Pero si se desconecta no se re acomodan, o por lo menos los recursos de memoria siguen igual tomados.
En fin me estoy complicando mas de lo que pense que me hiba aliberar de los lios de manejo de las suc. Cuando esta todo que aparentemente las conecciones son estables, anda todo bien, pero cuando se me cae una suc. parece que les pasa a las tres juntas.
En fin no se como hacer que esos sucesos los pueda controlar. Lo de la unidad que encontre me resolvio gran parte. Pues antes iniciaba y confirmaba las tx desde el cliente , ahora no mando los 5 CientDataSet y genero en el servidor la transaccion, pero no se si se satura el mismo o no, si el mismo va sacando la basura de las tx.
Me gustaria saber como haces tu para el manejo de las 100 sucursales. Mi caso piensan abri antes de mitad de año tres suc. mas y si me complica con tres no se que hare con 6.
Agradeceria que me  orientes, con algun ejemplo practico si es posible o con algunos tips.
Te cuento estoy con Delphi XE5, Interbase/Firebird.
El servidor data sanp tiene un soloSQLConnection y hay varios servermodule (cinco) que dicho sea de paso no me permite agrgar mas, ya que cuando quiero instertar otro no me aparece el icono en File->New->Other->DataSnap Server> ServerModule.
Gracias
Luis Roldan
Mar del Plata
Argentina
  • 0




IP.Board spam blocked by CleanTalk.