[Música] é bom olá sejam bem-vindos aula de número onda e sistemas distribuídos onde inicialmente eu vou apresentar rapidamente a disciplina e falar o que vocês vão assimilar o que vocês vão aprender antes de falar o que vocês vão aprender obviamente vocês vão prender a os estão distribuídos os conceitos os tipos de sistemas distribuídos às implementações as principais arquiteturas é assim que nós arquitetura sair de camadas protetoras que existem como de componentes eventos e dados e também com os processos distribuídos eles se comportam se vocês forem ver essa disciplina é uma junção de duas disciplinas que
foram ministradas anteriormente à disciplina sistemas operacionais ea disciplina de redes de computadores nesse cenário aqui processo de fred que vocês estão vendo são um assunto que a gente viu na disciplina e de sistemas operacionais então a junção desses é dessas duas disciplinas no contexto aí de um ambiente aí distribuído na boate vai falar também de nomeação de entidades estão distribuídos assim como a sincronização de processos e fredes e relógios de sistemas distribuídos finalmente a gente vai é falar também abordar o assunto aí de consistência replicação então esses basicamente são os conteúdos não é que a
gente vai ver durante essa disciplina e de sistemas distribuídos eu já tinha falado sobre essa distribuição são distribuídos são sistemas aí que formam tá um grande sistema cujo sistema ele encontra se em execução e em computadores e máquinas diferentes sendo assim portanto essencialmente são processos e computadores existe a parte de errar andré e software que se encontra disperso ou distribuir inicialmente seria isso aí o conceito estão distribuídos então vamos lá vamos conceituar conceituar e vamos falar sobre a abordagem é que a gente vai levar nessa disciplina inicialmente a gente vai expor cada conceito modelo de
sistemas distribuídos a gente vai falar também das principais implementações aí é de sistemas distribuídos relacionados aos sete tópicos aqui que eu falei 'vai conceito a primeiro e depois a gente vai falar sobre os modelos existentes e em terceiro lugar a gente vai falar sobre as vantagens e desvantagens relacionados a cada modelo e que foi implementado inicialmente seria esse o conteúdo né based sistema de tributos que a gente vai então estudar durante as sete semanas bom inicialmente nessa aula então o que a gente vai abortar a gente vai falar é conceitual que é um sistema distribuído
de vai falar o que é um ídolo como vocês ouvem falar por exemplo plataformas como o dot net né ms como microsoft com são plataformas a ibm dor não existe o remote método invocation do java é o rpc e do c c++ que são o que são conceitos a ição implementações né que implementações aí de medo existente sair no mercado né então muita coisa que a gente vai ver aqui já existe implementado e já existe em larga escala de uso né é pelos desenvolvedores de sistemas bom a gente vai também falar sobre a transferência em
sistemas distribuídos e finalmente a gente vai abordar o assunto de escala habilidade também é bom então é relacionados ao quatro tópicos a gente vai ver vai primeiramente conceitual que é um sistema distribuído desmistificar o que seria o sistema de distribuição sistema distribuída é essencialmente o que conto falando aqui não existe a parte de hardware existe a parte de software no sistema distribuído a parte de software são que el seria essa coleção de processo e fredes que se encontram que que se encontram distribuídos em diferentes computadores e esses computadores possui que possuem comunicação aí de rede
né então isso seria o conceito sem distribuição distribuído essencialmente o que é uma coleção de computadores e nesses computadores que são independentes a equipe possui software elas tentam aparentar aos seus usuários com o sistema que é ecossistema único e coerente aí vem a história é o conceito de transparência a transparência quer dizer eu vou deixar é com que os usuários sejam iludidos como se fosse uma única máquina mas na verdade é uma coleção de computadores e dependentes que tenta então aparentar como se fosse uma única máquina um único software que que é coerente e único
como já falei pra vocês um dois dois aspectos importantes primeiro que existe aí os computadores que são independentes e quando eu digo independente essas máquinas pertence também é o que pertencem também há organizações diferentes por isso elas possuem mecanismos de administração de de rede de máquinas é diferente das outras mas que há a aparência para o usuário seria uma aparência única e coerente e aí existe o que existe o conceito de middleware né é que a gente vai também ver que seria essa camada middleware significa camada do meio a camada do meio que fica situado
entre a aplicação e o sistema operacional então muita coisa que a gente vai falar é justamente essa implementação e do medo então a gente tem aqui a implementação do middleware aqui é uma camada que se encontra entre o sistema operacional ea aplicação muita coisa que a gente vai ver está dentro desse medo é que a gente vai conseguir dar pra vocês mas antes disso vamos falar sobre os exemplos né existem vários exemplos vão mostrar a importância dessa disciplina se vários exemplos exemplos como as redes sociais que vocês utilizam era baseada é em comunicação de mensagens
na então você possa mensagem às pessoas que subscrevem o que tenham acesso à sua conta então ela elas têm como que assim como acessar as mensagens postagens que você colocou a iná no facebook assim existem vários amazon google ea yahoo facebook twitter e youtube são todos são todos exemplos de sistemas distribuídos ok mas vamos conceito a um medo que seria um mito ver né então me dizer seria o que é justamente o que eu falei pra vocês essa camada aqui do meio ela faz o que ela faz a interface entre a aplicação que se encontra
é no nível acima e e eo a camada de software se encontra no nível baixo que seria os sistemas operacionais estão aqui tem vários sistemas operacionais cujos sistemas operacionais estão instalados em cada máquina o que diferente né e essas máquinas elas pertencem a organizações diferentes então me doer seria o que seria essa camada de software vai conectar o que vai conectar programas já existentes de forma o que de forma que essa aplicação possa conversar com essa com o sistema operacional e conseqüentemente através dessa comunicação vai poder comunicar com que com a aplicação que se encontre
máquinas diferentes e assim ela faz o que ela faz um papel aí como se fosse de um corretor de imóveis com corretor de imóveis faz o que faz a interface em entre um proprietário eo inquilino que quer alugar um apartamento então quem faz essa vamos essa intermediação é justamente o conceito é 11 usasse uma entidade chamada é um broker né esse bloco significa em português um corretor então aqui a gente tem o que é que a gente tem um livro uma camada de software que serve para intermediar as aplicações diferentes e e cujas aplicações se
encontra implementação e execução e máquinas diferentes conseguindo aqui então que o medo eu já falei pra vocês eu queria só frisar pra vocês que existe o que existe a interface padrão aqui na interface padrão uma interface padrão que seja fácil de vocês entenderem não existe aqui em baixo mas interface que as interfaces mais específicas a interface serve pra quê ela serve para dizer como é que você deve interagir com as camadas software as camadas abaixo então essas interfaces específicas são interfaces que são particulares a cada ambiente se você quiser manusear as interfaces específicas você tem
que aprender por outro lado essas interfaces padrões aqui são interfaces que são únicas e sendo únicas você aprende uma vez e tem transporte seu conhecimento para diversas plataformas diferentes então a grande vantagem de você ter essas interfaces padrões são a facilidade de você manuseá las uma vez que você manusear uma vez você aprende uma única vez e transporte esse conhecimento para diversas plataformas diferentes você quer um exemplo o exemplo aí do web browser o chrome então a forma de você manusear o chrome no celular da mesma forma que você vai manusear um computador porque a
mesma forma porque eles utilizam que as utilizam as interfaces aqui padrões e as interfaces é mais específicas no celular você tem um android no celular se tenha um spa iphone enquanto que nos é em computadores você tem outros sistemas operacionais como linux windows e assim por diante bom em fazer uma descrição então entrou um sistema um sistema distribuir computação paralela era a grande diferença que existe é que enquanto uma é fortemente acoplada que o computação paralela existe o que existe uma característica é de um fracamente acoplado nesse ambiente que seria o sistema distribuído o que
seria forte fracamente acoplado né há nesse cenário aqui que a gente fala que é fortemente acoplado a uma memória por exemplo é o que ela é compartilhada com vários com vários processadores enquanto que aqui no sistema distribuído essa vamos assim s acoplamento entre máquinas é um pouco mais fraco do que em sistemas paralelos então esta seria a grande diferença entre um sistema distribuído taí uma computação paralela seria essa essa questão de ser uma ser fortemente ea outra ser francamente acoplada e também o uso compartilhado de recursos como memória nesse cenário aqui da computação paralela a
gente vai ter que ter a comunicação aqui é mais freqüente mais uma vez que ela situa a ela se situa próximo ao da outra existe o compartilhamento aqui o ver rede de comunicação é menor do que neste cenário onde essa comunicação aqui ó é tudo baseado em que tudo baseado aqui em rede e elas são independentes uma da outra e pt sim podem pertencer a organizações diferentes então seguindo nesse cenário aqui a gente tem os objetivos de um sistema distribuído já conceituou o que é o sistema distribuído a tia falou que era um medo já
mostrou exemplos de sistemas distribuídos e agora a gente vai falar rapidamente que seria o objetivo é um objetivo chave de um sistema distribuída então o primeiro seria o que o primeiro seria fazer o link entre usuários e recursos você tem usuários você tem recursos computacionais recurso sair de processos está um servidor web por exemplo a folha na folha lá folha.com.br que é um serviço de que dê notícia se eu quiser acessar esse serviço de notícias através do meu celular eu tenho que fazer o que tem que fazer acesso a ela e aí eu tenho que
eu tenho dois eu tenho um exemplo doido dois processos um processo cliente um processo servidor e esses dois processos ele se encontra o ambiente distribuído então ele faz o que eu seria distribuída faz um link entre usuários e recursos que são compartilhados a outra é outra coisa que ele faz seria o que será parte da transparência e da transparência como é como falei pra vocês é iludir o usuário de forma que ele tenha uma uma visão de que o sistema é única modalidade o sistema não é único porque eu deixo com o sistema único para
facilitar a visão aí do usuário e assim eu e luto usuário facilitando a vida é de manuseio do sistema é do próprio usuário a outra questão é que essa flexibilidade né e sistemas distribuídos eu tenho como flexibilizar e colocar a componentes colocar aí novos mecanismos sem que o usuário e saiba outra questão seria escalar habilidade que é a propriedade de eu poder aumentar facilmente aumentar e diminuir facilmente dentro desse contexto de seus distribuidores transparência vamos lá que seja essa transparência a transparecer as formas aí de ocupação é para os usuários desenvolvedores de forma a facilitar
a vida do usuário por que a gente é deseja é iludir usuário de forma que a gente tenha uma visão única né e coerente de um sistema porque dessa forma eu tenho como que tem como compartilhar os recursos recurso sair de um servidor esse servidor nesse cenário da amazon a ou da google existe o google news também ele permite o que permite que eu compartilho notícias e esse servidor de notícias é compartilhado por quem compartilhado por todas as pessoas que quer queiram acessar essas notícias nesse servidor e na realidade a transparência tão amada uma das
métricas é de 57 são distribuídos existem várias formas de até de transparência não existe transparência de acesso que seria o que são venda que aqui é tudo que é tudo o que o tal oculta oculta não ocultar o que ocultar a forma as diferenças é a diferença maneira de apresentação de dados no caso de transportes de acesso de forma que eu tenho que o único recurso aí sendo sendo acessado mas que ele tem a ilusão aí de que de acessar um esse único recurso mesmo que esses recursos tenham diferentes implementações e formas de representação e
assim vai localização migração relocação replicação e até a falha que seria essa falha aqui seria o que é que seria ocultar a falha mesmo que ocorra a falha o sistema é capaz de que eu sei o que esse resiliente o o suficiente e se levantar a despeito do que a despeito da falha que esse sistema possa vir encontrar então isso é o que é isso é a forma de ocultar a falha de forma que o usuário não vai enxergar falha o que ele pode enxergar é o sistema está um pouco lento ficou um pouco lento
em um determinado período de tempo mas ele voltou que voltou a funcionar isso porque porque a falha de um sistema distribuído ele foi ocultado conseguindo em frente então eu falei sobre a estabilidade que seria propriedade de medir o com fácil né é um sistema diminui assim com crescer existem três formas de medir escalabilidade primeiro é escalabilidade tamanho onde número de processos o número de usuários eles podem ser o que podem crescer de crescer assim como existe aquela habilidade é quanto à distância máxima quem chama de escalabilidade e geográfica e finalmente existe o que aquela unidade
administrativa onde a gente pode incorporar uma quantidade mínima ou máxima de domingo no meio de domingo administrativos sabe que por exemplo aqui na univesp seria o que seria um domingo administrativa usp ser um outro domínio administrativo de rede ea unicamp seria um outro menino administrativo de rede então existe o que existem formas de administração diferentes mas que em cada uma dessas entidades pode haver um servidor que possa ser compartilhado e rodar um recurso que é um processo um recurso aí que seja distribuída entre essas três entidades os gargalos não existem vários problemas né de de
sistemas distribuídos no que tange aos gargalos então uma delas seria o que seria ter-se serviço centralizado se você tem um serviço centralizado você tem um ponto único é de fora né dados centralizado a mesma coisa se você tem uma única lista de telefone online obviamente que vai haver o que vai haver gargalo relacionado a esse único ponto de recurso que é compartilhado e se você tem um algoritmo mais centralizado você vai precisar o que você vai precisar fazer o roteamento com base nessas únicas informações aí completas bom algoritmo de as caracteriza algoritmos e centralizados e
vantagens e desvantagens vantagem a vantagem que nenhuma máquina tem uma informação completa essa seria uma vantagem uma desvantagem a vantagem que se essa máquina ela sai do ar o restante do sistema distribuído ela vai continuar funcionando então as máquinas tomam decisões é tomar decisões baseadas nas informações que eles possuem um algoritmo de centralizado e como falei pra vocês a falha no algoritmo ela não vai quebrar é todo o sistema e também não existe o que não existe uma suposição de um relógio global o relógio assim gente é o cada computador possui um relógio se o
sistema distribuído eu preciso primeiro ajustar o que ajustar o horário de cada relógio segundos de diferença um casal problemas se eu tenho algoritmo de centralizado não existe a necessidade de um algoritmo de um relógio centralizado e global bom existem formas de tec formas e maneiras de melhorar escalabilidade e uma delas é aumentar a disponibilidade desses recursos fazendo que fazendo um balanceamento de carga então nesse cenário aqui né em vez de o mandar eu tenho um cliente um servidor isso eu tenho que mandar um conjunto de dados por servidor e fazer com que o servidor processo
nesse ponto aqui faça uma uma compressão ou uma verificação de segurança nesse no próprio servidor eu vou estar sobrecarregando que vão estar sobrecarregando esse servidor por outro lado eu posso fazer com que o cliente faça isso e enviar esses dados já processados por servidor assim não sobrecarrega o quim o servidor nota que eu quero aumentar o que eu quero um faz itha vida aí é de que o sistema de saúde possa crescer e diminuir nesse cenário então se eu tenho um servidor que faz tudo e centralizado esse servidor no mais calar por que se vierem
vai requisições para o servidor esse servidor ele entende o que tem de ficar extremamente lenta então essa é uma forma a sair disse que a habilidade outra técnica de escalabilidade é o que distribuir totalmente o o sistema por exemplo aqui de nomes como vocês viram no sistema do dns na disciplina de redes de computadores então se o que eu faço eu distribuo é só vocês a grande base de dados e fácil criar zonas de atendimento como se fosse assim é um serviço de correio e vede existir um sistema de co a um escritório de correr
centralizado para todo o brasil o que eu faço eu divido isso em em é no que tange ao estado e depois no que tange ao município e depois no que tange o que rui baião e assim consigo que consigo melhorar a estabilidade desse é desse ambiente gente nessa aula então eu conceituais estão distribuídos falei de algumas características sociedades como escalabilidade é transparência mostrei algumas técnicas vantagens e desvantagens então o que eu fiz essa aula e somente introduzir aí a disciplina e os conceitos de sistemas distribuídos na próxima aula então a gente vai ver o que
se vai ver essencialmente os tipos de sistemas distribuídos obrigado gente pela atenção [Música] o [Música] [Música] [Música]