Clase Seis

SISTEMAS DISTRIBUIDOS




OBJETIVO GENERAL


Analizar las diferentes tecnologías orientadas a objetos distribuidos, su funcionamiento, la 
importancia del manejo de procedimientos remotos a través de la red, utilizando Servidores o 
estaciones de trabajo y el estado remoto.

OBJETIVOS ESPECÍFICOS


Aplicar los conceptos de los diferentes sistemas distribuidos de una red.
Conocer y establecer el concepto de llamadas a procedimientos remotos.
Aplicar y analizar los objetos distribuidos.
Identificar las diferentes tecnologías de desarrollo Web.

Introducción y desarrollo de los Sistemas Distribuidos


Los sistemas desde sus inicios han tenido algunos cambios, desde los primeros ordenadores de gran tamaño y poca capacidad, hasta los actuales, ya sean portátiles o de sobre mesa, que tienen mayor capacidad que los primeros y que están más dedicados a las labores cotidianas.

La mayoría de cambios es atribuida principalmente a dos causas, que se dieron desde la década del 70.

El desarrollo de los microprocesadores que permitieron la reducción de tamaño y costos, que 
permitieron a su vez el aumento de capacidades y el acceso a personas.

El crecimiento y desarrollo de las redes de área local y de las comunicaciones, las cuales 
permitieron la conexión entre ordenadores, permitiendo transferir datos a altas velocidades.

Es en este contexto en el que nace el concepto de “Sistemas Distribuidos”, el cual ha alcanzado mucha popularidad y que tiene como objeto de estudio las redes como por ejemplo: Redes de teléfonos móviles, internet, redes de empresas, redes corporativas entre otros.


Que son Sistemas Distribuidos


Los sistemas distribuidos, son sistemas cuyos componentes hardware y software, están 
conectados en red, estos se comunican y coordinan sus acciones utilizando mensajes, para lograr un objetivo específico. Para ello, se establece una comunicación utilizando un protocolo prefijado por un esquema Cliente-Servidor.

Estos poseen muchas características pero las principales son:

  • Concurrencia: la cual consiste en que los recursos de la red puedan ser utilizados simultáneamente por los usuarios y/o agentes que estén interactuando en la red.

  • Carencia de Reloj Global: Básicamente indica que no existe un reloj de sistema que restrinja el tiempo de envío de mensajes entre los diferentes componentes, para llevar a cabo la realización de una tarea.

  • Cada elemento tiene su propia Memoria y su propio sistema operativo

  • Plataforma no estándar

  • Capacidad de procesamiento en paralelo

  • Dispersión y Parcialidad


Los sistemas distribuidos se han visto afectados principalmente por los siguientes factores:

  • Avances Tecnológicos

  • Nuevas necesidades a cubrir

  • Alianzas

  • Crecimiento empresarial

  • Innovación

  • Comunicación

  • La globalización

  • Necesidades de integración

  • Aspectos culturales


Los sistemas Distribuidos, como todos los sistemas tienen sus ventajas y sus desventajas.

Ventajas:

  • Procesadores más poderosos y menos costosos

  • Avances en la tecnología de Comunicaciones

  • Facilidad de Compartir Recursos

  • Eficiencia y flexibilidad

  • Disponibilidad y Confiabilidad

  • Crecimiento modular

Desventajas:

  • Requerimientos de mayores controles de procesamiento

  • Velocidad de propagación de información

  • Servicio de replicación de datos y servicios con posibilidades de fallas

  • Mayores controles de acceso y procesos

  • Mayor complejidad en la administración

  • Mayores costos
Existen varios modelos de Sistemas Distribuidos

Existen Varios modelos en los cuales se puede categorizar los sistemas distribuidos, los más 
comunes son:

  • Modelo de Microcomputadoras

  • Modelo de estación de trabajo

  • Modelo de microprocesadores en Pooling


Modelo de Microcomputadoras


Esta consiste en varias microcomputadoras, las cuales soportan diferentes usuarios por cada 
equipo, y cada equipo provee acceso a recursos remotos (Usuario > CPU)



Este modelo consiste en tener varias estaciones de trabajo, por lo general son cientos de 
estaciones, y se asigna un procesador para cada usuario (Usuario=Procesador), por tal razón las cada estación de trabajo cuenta con interfaces gráficas, CPU potentes y memoria Propia.


Básicamente se trata de utilizar uno o más procesadores, dependiendo de las necesidades del usuario, en donde los procesadores completan su tarea y posteriormente entran en un estado de ocio hasta que el usuario necesite una nueva tarea, por lo regular el número de procesadores, es mayor a uno por usuario (Procesador > Usuarios).


