O que é uma aplicação distribuída

O que é uma aplicação distribuida e qual é a vantagem dessa tecnologia. Alguém pode me dizer e exemplificar exemplos práticos?

É qualquer aplicação projetada para executar em mais de um computador. O exemplo mais próximo é a Web, que é distribuída entre um cliente e um servidor. Ou seja, você tem o lado cliente que é o navegador Web e o lado servidor que oferece as páginas, imagens, vídeos, etc. O cliente só funciona se há pelo menos um servidor, e a razão do servidor existir são os clientes.

Bom dia,

Exemplo : As aplicações distribuídas Java baseadas em arquiteturas n-tiers e tecnologia Java EE.
(O seja por exemplo Model-View-Controller distribuído).

Para compreender melhor a aplicações distribuídas, em primeiro lugar, temos de compreender as necessidades:

Objetivos distribuição de serviços, dados, aplicações ou humanos.

Algumas aplicações podem rodar em uma única máquina. Por exemplo, um editor de texto.

Outros aplicativos devem ser executados em várias máquinas conectadas em uma rede (por exemplo a rede TCP/IP Internet).

Ou porque os usuários dessas aplicações estão espalhadas em diferentes locais geográficos.
Ou porque as aplicações têm de ser executadas em máquinas diferentes, por razões de distribuição de tratamento ou de dados ou de apresentação.

Em segundo lugar, vamos ver como é construída uma aplicação distribuída:

Há pelo menos três níveis ou seja três perspectivas diferentes:
–>Humano - usuários, podem formar redes humanas (Humain-to-Humain) ou seja redes sociais através de redes de computadores
–>Sistema Aplicativo - Aplicação , dados, serviços
–>Sistema distribuído - redes, middleware (permite aplicações ou serviços para conectar uns com os outros na rede)

Visão arquiteturas Node-to-Node o OverlayNetwork :
Níveis (kernel,services,applications,users).

O nível humano , não é necessário. Na verdade algumas aplicações distribuídas não necessitam da intervenção de
seres humanos. Elas são chamadas de máquina-a-máquina (machine to machine).

O Sistema Aplicativo, utiliza os serviços distribuidos e/o locais e manipula os dados distribuidos e/o locais.

O Sistema distribuído pode ser baseada em diferentes arquitecturas e diferentes topologias (pode mudar dinamicamente).
Podemos distinguir pelo menos quatro:
—>centralizada, cliente/servidor(s) ( exemplo arquiteturas n-tiers, arquitetura multi-camadas, utilisando a tecnologia Java EE / .Net / Linux-Apache-MySql-Php…)
—>semi-descentralizada(exemplo primeira versao de Napster…)
—>totalment descentralizada ( exemplo Gnutella, Freenet …)
—>descentralizada com super-nodes (super-servers) (exemplo eDonkey… )

O sistema distribuído pode utilisar diferentes middlewares e/o frameworks e/o plataformas:
Java Sockets , Http
Java MS
Web Services (WSDP: SAOP/UDDI/WSDL)
Sistemas a objectos distribuidos ( Java CORBA, Java RMI, JINI)
Sistemas distribuidos descentralizada com super-nodes ( JXTA )

Em terceiro lugar, vamos ver alguns exemplos

Certamente que a aplicação distribuída, a mais popular é a WEB “classic 1.0 / 2.0 / 3.0…”:
é uma aplicação cuja arquitetura pode ser centralizada (cliente / servidor).
Ou cuja arquitetura pode ser n-tiers, arquitetura multi-camadas ( um browser cliente et 2 o 3 o n servidors em cascata : web container / EJB container/persistance/DB).

Calculo distribuido (BOINC, SETI@Home)
O grid computing (utilização de recursos da Internet, tais como a electricidade) exemplos Globus : http://www.globus.org/
O cloud computing ( Windows Azure, Ray Ozzie pai de Groove Networks)
Sistemas P2P ( BitTorrrent , FastTrack /KaZaA…)
Base de dados distribuidas “Distributed database”

Abraços !

Cordialement !

Best regards !