Você está na página 1de 6

ESCUELA POLITÉCNICA NACIONAL

FACULTAD DE INGENIERÍA DE SISTEMAS


INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN

Proyecto de: SIC 616 – COMPUTACIÓN DISTRIBUIDA

Proyecto No.: 3

Tema: Arquitectura Cliente - Servidor

Nombres: Guerrero Alexis Fecha: 19/07/2018


Cargua Ronald

1. Objetivos:

1.1. Objetivo General


Implementar un sistema de tipo bancario que abarque los principales
paradigmas y algoritmos de la arquitectura distribuida cliente – servidor.

1.2. Objetivos Específicos


Implementar un algoritmo común en los hosts de tipo cliente que permita
realizar consultas CRUD.

Modelar una base de datos que contenga datos bancarios de distintos usuarios.

Aplicar algoritmos para servidor front end y servidor back end.

Reforzar conocimientos acerca de networking y librearías multithread para


programación.

2. Marco teórico:

Computación distribuida y sistemas distribuidos.

La computación distribuida o informática en malla (grid) es un modelo para resolver


problemas de computación masiva utilizando un gran número de ordenadores
organizados en clústeres incrustados en una infraestructura de telecomunicaciones
distribuida [1].

Un sistema distribuido se define como una colección de computadoras separadas


físicamente y conectadas entre sí por una red de comunicaciones; cada máquina
posee sus componentes de hardware y software que el programador percibe como
un solo sistema (no necesita saber qué cosas están en qué máquinas). El
programador accede a los componentes de software (objetos) remotos, de la misma
manera en que accedería a componentes locales, en un grupo de computadoras que

Página 1 de 6
usan un middleware entre los que destacan (RPC) y SOAP para conseguir un
objetivo.
Los sistemas distribuidos deben ser muy confiables, ya que si un componente del
sistema se descompone otro componente debe ser capaz de reemplazarlo. Esto se
denomina tolerancia a fallos.
El tamaño de un sistema distribuido puede ser muy variado, ya sean decenas de
hosts (red de área local), centenas de hosts (red de área metropolitana), o miles, o
millones de hosts (Internet); esto se denomina escalabilidad [1].

Arquitectura Cliente – Servidor

La arquitectura cliente-servidor modelo de diseño de software en el que las tareas se


reparten entre los proveedores de recursos o servicios, llamados servidores, y los
demandantes, llamados clientes. Un cliente realiza peticiones a otro programa, el
servidor, quien le da respuesta. Esta idea también se puede aplicar a programas que
se ejecutan sobre una sola computadora, aunque es más ventajosa en un sistema
operativo multiusuario distribuido a través de una red de computadoras.
Algunos ejemplos de aplicaciones computacionales que usen el modelo cliente-
servidor son el Correo electrónico, un Servidor de impresión y la World Wide Web [2].

Servidor: rol que desempeña un equipo ofreciendo un conjunto de servicios a los


clientes, tales como manejo de archivos, impresión, páginas web, direccionamiento
de correo electrónico, actualización de BD y control de acceso [3].

Cliente: rol que desempeña un equipo demandando servicios de los servidores, pero
también puede realizar procesamiento local, tales como
desplegar páginas web, mostrar ventanas y generar correo electrónico [3].

Eventualmente un equipo puede cumplir los dos roles a la vez [3].

3. Desarrollo del proyecto:

3.1. CONFIGURACIÓN DEL AMBIENTE DE PRUEBAS

Nombre Características
1 SISTEMA OPERATIVO Ubuntu 16.04 LTS, Ubuntu Mate 10.2.5
2 HARDWARE Laptop Dell 3467 Core i5 2.5 Ghz 8 Gb ram
Laptop Alienware r4 17 Core i7 3.0 Ghz 16 Gb
ram
Raspberry pi 3 B quad-core 2 Ghz 1 Gb ram
3 SOFTWARE VirtualBox 10.2.16
No Machine
Visual Studio Code
Gedit
Python 3
Mysql Server Workbench

Página 2 de 6
ESCUELA POLITÉCNICA NACIONAL
FACULTAD DE INGENIERÍA DE SISTEMAS
INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN

3.2. DISEÑO DEL SISTEMA DISTRIBUIDO


El sistema en primera instancia tiene la arquitectura distribuida de Cliente
– Servidor y como modelo Vista – Controlador. La comunicación entre los
distintos componentes del sistema se dará mediante el uso de sockets
TCP.

CLIENTE
- El o los computadores clientes únicamente enviarán consultas al
servidor FrontEnd, de manera que el cliente pueda recibir el resultado
de la consulta realizada.