En algunos casos no basta con simplemente tener una Distribución de sistemas Físico, para que esto esté completo, también hace falta un sistema operativo Distribuido, que se adueñe de la red para facilitar el uso de los recursos físicos en las diferentes equipos que conforman la red.

Los sistemas Operativos Distribuidos brindan las siguientes Características:

  • Debe ser similar el trabajo en el sistema centralizado para cada usuario

  • Se ejecuta en múltiples equipos de trabajo

  • Maneja varias copias del mismo sistema operativo o de diferentes S.O, que proveen los mismos Servicios.

  • Es transparente al usuario, excepto, porque el acceso remoto y el uso de múltiples procesadores, debe ser invisible al usuario, por razones de seguridad.


Llamadas a Procedimientos Remotos


Llamar a los procedimientos remotos, consiste en intentar que los programas puedan llamar 
procedimientos localizados en otras máquinas de la misma forma como se hace la llamada a un procedimiento Local.

Es decir, Cuando un proceso en un equipo “X”, llama a un procedimiento en el equipo “Y”: el 
proceso que realiza la llamada desde “X” se suspende, y la ejecución del procedimiento se hace en “Y”, por esta razón la información se puede pasar de un proceso a otro como parámetros, y regresar como resultado de procedimientos.


Ventajas:


  • Una de las más grandes ventajas es que permite resolver muchos problemas, pues ambos están en espacios de direcciones Distintos, mejora la transferencia de resultados y los parámetros, además que se vuelve heterogénea, en caso de que ambas maquinas tengan arquitectura diferente., además es más fácil la localización y selección de servicios, y por consiguiente mejora en el aspecto de seguridad.

  • Otra de las grandes ventajas que ofrece los RPC es la Automatización, gracias a esta se agiliza más en los procesos, proporcionando mejor rendimiento.

  • Ayuda a la transparencia de distribución, pues este esconde el código de red e los stubs de cliente y servidor.

  • Protege la aplicación de los detalles de red, como: control de flujo, temporizadores, Sockets, orden de los bytes, entre otros.

  • Permite seleccionar las llamadas locales a procedimientos, según la localización del procedimiento llamado.


Plataformas de llamadas a procedimientos remotos (RPC)

OSF/DCE (Distributed Computing Environment) - Sistema de software para computación 
distribuida

ONC RPC - Protocolo de llamadas a procedimientos remotos
Servicios sobre llamadas a Procedimientos Remotos



Objetos Distribuidos

Los objetos distribuidos Surgen de aplicar los conceptos de RPCs al paradigma de la orientación a objetos.

Un objeto distribuido es aquel que se encuentra gestionado por un servidor y sus clientes invocan sus métodos utilizando un método de invocación remota.

El método es invocado mediante un mensaje al servidor que sirve para gestionar el objeto, se 
ejecuta el método del objeto en el servidor y el resultado se devuelve al cliente en otro mensaje.

Tecnologías orientadas a los objetos distribuidos

Las tecnologías de distribución de objetos o DOT, permiten la distribución de objetos entre 
clientes y servidores, la función de cada uno es la siguiente:

Clientes: Son los encargados de invocar los objetos.

Servidores: Son los que tienen por tarea, implementar los objetos.

Los aplicativos tienen la propiedad de poder exportar su funcionalidad en forma de objetos, y las aplicaciones interactúan también en forma de invocadores a distancia de métodos pertenecientes a objetos.

Las tres tecnologías más importantes en el medio y que por consiguiente son las más usadas son:

RMI (Remote Involucation Method): este fue el primer fremework para crear sistemas distribuidos de java. Este permite a un objeto que se está ejecutando en una Máquina Virtual Java, llamar a métodos de otro objeto que está en otra Máquina Virtual diferente. Esta asociación se hace entre objetos creados en Java.

DCOM (Distributed Component Object Model): El Modelo de Objeto Componente Distribuido, 
normalmente está incluido en los sistemas operativos de Microsoft. Es un juego de conceptos e interfaces de programa, en el cual los objetos de programa del cliente, pueden solicitar servicios de objetos de programa servidores en otros ordenadores dentro de una red.



Un ejemplo muy claro de objeto distribuido es una base de datos Distribuida, la cual está 
construida sobre una red y pertenece lógicamente a un sistema distribuido, la base de datos 
distribuida es como una unidad virtual cuyas partes se almacenan físicamente en varias bases de datos “reales” distintas ubicadas en diferentes sitios.

Introducción y Conceptualización a las Tecnologías de Desarrollo en
Web


Se trata de un conjunto de tecnologías de software de los sistemas Cliente-Servidor con 
representación remota. En este sistema se dispone de un protocolo estándar HTTP y un 
Middleware denominado WebServer. El desarrollo web, involucra una enorme combinación de procesos de bases de datos con el uso de un navegador en internet con el fin de llevar a cabo ciertas tareas o incluso mostrar información.

