Sistemas distribuídos e Middleware

Propaganda
Middleware
Prof. Me. Hélio Esperidião
Middleware
• Termo que se aplica a uma camada de software que proporciona uma
abstração de programação assim como esconde a heterogeneidade
da rede, hardware, sistema operativo e linguagens de programação
usadas
Necessidade do Middleware
• Três problemas do processamento de dados:
• A integração de software proveniente de origens destinas
• O acesso ao software dentro e fora da empresa;
• O desenvolvimento rápido de aplicações
Middleware
• Torna transparente a distribuição.
• Resolve heterogeneidade de:
•
•
•
•
Hardware
Sistemas Operacionais
Redes
Linguagens de programação
• Provê um ambiente de desenvolvimento e de tempo de execução
para sistemas distribuídos
Características do Middleware
• O “Middleware” tem que estar disponível em diversas máquinas.
• Transferências tem que ser confiáveis.
• Tem que existir a garantia de que quando uma aplicação entrega uma
mensagem ao “Middleware” que o destino recebe a mensagem uma única
vez.
• Isto tem que acontecer mesmo que um computador ou a rede falhe.
• Adaptação ao tráfego
• A largura de banda do “bus” tem que suportar um aumento de tráfego
resultante do aumento do número de aplicações.
• Esta é uma característica de base muito importante já que o “Middleware” é
o esqueleto de qualquer aplicação.
Características do Middleware
• Estruturas de comunicação
• Uma aplicação pode comunicar com uma outra aplicação ou enviar uma única
mensagem para n destinos.
• Utilização de um nome.
• A aplicação que envia uma mensagem refere-se ao destino através de um
nome e não de um endereço físico.
• Esta característica permite a transferência de uma aplicação de um computador para
outro sem haver implicações nas aplicações que com ela comunicam.
Middleware” no modelo OSI
• O “Middleware” forma uma estrutura de comunicação independente dos
sistemas operacionais e da natureza da rede de comunicação usadas.
• O “Middleware” situa-se logo abaixo das aplicações. No modelo de
camadas OSI corresponderá as camadas superiores definindo o protocolo a
usar entre as aplicações.
• O “Middleware será suportado pelos protocolos das camadas inferiores (
TCP/IP, DECnet, SNA) e por mecanismos dos próprios sistemas operacionais
das máquinas onde são executadas as aplicações.
Middleware” no modelo OSI
Classificação Middleware
• Tipo de comunicação
• Linguagens p/ construção da aplicação
• Forma de disponibilização
• Ambiente de execução
Tipo de Comunicação
• Comunicação síncrona
• Baseada em chamadas de procedimentos
• Centrada “objeto/função”
• Exemplo: CORBA, RMI
• Comunicação assíncrona
• Baseado em filas
• Centrada na informação
• Exemplo: JMS
Linguagem da Aplicação
• Diversas linguagens
• IDL para descrição da interface do serviço
• Linguagem de programação para implementação do serviço
• e.g., CORBA (IDL CORBA) + Java
• única linguagem
• interface e implementação do serviço usando uma única linguagem
• e.g., RMI
Forma de Disponibilização
• Proprietário
• MQSeries (IBM)
• baseado em padrões
• CORBA
• código aberto
• Implementação aberta pode ser baseado em padrão e.g., JBOSS
Ambiente de Execução
• Computadores pessoais
•
•
•
•
Automação do negócio
Suporte à aplicações genéricas
Altamente renconfiguráveis
Facilidade de integração
• Embarcados
• Suporte à aplicações específicas
• Restrições de capacidade de processamento
• Desempenho e tempo-real são fundamentais
Soluções para o “Middleware”
• Transacional
• Message-based
• Remote-Procedure-Call.
• Middleware orientada por objetos
Middleware Transacional
• Suporte a transações síncronas
• Coordena requisições entre clientes e servidores
• Fornecem suporte (coordenação e sincronização) à execução de
transações de acesso à bases de dados.
• usado em sistemas de processamento de transações de alta escala
(banco)
Middleware Transacional
Middleware Transacional
• Exemplos:
•
•
•
•
CICS (IBM)
Encina (DCE-based)
OMG Object Transaction Service
Java Transaction Service
Middleware Transacional
• Vantagens
• Componentes se mantêm consistentes
• Bastante confiável
• Boa performance
• Escalonamento e priorização de solicitações
• Desvantagens
• Ausência de padronização para descrever serviços
• Executa numa menor quantidade de plataformas
• Bloqueios desnecessários
• Marshalling e unmarshalling implementadas manualmente
Message Oriented Middleware
• Trata-se de uma infraestrutura de software cliente/servidor que cria uma
camada entre as aplicações de alto nível e as plataformas onde estão
instaladas, substituindo a comunicação direta entre aplicações por um
sistema de troca de mensagens.
• Comunicação assíncrona.
• A MOM usa uma aproximação “send and forget”. Deste modo o emissor
não tem que esperar que o receptor receba a mensagem, basta-lhe esperar
que a mensagem seja transmitida e guardada na pilha de recepção do
receptor. Comunicação assíncrona permite independência temporal e
execução não bloqueante, pois os processos não são obrigados a esperar
uns pelos outros
Message-based Middleware(MOM)
• Um cliente pode enviar e receber mensagens de forma assíncrona de
qualquer outro cliente, conectados a um meio que fornece facilidades
para criar, enviar, receber e ler mensagens.
Message-based Middleware(MOM)
• Primitiva de interação: passagem de
mensagem
• Uso de filas temporárias de
mensagens
• Exemplos:
• MQSeries,
• Sun ONE Message Queue
• JORAM free
Message Oriented Middleware
• Vantagens
• Suporta comunicação em grupo
• Confiabilidade
• Amplo suporte a protocolos de rede
• Desvantagens
• Escalabilidade e heterogeneidade limitadas
• Pouca portabilidade por falta de padronização
Remote-Procedure-Call Middleware (RPC)
• Permite que chamadas de procedimentos cruzem os limites entre
máquinas diferentes
• Permite que clientes efetuem comunicação com servidores através
de chamadas de procedimentos.
• A chamada remota segue o modelo da chamada local sendo que o
procedimento chamado executa em um processo diferente
normalmente em um computador diferente.
Remote-Procedure-Call
RPC - Interfaces
• Interfaces são definidas usando uma Linguagem de Definição de
Interfaces (IDL)
• Especifica os procedimentos disponíveis remotamente
Remote-Procedure-Call Middleware (RPC)
Marshalling/Unmarshalling
• Marshalling
• Converter estruturas de dados em um formato no qual possam ser transmitidas
• Unmarshalling
• Remontar a estrutura de dados original a partir do formato serializado
Analogia
Marshalling
Unmarshal
char * marshal() {
char * msg;
msg=new char[4*(sizeof(int)+1)
+
strlen(name)+1];
sprintf(msg,"%d %d %d %d %s",
void unmarshal(char * msg) {
int name_len;
sscanf(msg,"%d %d %d %d ",
&dob.day,&dob.month,
&dob.year,&name_len);
name = new char[name_len+1];
sscanf(msg,"%d %d %d %d %s",
&dob.day,&dob.month,
dob.day,dob.month,dob.year,
strlen(name),name);
return(msg);
};
&dob.year,&name_len,name);
};
RPC: Marshalling e Unmarshalling
• Cliente A
• Deve converter os parâmetros para um formato que possa ser transmitido
por um protocolo de transporte (TCP, por exemplo).
• Este processo é chamado de marshalling.
• Servidor B:
• Deve converter mensagem recebida em uma estrutura de dados
• Este processo é chamado de unmarhalling.
• Processo de marshalling/unmarshalling é tedioso e sujeito a erros
• Portanto, deve ser automatizado pela plataforma de middleware
RPC - Marshalling/unmarshalling
• Marshalling/unmarshalling tem funcionamento interno baseado em
módulos chamados de stubs.
• Stubs: encapsulam detalhes de comunicação no cliente e servidor
• Automatizam processo de marshalling e unmarshalling
• Automatizam comunicação com o processo remoto (interagindo com o
protocolo de transporte)
RPC: Arquitetura Interna
RPC: Arquitetura Interna
RPC: Arquitetura Interna
Resumo
• Stub cliente envia a requisição e espera até que o servidor termine
• Stub servidor espera por requisições e chama o objeto servidor quando a
requisição chega
Middleware Orientados por Objetos(MOO)
• Evolução dos middlewares procedurais.
• Interação por invocação de métodos.
• Comunicação tipicamente síncrona.
• Ideia básica: objetos clientes podem chamar métodos de objetos
remotos com transparência de acesso (isto é, com a mesma sintaxe
de chamadas locais)
• CORBA, Java RMI, DCOM, .NET Remoting etc
MOO
MOO
Middleware Orientado a Objetos (MOO)
• Vantagens
• Grande suporte a heterogeneidade
• Marshalling e unmarshalling automáticos
• Versatilidade
Middleware Orientado a Objetos (MOO)
• Desvantagens
• Pouca Escalabilidade
Linguagem de Definição de Interfaces
• Cada plataforma de middleware orientada a objetos possui uma
linguagem de definição de interfaces (IDL) própria.
Principais Middlewares
• Transacionais
• Tuxedo (BEA)
• CICS (IBM)
• Encina (Transarc)
• MOM
• MQSeries (IBM)
• JMS (Sun)
• MOO
• CORBA (OMG)
• COM (Microsoft)
• RMI
CORBA
• CORBA (Common Object Request Broker Architecture) é a arquitetura
padrão criada pelo Object Management Group para estabelecer e
simplificar a troca de dados entre sistemas distribuídos heterogêneos.
• CORBA atua de modo que os objetos (componentes dos softwares)
possam se comunicar de forma transparente ao usuário.
• CORBA é um dos modelos mais populares de objetos distribuídos
Object Request Broker
• Em computação distribuída, um object request broker (ORB), ou em
português agente de requisição de objetos, é uma parte de um
software middleware que permite que programadores façam
chamadas a programas de um computador para outro através de uma
rede de computadores.
Object Request Broker
Interoperabilidade
• Os ORBs promovem interoperabilidade de sistemas de objetos
distribuídos pois eles permitem que usuários desenvolvam sistemas
através da junção de objetos de diferentes fornecedores, podendo se
comunicar uns com os outros através do ORB.
ORB
• A arquitetura CORBA define o ORB (Object Request Broker) como um
módulo intermediário entre cliente e objeto, sendo responsável em
aceitar a requisição do cliente, enviá-la para o objeto competente e,
assim que disponível a resposta, entregá-la para o cliente.
DCOM - Distributed Component Object
Model
• DCOM é uma tecnologia proprietária da Microsoft para criação de
componentes de software distribuídos em computadores interligados
em rede.
Download