Dos computadores clientes: Ubuntu 16.04 (1) y Raspberry pi

SERVIDOR FRONT END


- Este servidor se encargará de receptar las consultas enviadas por los
clientes, de manera que pueda enviar cada una de las consultas
recibidas a los servidores back end del sistema. Este servidor debe ser
concurrente y aceptar peticiones de todos los clientes, lo cual implica
que el servidor debe ser multihilado. Además, como se mencionó
anteriormente, el servidor front end actuará como cliente del servidor
back end.

Un servidor front end: Ubuntu 16.04 (2)

SERVIDOR BACK END


- Este servidor se encargará de procesar las consultas enviadas por el
front end, con el fin de poder recuperar los datos pertinentes a la
consulta enviada de la base de datos. Consecuentemente, el back end
no necesita ser un servidor concurrente ni multihilado.

Dos servidores back end: Ubuntu 16.04 (3) y Ubuntu 16.04 (4)

SERVIDOR DE BASE DE DATOS


- Este servidor únicamente deberá albergar la base de datos que
almacena la información bancaria de los usuarios existentes.

Un computador servidor de DB: Ubuntu 16.04 (5)

Página 3 de 6
(1) CLIENTES

(2) FRONT - END

(3) (4) BACK -END

(5) SERVIDOR DE BASE DE DATOS

Esquema físico del Sistema Distribuido

3.3. DISEÑO DE ALGORITMOS DE SISTEMA DISTRIBUIDO

ALGORITMO CLIENTE

socket = socketCliente()

try:
socketCliente().connect(direccionFrontEnd, puertoFrontEnd)
exception:
print('No se puedo conectar cliente a front end')

while: true

socketCliente().send(tipoTransaccion)

socketCliente().recv(respuestaBackEnd)

socketCliente().close

ALGORITMO FRONT END

colaConsultas

def fEndServer():

socket = socketFrontEndServidor()

Página 4 de 6
ESCUELA POLITÉCNICA NACIONAL
FACULTAD DE INGENIERÍA DE SISTEMAS
INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN

socketFrontEndServidor().bind(direccionFronEnd, puertoFrontEnd)
socketFrontEndServidor().listen(10)
socketFrontEndServidor().aceppt(direccionClientes)

while true:

socketFrontEndServidor().recibir(consulta)
colaConsultas.append(consulta)

conexion.close()

def fEndClient():

socket = socketFrontEndCliente()

try:
socketFronEndCliente().connect(direccionBackEnd, puertoBackEnd)
exception:
print('No se puedo conectar cliente a fback end')

while: true

socketFronEndCliente().send(getOut(colaConsultas))

socketFrontEndCliente().recv(respuestaBackEnd)

socketCliente().close

ALGORITMO BACK END

socket = socketBackEnd()

socketBackEnd().bind(direccionBackEnd, puertoBackEnd)
socketBackEnd().listen(1)
socketBackEnd().accept(direccionFrontEnd)

socketBackEnd().recv(consulta)

switch consulta:

case 'C':
print 'CONSULTA'
sendToDatabase.consulta

case 'D'
print 'DEPOSITO'
sendToDatabase.deposito

Página 5 de 6
case 'R'
print 'RETIRO'
sendToDatabase.retiro

case 'U'
print 'ACTUALIZACION'
sendToDatabase.update

socketBackEnd.send(respuesta)
scoektBackEnd.close

MODELO BASE DE DATOS

4. Conclusiones y recomendaciones:

 Se logró implementar el sistema con los componentes previstos.


 El sistema se inclina hacia la arquitectura cliente – servidor de manera bastante
buena.
 El realizar un sistema bancario con este tipo de paradigma es bastante servicial,
aunque se debería usar otro tipo de protocolos más direccionados a la capa
aplicación.
 Es mejor trabajar con sistemas operativos de tipo open source debido a su
facilidad en el uso de sockets.

5. Bibliografía:
[1]"Computación distribuida", Es.wikipedia.org, 2018. [Online]. Available:
https://es.wikipedia.org/wiki/Computaci%C3%B3n_distribuida. [Accessed: 19- Jul-
2018].

[2]"Cliente-servidor", Es.wikipedia.org, 2018. [Online]. Available:


https://es.wikipedia.org/wiki/Cliente-servidor. [Accessed: 19- Jul- 2018].

[3]Ocw.pucv.cl, 2018. [Online]. Available: http://ocw.pucv.cl/cursos-1/arquitectura-de-


sistemas-de-software/materiales-de-clases/web-cliente-servidor. [Accessed: 19- Jul-
2018].

Página 6 de 6

Você também pode gostar