En la actualidad existen algunas tecnologías especializadas en el desarrollo web como son:
CGI: Common Gateware Interface: estos son programas que se ejecutan en el servidor, los cuales pueden servir como pasarela con una base de datos o alguna aplicación, con el fin de generar los documentos en formato HTML de forma automática. Estos son independientes del Sistema Operativo, lo cual brinda una gran ventaja, dado que un programa escrito en un lenguaje cualquiera, es fácil adaptarlo a un CGI. Para esto el lenguaje más utilizado en el desarrollo de CGIses Perl

Servelets: Se trata de programas en java que son ejecutados de forma constante en el servidor, por esta razón tiene una activación muy rápida y una forma más simple de hacerlo. La función de estos programas es procesar una petición y generan la página de respuesta.

ASP (Actie Server Pages): se trata de un fichero de texto, el cual está compuesto por las diferentes secuencias de comandos, junto con el código HTMl necesario y se guarda con la extensión “.asp” JSP Java Server Pages: se trata de pequeños trozos de código en Java los cuales son insertados en las páginas web, de forma análoga a los ASPs, la ventaja que presentan frente a los ASPs, es que son independientes del sistema operativo y del procesador de máquina.

PHP: lenguaje en el cual los programas se insertan también dentro de las páginas web, es muy simple de usar y es muy fácil acceder a las bases de datos desde este lenguaje.

En el desarrollo de aplicaciones web el sistema de bases de datos más utilizado es Mysql, el cual se presta mucho para ser invocado desde lenguajes como PHP, esta combinación hace del desarrollo web algo mucho más ágil y rápido, además que se cuenta con la robustez del Sistema de bases de datos Mysql, el cual es uno de los más utilizado para grandes proyectos de desarrollo de software y manejo de grandes bases de datos.

Para el desarrollo web también son muy utilizados otros sistemas de bases de datos como: 
Oracle, SqlServer, PostgreSQL, Firebird o HSQL

Por razones como esta un programador web debe conocer por lo menos un lenguaje de 
programación y manejar un sistema de base de datos.

Las aplicaciones web, generan una serie de páginas en formato estándar como HTML y XHML, soportado por los navegadores web más comunes, para ello se utilizan lenguajes interpretados en el lado del cliente, Directamente a través de Plugins como JAVA, Flash, JavaScript, entre otros, para poder añadir elementos dinámicos a la interfaz de usuario. Durante cada sesión el navegador 

web interpreta y muestra en pantalla las paginas, actuando como cliente para cualquier aplicación web.

Interfaz

En las aplicaciones web la interfaz gráfica presenta muchas limitaciones para el usuario final. Por razones como estas, los desarrolladores web por lo regular usan lenguajes interpretados o Scripts, en el lado del cliente, esto con el fin de añadir más funcionalidades, todo esto se hace con el fin a ofrecer una experiencia más interactiva, que no requiera estar recargando la página.

Consideraciones Técnicas

Las aplicaciones web se escriben una vez y se ejecutan igual en todos los sistemas operativos, pero también existen algunas excepciones o aplicaciones inconsistentes escritas con HTML, CSS, DOM y otras especificaciones estándar para navegadores web que pueden causar problemas en el desarrollo y soporte de las aplicaciones, debido a la falta de adicción de los navegadores a dichos estándares web (especialmente versiones de Internet Explorer anteriores a la 7.0).

Estructura de las Aplicaciones Web

Una aplicación web está estructurada como una fuente de tres capas. En su forma más común es que el navegador web ofrece la primera capa y un motor capaz de usar la alguna tecnología web dinámica como por ejemplo. PHP, ASP.NET, Python entre otros. Esta constituye la capa del medio. 

Y posteriormente la base de datos es la que constituye la última capa.
El navegador web manda peticiones a la capa de enmedio que ofrece servicios valiéndose de consultas y actualizaciones a la base de datos y a su vez proporciona una interfaz de usuario.

Las principales ventajas de las aplicaciones Web son:

  • Solo necesitan un navegador actualizado para funcionar, por esta razón no habrá problemas de compatibilidad.

  • Consume pocos recursos de sistemas

  • Ahorra tiempo.

  • No ocupan espacio en nuestro disco Duro

  • Seguridad contra Virus

  • Tiene más Disponibilidad

  • Multiplataforma, pues este solo necesita el Navegador y no le interesa que sistema operativo maneje.


Desventajas:

  • Por lo regular suele ofrecer menos funcionalidades que las aplicaciones de escritorio.

  • La disponibilidad depende de un tercero, en este caso el que provee las conexiones a internet y el enlace al servidor de la aplicación y el cliente.

No hay comentarios:

Publicar un comentario