Introducción a Distribuidos: Tendencias. Definición. Áreas de Aplicación. Características. Flashcards
(28 cards)
Qué mostró la ley de Moore?
Se creía que nos garantizaba performance por la progresión de los transistores.
No fue asi por los clocks, y se empezó a estancar la performance aunque crecían los transistores.
Qué pasa con las computadoras en cuanto a tendencias?
Las computadoras ya no conducen el movimiento. Se estancó la cantidad de PCs. IoT crece exponencialmente en los últimos años. Compro una lámpara con wifi, etc.
Cómo surge la necesidad de sistemas distribuidos?
Cobran gran relevancia debido al constante crecimiento del nivel de integración
e interdependencia entre sistemas, volúmenes de datos a procesar,
capacidades de cómputo, paralelismo y virtualización.
En qué se encuentran presentes los sistemas distribuidos?
- Big Data
● Data Analytics
● Scalable Architectures
● Elastic Architectures
● Machine Learning
● Internet of Things (IoT)
● Wearables
● High Performance Computer
Qué arquitecturas de comunicación hay?
Cliente Servidor: el servidor no nos conoce
Peer to peer: uno a uno
Heterogeneos: Hay asimetrias en las jerarquías. Algunos saben quienes lo llamó y algunos no
Cómo se definen los sistemas distribuidos según Tanenmaun?
“Colección de computadoras independientes que el usuario ve como un solo
sistema coherente”
Cómo se definen los sistemas distribuidos según Couloris?
“Es un sistema de computadoras interconectadas por una red que se
comunican y coordinan sus acciones intercambiando mensajes”
Cómo se definen los sistemas distribuidos según Lamport?
“Aquel en el que el fallo de un computador que ni siquiera sabes que
existe, puede dejar tu propio computador inutilizable”
DEFINICION IMPORTANTE
Cuáles son los parámetros para diseñar sistemas distribuidos?
- Transparencia: cuanto muestro y cuanto oculto
- Tolerancia a fallos: Availability, reliability, safety, maintainability
- Acceso a recursos compartidos: Cómo, donde
- Sistemas distribuidos abiertos: Interfaces, interoperatibilidad, portabilidad
- Escalabilidad
Qué variantes de multiprogramación hay?
Multithreading: varios threads que comparten memoria, 1 proceso
Multiprocessing: varios procesos que tienen memoria separada pero misma compu
multicomputing: unidades de computo separadas. LA MATERIA SE ENFOCA EN ESE
Qué modelos hay para sistemas distribuidos?
-Modelo de Estados
(interleaved model)
-Modelo de Eventos
(happened before)
Cuál es la diferencia entre concurrencia y paralelismo?
Paralelo: Dos procesos ocurren a la vez. No hablan entre ellos y no comparten un recurso.
Concurrente: Comparten un recurso por lo cual no ocurren exactamente a la vez.
El mejor escenario es paralelo pero no siempre es posible.
Qué tipos de topologias hay?
Bus,
star: un central
Tree:hay una jerarquía
mesh: todos con todos
sequential: tenemos que pasar por todos
ring: Se usa bastante porque tiene algunos algoritmos
Cuál es la diferencia entre sistemas centralizados y distribuidos?
Centralizados
Sin conexiones
Con conexiones pero:
● Sin trabajo colaborativo
● Sin un objetivo común
● Sistemas de tiempo compartido
● ‘Terminales de conexión’
Muy difíciles de escalar:
● CPUs, Memoria, HD
Distribuidos
Componentes conectados y:
● realizando trabajo colaborativo
● buscando un objetivo común
Escalan distribuyendo trabajo y
recursos:
● Nodos, regiones, canales
Cuáles son las ventajas de centralizar?
Control: lógica de control muy simple, efectiva y, en ocasiones, eficiente.
● Homogeneidad: la centralización incita a definir estándares para
software y hardware.
● Consistencia: es posible definir fuertes políticas de consistencia de
información y monitoreo del estado global del sistema.
● Seguridad: se disminuye la ‘superficie de ataque’ frente a amenazas.
Cuáles son las ventajas de distribuir?
Disponibilidad: aún frente a fallos aislados, el sistema general puede
prestar servicios.
● Escalabilidad: mejores alternativas de adaptarse a nuevas escalas
● Reducción de Latencia: al favorecer principios de localidad de recursos.
● Colaboración: permite interacciones entre sistemas de forma orgánica y
natural.
● Movilidad: no están circunscriptos al alcance de un único computador.
● Costo: componentes más simples. Subsistemas delegados en servicios
terceros.
En qué se diferencia centralizar, descentralizar y distribuir?
Centralizar implica la concentración de la autoridad en los niveles más altos
de un jerarquía.
Descentralizar implica transferir la toma de decisiones a eslabones inferiores
de cierta organización.
Distribuir implica utilizar un modelo descentralizado de control de
computadoras para la coordinación de actividades con una coherencia dada.
Qué dice la ley de conway? en qué repercute?
“Cualquier organización que diseñe un sistema, inevitablemente
producirá un diseño cuya estructura será una copia de la estructura de
comunicación de la organización”
Este enunciado fue demostrado empíricamente en distintos relevamientos
de arquitecturas de software corporativo.
● Corolario: diseñamos de acuerdo a lo que conocemos y estamos
acostumbrados a hacer en el día a día.
● No es necesariamente negativo: en su trabajo, el hombre tiende a
encontrar soluciones distribuidas y paralelas eficientes (minimizan costo,
energía, tiempo, etc.)
de qué surge la virtualizacion?
Necesidad de independencia real de los recursos ○ Seguridad en el acceso ○ Diferenciación entre instrucciones con
privilegios vs sin privilegios.
En qué se diferencia un container y una maquina virtual?
Diferencia entre container y maquina virtual: No tenemos multiples guest os. Usamos un container engine q usar nuestro mismo kernel. Es más optimo porque No emulamos el procesador entero
Cómo surge docker?
Desarrollado en Golang
● Primera versión estable en 2013
● Basado fuertemente en features provistos
por el kernel del OS y el Hypervisor:
○ Linux: cgroups, namespaces, union mount
○ Mac: recientemente soportado con HyperKit
○ Win: recientemente soportado con Hyper-V (*)
● Rápida adopción por parte de la industria
○ Kubernetes, AWS, GCP, Azure, etc. soportan Docker
Qué necesita docker del SO para funcionar?
Namespaces: Aislamiento de Recursos
○ NET (Network Stack)
○ PID (Procesos)
○ MNT (Mount)
○ IPC (Semáforos, Shared Memory, etc.)
○ USER (user and group ids)
● Cgroups: Seguridad y administración
de recursos
● Union Mount: Múltiples directorios
vistos como uno
Qué compone el engine de docker?
Docker Daemon
○ Manejo de todos los recursos (images,
containers, volumes, network, etc.)
○ Nueva funcionalidad a través de
Plugins (Ej. convoy)
● Docker REST API
○ Sumamente flexible
○ Fácil crear nuevos clientes con
funcionalidades específicas
● Docker CLI
○ Acceso REST API a través de unix socket
○ Gran cantidad de comandos disponibles
Qué es una imagen de docker?
Bloques estáticos construidos a través de Dockerfiles
○ Distros de Linux proveen base Images (Ubuntu, Debian,
Centos, Alpine, etc.)
○ Se pueden reutilizar para construir nuevas Images