Você está na página 1de 23

CAPITULO1

PrincipaisDesafiosemSD

Heterogeneidade:
Ainternetpermiteaosusuriosacessaremservioseexecutarem
aplicativospormeiodeumconjuntoheterogneodecomputadoreseredes.A
heterogeneidade(isto,variedadeediferena)seaplicaaosseguintesaspectos:
redes
hardwaredecomputador
SOs
linguagensdeprogramao
implementaesdediferentesdesenvolvedores

Abertura(openness):
Capacidadedeosistemaserextensvel,queremhardware
queremsoftware.Novoscomponentesdevempoderseradicionadossemporem
causaofuncionamentodosjexistentes,epodercomunicarcomeles.Paraisso
importantequesejamconhecidasasinterfacesdosnovoscomponentesatravsda
publicaodasuadocumentaoeutilizarprotocolos.
Segurana:
Aseguranaderecursosdeinformaotemtrscomponentes:
confidencialidade
(proteocontraexposiaparapessoasnoautorizadas),
integridade
(proteocontraalteraooudano)e
disponibilidade
(proteocontra
interfernciacomosmeiosdeacessoaosrecursos).
Ataquedenegaodeservio:
ocorrequandoumusuriointerrompeum
servioporalgummotivo.Issopodeserconseguidobombardeandooservio
comumnmerotograndedepedidossemsentido,queosusuriosnoso
capazesdeuslo.
Escalabilidade:
Umsistemadescritocomoescalvelsepermaneceeficiente
quandohumaumentosignificativononmeroderecursosenonmerodeusurios.
necessriodesenharosoftwaredeformaaqueoaumentodeutilizaes
noexijagrandesalteraes,evitaralgoritmos,servioseestruturasdedados
centralizados,controlaroaumentodecustosdevidodisponibilizaodemais
recursos,controlaraperdadeperformanceeevitarotransbordodecertos
limitesderecursos.
Tratamentodefalhas:
AsfalhasemumSDsoparciaisisto,alguns
componentesfalham,enquantooutroscontinuamfuncionando.Portanto,otratamento
defalhasparticularmentedifcil.Seguemastcnicascomuns:
Detecodefalhas:
algumasfalhaspodemserdetectadas.Porexemplo,
somasdeverificaopodemserusadasparadetectardadosdanificadosem
umamensagemouemumarquivo.
Mascaramentodefalhas:
algumasfalhasdetectadaspodemserocultasou
setornarmenossrias.Exemplodeocultaodefalhas:

mensagenspodemserretransmitidasquandonochegam
dadosdearquivospodemsergravadosemdoisdiscos,paraque,se
umestiverdanificado,ooutroaindapossaestarcorreto.
Tolernciaafalhas:
amaioriadosserviosnaInternetapresentafalhasno
seriapraticotentardetectaremascarartudoquepossaocorreremumarede
togrande,comtantoscomponentes.Seusclientespodemserprojetadosde
formaatolerarfalhas.porexemplo:
quandoumnavegadornoconseguecontatarumservidorweb,eleno
fazousurioesperarindefinidamente,enquantocontinuatentandoele
informaousuriosobreoproblema,deixandoolivreparatentar
novamente.
Recuperaodefalhas
:arecuperaoenvolveprojetarsoftwaredemodo
queoestadodosdadospermanentespossaserrecuperadoouretrocedido,
apsafalhadeumservidor.Emgeral,ascomputaesrealizadasporalguns
programasficaroincompletasquandoocorrerumafalhaeosdados
permanentesqueelesatualizampodemnoestaremumestadosconsistente.
Redundncia:
osserviospodemsetornartolerantesafalhascomousode
componentesredundantes.Considereosexemplosaseguir:
Sempredevehaverpelomenosduasrotasdiferentesentredois
roteadoresquaisquernaInternet.
NoDomainNameSystem,todatabeladecorrespondnciadenomes
replicadaempelomenosdoisservidoresdiferentes.
Umbancodedadospodeserreplicadoemvriosservidores,para
garantirqueosdadospermaneamacessveisapsafalhade
qualquerservidor.Osservidorespodemserprojetadosdeformaa
detectarfalhasemseuspares:quandoumafalhadetectadaemum
servidor,osclientessoredirecionadosparaosservidoresrestantes.
Concorrncia:
osvriosutilizadoresutilizamosistemaemsimultneo(necessrio
coordenaroacessoaosrecursospartilhados)
Transparncia:
Osistemadeveservistocomoumtodoenocomoumacoleode
componentesdistribudos.
TransparnciadeAcesso
:permitequeoacessoarecursoslocaisea
recursosremotossejafeitoatravsdasmesmasoperaes(i.,usandoa
mesmainterface).
Localizao
:permitequeosrecursospossamseracedidossemo
conhecimentodasualocalizao.(ex.Programasdecorreioelectrnico)
Concorrncia
:permitequeosvriosclientesdeumcomponenteno
necessitemdeteremcontaoacessoconcorrenteaocomponente.
Replicao
:permitequeosclientesdeumcomponentenoseapercebamse
existereplicaoeestoausarumarplicaenoooriginalautilizaode
vriasinstnciasdeumcomponentepodeocorrerporrazesdedesempenho
oudefiabilidadeosutilizadoresdocomponentenonecessitemdesaberque
ocomponentepossaserreplicado.

Falhas
:permitequeosistemafuncionenapresenadefalhasdehardwareou
softwaresemqueutilizadoreseprogramadoressaibamcomoasfalhasforam
ultrapassadas.(porex.umsistemadeemailpoderetransmitirumamensagem
atqueamesmasejaentreguecomsucesso)
Migrao
:permitequeumrecursopossamudardelocalizaosemqueisso
afecteasuautilizao.(ex.Telemveisemmovimento)
Desempenho:
permitequeosistemasejareconfiguradoparamelhoraroseu
desempenhosemqueosutilizadoresseapercebam.
Escalabilidade:
permitequeosistemasejaexpandidosemqueosutilizadores
seapercebamdecomoissofoiconseguido.

CAPITULO2

Modelos:

Descrioabastrataesimplificadadeaspectosrelevantesrelacionadosaodesignde
umsistemadistribudo
ModelosFsicos
ModelosArquiteturais:Ummodeloarquiteturaldeumsistemadistribudoa
estruturadosistemaemtermosde
localizao
dassuasdiferentespartes,do
papel
quecadapartedesempenhaecomoseinterrelacionam.
ModelosFundamentais:Ossistemasdistribudospodemaindaseranalizados
segundo3aspectostransversaisatodosossistemas:
ModelodeInterao(oudesincronismo):
ModelodeFalhas(ouAvarias)
MedolodeSegurana

Modelodeinterao:
Interaoaao(comunicaoesincronizao)entreas
partespararealizarumqualquertrabalho.

afetadapordoisaspectos:
Performancedoscanaisdecomunicao:
Acomunicaoemumaredede
computadorestemasseguintescaractersticasdedesempenorelacionadas
latncia
,
larguradebanda
e
jitter
:

Latncia:
Intervalodetempoquemedeiaentreoinciodatransmisso
deumamensagemporumprocessoeoinciodasuarecepopelooutro
processo.Alatnciainclui:

Otempoqueoprimeirobitdeumconjuntodebitstransmitidoem
umaredelevaparachegaraoseudestino.Porexemplo,alatncia
datransmissodeumamensagempormeiodeumenlacede
satliteotemponecessrioparaqueumsinalderdiovato
satliteeretorneaterraparaseudestinatrio.
Oatrasonoacessorede,queaumentasignificativamente
quandoaredeestmuitocarregada.Porexemplo,para
transmissoEthernet,aestaoremetenteesperaquearede
estejalivredetrfegoparapoderenviarsuamensagem.
Otempodeprocessamentogastopelosserviosdecomunicao
dosistemaoperacionalnosprocessosdeenvioerecepo,que
variadeacordocomacargamomentneadoscomputadores.
Larguradebanda
:ovolumetotaldeinformaesquepodeser
transmitidoemdeterminadomomento.Quandoumgrandenmerode
comunicaesusaamesmarede,elascompartilhamalarguradebanda
disponvel.
Jitter:
avariaonotempoexigidaparadistribuirumasriede
mensagens.OJittercrucialparadadosmultimdia.Porexemplo,se
amostrasconsecutivasdedadosdeudiosoreproduzidascom
diferentesintervalosdetempo,osomresultanteserbastantedistorcido.

Inexistnciadeumtempoglobal
Cadacomputadorpossuiseuprpriorelgio
interno,oqualpodeserusadopelosprocessoslocaisparaobterovaloratualda
hora.Mesmoquedoisprocessosleiamseusrelgioslocaissimultneamente
essespodemfornecervaloresdiferentes.
Taxadedesviodorelgio(Drift):
sereferequantidaderelativapela
qualumrelgiodecomputadordiferedeumrelgioderefernciaperfeito
Osdriftsdedoisrelgiosdistintossotambmdistintos,oque
significaqueentreelesotemposersempredivergente.

UmasoluopassaporobterotempofornecidoporGPSGlobal
PositioningSystem,eenviaraosparticipantesdosistemadistribudo.
Problema:Delaysnoenviodessamensagem!!!

Duasvariantesdomodelodeinterao:
Emumsistemadistribudomuito
difcilestabelecerlimitesparaotempoquelevaaexecuodosprocessos,para
atrocademensagensouparaodesviodorelgio.Doispontosdevistas

opostosfornecemmodelossimplesoprimeirofortementebaseadonaidiade
tempo,osegundono.

Sistemasdistribudossncronos:
otempoparaexecutarcadaetapadeumprocessotemlimites
inferioresuperiorconhecidos
cadamensagemtransmitidaemumcanalrecebidadentrodeum
tempolimitado,conhecido
cadaprocessotemumrelgiolocalcujataxadedesviodotempo
realtemumlimiteconhecido

Dessaforma,possvelestimarprovveislimitessuperiorparaotempo
deexecuodeumprocesso,paraoatrasodasmensagenseparaas
taxasdedesviodorelgioemumSD.

OsSDssncronospodemserconstrudos,desdequesegarantaqueos
processossejamexecutadosdeformaarespeitarasrestriestemporais
impostas.

Sistemasdistribudosassncronos:
UmSDassncronoaqueleem
quenoexistemconsideraessobre:
asvelocidadesdeexecuodeprocessosporexemplo,uma
etapadoprocessopodelevarapenasumpicossegundoeoutra,
umsculotudoquepodeserditoquecadaetapapodedemorar
umtempoarbitrariamentelongo
osatrasosnatransmissodasmsnssagensporexemplo,uma
mensagemdoprocessoAparaoprocessoBpodeserenviadaem
umtempoinsignificanteeoutrapodedemorarvriosanos.Em
outraspalavras,umamensagempodeserrecebidaapsum
tempoarbitrariamentelong
astaxasdedesviodorelgionovamente,ataxadedesviodeum
relgioarbitrria.

Omodeloassncrononofaznenhumaconsideraosobreosintervalos
detempoenvolvidosemqualquertipodeexecuo

ModelodeFalhas:
Umafalhaqualqueralteraodocomportamentodo
sistemaemrelaoaoesperado,isto,emrelaosuaespecificao.As
falhaspodematingiros
processos
ouos
canaisdecomunicao.

Tiposdefalhas
FalhasporOmisso
Falhasarbitrrias
Falhasemtemporizao

FalhaporOmisso:
Asfalhasporomissosereferemaoscasosemqueum
processooucanaldecomunicaodeixadeexecutarasaesquedeveria.

Falhasporomissodeprocesso:
aprincipalfalhaporomisso
deumprocessoquandoeleentraemcolapso,parandoeno
executandooutropassodeseuprograma.Ocolapsodeum
processochamadode
paradaporfalha
seoutrosprocessos
puderemdetectar,comcerteza,aocorrnciadessasituao.Em
umsistemasncrono,umaparadaporfalhaocorrequando
timeoutssousadosparadeterminarquecertosprocessos
deixaramderesponderamensagenssabidamenteentregues.
Falhasporomissonacomunicao:
Ocanaldecomunicao
produzumafalhaporomissoquandonoconcretizaa
transfernciadeumamensagem
m
dobufferdeenciodeum
processo
p
paraobufferderecepodeumoutroprocesso
q
.Isso
conhecidocomoperdademensagensegeralmentecausado
pelafaltadeespaonobufferderecepo,oupelamensagemser
descartadaaoserdetectadoquehouveumerrodurantesua
transmisso.

FalhasArbitrrias:
Otermofalhaarbitrria,oubizantina,usadopara
descreverapiorsemnticadefalhapossvelnaqualqualquertipodeerropode
ocorrer.

Umafalhaarbitrriadeumprocesso
aquelaemqueeleomite
arbitrariamentepassosdesejadosdoprocessamentoouefetua
processamentoindesejado.Portanto,asfalhasarbitrriasnopodemser
detectadasverificandoseseoprocessorespondesinvocaes,poisele
poderiaomitirarbitrariamentearesposta.

Oscanaisdecomunicao
podemsofrerfalhasarbitrrias:por
exemplomocontedodamensagempodesercorrompido,mensagens
inexistentespodemserenviadasoumensgensreaispodemser
entreguesmaisdeumavez.Asfalhasarbitrriasdoscanaisde
comunicaosoraras,poisosoftwaredecomunicaocapazde
reconhecelaserejeitarasmensagenscomproblemas.

Falhasdetemporizao:
AsfalhasdetemporizaosoaplcveisaosSDs
sncronosondelimitesdetemposoestabelecidosparaotempodeexecuo
doprocesso,paraotempodeentregademensagenseparaataxadedesviodo
relgio.
EmumSDassncrono,umservidorsobrecarregadopoderespondermuito
lentamente,masnopodemosdizerqueeleapresentaumafalhade
temporizao,poisnenhumagarantiafoioferecida.

Mascaramentodefalhas:
possvelconstruirserviosconfiveisapartirde
componentesqueexibemfalhas.Porexemplovriosservidoresquecontm
rplicasdosdadospodemcontinuarafornecerumservioquandoumdeles
apresentaumdefeito.
Umserviomascaraumafalhaocultandoacompletamenteouconvertendoa
emumtipodefalhamaisaceitvel.

Confiabilidadedacomunicaodeumparaum:
Otermocomunicao
confiveldefinidoemtermosdevalidadeeintegridade,comosegue:
validade:
qualquermensagemdobufferdeenvioentregueaobufferde
recepodeseudestino,independentementedotemponecessriopara
tal
integridade:
amensagemrecebidaidnticaenviadaenenhuma
mensagementregueduasvezes.
Soameaasintegridade:
Qualquerprotocoloqueretransmita
mensagens,masnorejeiteumamensagemqueentregueduas
vezes.Usuriosmalintencionadosquepodeminjetarmensagens
esprias,reproduzirmensagensantigasoufalsificarmensagens.

ModelodeSegurana:
Proteodasentidadesdosistema,processo/utilizador
(principal).

Direitosdeacesso
especificam
queentidades
podemaceder,e
dequeforma,aque
recursos
.
Ex:Queentidadepodeexecutarqueoperaesnumdadoobjeto.

Oservidor
responsvelporverificara
identidade
dequem(entidade)fezopedido,e
verificarseessaentidadetem
direitosdeacesso
pararealizara
operaopretendida.

Ocliente
deververificara
identidade
dequemlheenviouaresposta,paraversea
respostaveiodaentidadeesperada.

Ameaas
:Supondoqueexisteumprocessoinimigocapazdeenviarqualquer
mensagemparaqualquerprocesso,interceptar(ler/copiar)qualquermensagem
trocadaentre2processos.
Asameaasdeuminimigoempotencialsodiscutidassobosttulos:
Ameaasaosprocessos:
umprocessoprojetadoparatratardepedidospodereceber
umamensagemdequalqueroutroprocessonosistemadistribudoenosercapazde
determinarcomcertezaaidentidadedoremetente.IPincluioendereodocomputador
origemdamensagemmasumprocessoinimigopodeforjaresseendereo.Umcliente
tambmnodispedemtodosparavalidarasrespostasdeumservidor.
Ameaasaoscanaisdecomunicao:
Umprocessoinimigopodecopiar,alterarou
unjetarmensagensnaredeeemseussistemasintermedirios(roteadorespor
exemplo).Taisataquesrepresentamumaameaaprivacidadeeintegridadedas
informaesquandoelastrafegampelarede.Essasmensagenspodemserreveladas
aterceiros.
Negaodeservio:
Estaumaformadeataquenaqualoatacanteinterferenas
atividadesdosusuriosautorizados,fazendoinmerasinvocaessemsentidoem
serviosoutransmitindomensagensincessantementeemumaredeparageraruma
sobrecargadosrecursosfsicos(capacidadedeprocessamentodoservidor,largurade
bandadarede,etc).Taisataquenormalmentesofeitoscomaintenoderetardar,
ouimpedir,asinvocaesvlidasdeoutrosusurios.

Definiodecanalseguro:
Canalutilizadoparacomunicaoentredoisprocessos
comasseguintescaractersticas:
Cadaprocessopodeidentificarcom100%deconfianaaentidaderesponsvel
pelaexecuodooutroprocesso
Asmensagensquesotransferidasdeumprocessoaoutro,sogarantidasdo
pondodevistadaintegridadeedaprivacidade
Asmensagenstemgarantiadenorepetibilidadeoureenvioporordemdistinta
(cadamensagemincluiumtempofsicooulgico)

Criptografia:
Tcnicadecodificarocontedodeumamensagemdeformaa
esconderoseucontedo.necessrioqueambososprocessospossuamachave
decodificao/decodificao.
Autencitao:
Incluirnamensagemumaporo(encriptada)quecontenhainformao
suficienteparaidentificaraentidadeeverificarosseusdireitosdeacesso.


CAPITULO4

Ascaractersticasdacomunicaoentreprocessos

Comunicaosncronaeassncrona:
Umafilaassociadaacadadestinode
mensagem.Osprocessosremetentesfazemasmensagensseremadicionadasem
filasremotaseosprocessosdestinoremovemmensagensdesuasfilaslocais.A
comunicaoentreosprocessosremetenteedestinopodesersncronaouassncrona.

Comunicaosncrona:
Osprocessosremetenteedestinososincronizados
acadamensagem.Nessecaso,sendereceivesooperaesquecausambloqueio.
Quandoumenvio(send)feito,oprocessoremetente(outhread)bloqueadoatque
arecepo(receive)correspondendesejarealizada.Quandoumarecepo
executada,oprocessobloqueadoenquantoamensagemnochegar.

Comunicaoassncrona:
Ousodaoperaosendnobloqueante,no
sentidodequeoprocessoremetentepodeprosseguirassimqueamsnsagem
tenhasifocopiadaparaumbufferlocal,eatransmissodamensagemocorre
emparalelocomoprocessoremetente.Aoperaoreceivepodetervariantes
comesembloqueio.
Variantenobloqueante
:Oprocessodestinoprosseguesuaexecuo
apsterrealizadoaoperaoreceive,aqualforneceumbufferparaser
preenchidoembackground.Nessecaso,oprocessodevereceber
separadamenteumanotificaodequeseubufferpossuidadosaserem
lidos,issopodeserfeitobaseadoempollingoueminterrupo.
VarianteBloqueante:
arecepobloqueantepodeserexecutadapor
umathread,enquantooutrasthreadsdoprocessopermanecemativase
asimplicidadedesincronizaodasthreadsdestinoscomamensagem
recebidaumavantagemsignificativa.

Destinosdemensagem:
Umaportalocalumdestinodemensagemdentrodeum
computador,especificadocomoumvalorinteiro.Umaportatemexatamenteum
destino,maspodetervariosremetentes.

Paraproporcionartransparnciadelocalizao
,podemosfazerusodasseguintes
estratgias:
Osprogramasclientessereferemaosserviospelonomeeusamumservidor
denomesoudeassociao(binder),paratransformarseusnomeem

localizaesdeservidornomomentodaexecuo.Issopermitequeosservios
sejammovidosenquantoosistemaestemexecuo.
Osistemaoperacional,forneceidentificadoresindependentesdalocalizao
paraosdestinosdemensagem,mapeandoosemumendereodenvelmais
baixoparaelasserementreguesnasportas,oquepossibilitaamigraoea
movimentaodoservio.

Confiabilidade:

Umserviopontoapontopodeserdescritocomoconfivel
se
houvergarantiaqueasmensagensforementregues,independentedeumnmero
razoveldepacotesquepossamtersidoeliminadosouperdidos.
Emcontraste,umserviodemensagemnoconfiavel
senohouver
garantiadequeasmensagenssejamentregues.Quantointegridade,asmensagens
devemchegarnocorrompidasesemduplicao.

Ordenamento:
Algumasaplicaesexigemqueasmensagenssejamentreguesna
ordemdeemissoisto,naordememqueforamtransmitidaspeloremetente.A
entregademensagensforadeordemconsiderarumafalhaportaisaplicaes.

Soquetes:
Asduasformasdecomunicao(UDPeTCP)usamaabstraode
soquete,umpontodedestinoparaacomunicaoentreprocessos.Acomunicao
entreprocessosconsisteemtransmitirumamensagementreumsoquetedeum
processoeumsoquetedeoutroprocesso.

Paraqueumprocessorecebamensagens,seusoquetedeveestarvinculadoauma
portalocaleaumendereoIPdocomputadoremqueexecutado.Asmensagens
enviadasaesseendereoIPeaonumerodeporta,sopodemserrecebidasporum
processocujosoqueteestejaassociadoaesseIPeaessenmerodeporta.

Umprocessonopodecompartilharportascomoutroprocessonomesmo
16
computador.Cadacomputadortemdisponvel2

nmerosdeportasdisponveis
OsprocessosmulticastIPsoumaexceo,poiselescompartilhamportas.Entretanto
,qualquernmerodeprocessospodeenviarmensagensparaamesmaporta.Cara
soqueteassociadoaumprotocoloemparticular.

ComunicaopordatagramaUDP:
UmdatagramaenviadopeloprotocoloUDP
transmitidodeumprocessoremetenteparaumprocessodestinosemaexistnciade
confirmaesounovastentativasdeenvio.Seocorrerumafalha,amensagempoder

nochegar.Umdatagramatransmitidoentreprocessosquandoumdelesefetuaum
send
eooutroum
receive
.

Comofeitaatrocademensagem:
Paraenviarourecebermensagens,umprocessoprecisaprimeirocriaruma
associaoentreumsoquetecomumendereoIPecomumaportado
host
local.Um
servidorassociarseusoqueteaumaportadeservioumaqueeletornaconhecida
dosclientesparaqueelespossamenviarmensagensaela.Umclientevinculaseu
soquereaqualquerportalocallivre.Omtodo
receive
retorna,almdamensagem,o
endereoIPeaportadoremetentepermitindoqueodestinatrioenviaumarespostaa
este.

Problemas:
Tamanhodamensagem:
oprocessodestinoprecisaespecificarumvetorde
bytesdeumtamanhoemparticularparareceberasmensagens.Sea
mensagemforgrandedemaisparaessevetor,elasertruncadanachegada.
Bloqueio:
Ossoquetesfornecemoperaes
send
nobloqueantese
receive
bloqueantesparacominicaopordatagrama.Aoperao
send
retornarquandotiverrepassadoamensagemparaascamadasUDPeIP,que
soresponsveisportransmitilaparaseudestino.Senenhumprocessotiver
umsoquereassociadoportadedestino,asmensagensserodescartadas.
(pag130)
Timeouts:
arecdepobloqueanteconvenienteparausoporumservidorque
estejaesperandoparareceberrequisiesdeseusclientes.Emalgumas
situaesnoadequadoqueumprocessoespereundefinidamentepara
receberalgo,nessecaso,consideraseum
timeout
.
Recepoanonima:
omtodo
receive
noespecificaumaorigemparaas
mensagens.Ainvocaoaomtodo
receive
obtmumamensagemendereada
paraseusoquete,independentedaorigem.Omtodo
receive
retornao
endereoIPeaportalocaldoremetente,permitindoqueodestinatrioverifique
deondeelaveio.

ModelodeFalhas:
OmodelodefalhaspodeserusadoemdatagramasUDP,que
sofremdasseguintesfalhas:
Falhasporomisso:
Ocasionalmente,mensagenspodemserdescartadas
devidoaerrosdesomadeverificaoouporquenohespaodisponvelno
buffer,naorigemounodestino.
Falhasporordenamento:
svezes,asmensagenspodemserentreguesem
umaordemdiferentedaqueforamemitidas.

UtilizaodoprotocoloUDP:
Paraalgumasaplicaes,aceitvelusarumservio
queestejaexpostoafalhasporomissoocasionais.PorexemplooDomainNaming
ServiceDNS.Asvezes,osdatagramasUDPsoumaescolhaatraente,poiselesno
sofremsobrecargasnecessriasaentregademensagensgarantida.Soelas:

anecessidadedearmazenarinformaesdeestadonaorigemenodestino
atransmissodemensagensextrase
alatenciadoremetente.

ComunicaoporfluxoTCP:
Asseguintescaractersticasdaredesoocultadaspela
abstraodefluxo(stream):

Tamanhodasmensagens:
oaplicaticopodeescolherovolumededadosquevai

serenviadoourecebidoemumfluxo.AcamadaTCPdecideovolumededadosa
coletar,antesdetransmitilosefetivamentecomoumoumaispacotesIP.
Mensagensperdidas:
Seoremetentenoreceberumaconfirmaodentrodeum
tempolimite,eleretransmiteamensagem.
Controledefluxo:
oprotocoloTCPtentacombinaravelocidadedosprocessosque
lemeescrevememumfluxo.Seoprocessoqueescreve(envia)forrapidodemais
paraoquel,entoeleserbloqueadoatqueoleitortenhaconsumidodados
suficientes.
Duplicaoeordenamentodemensagens:
idenficadoresdemensagemso
associadosacadadatagramaIP,oquepermiteaodestinatriodetectarerejeitar
duplicatasoureordenarasmensagensquechegamforadaordemdeemisso.
Destinosdemensagens:
doisprocessosqueestoemcomunicaoestabelecem
umaconexoantesdepoderemsecomunicar.Oestabelecimentodeumaconexo
envolveumarequisiode
connect
,doclienteparaoservidor,seguidodeuma
requisiode
accept
,doservidorparaocliente,antesquequalquercomunicao
possaocorrer.Emummodeloclienteservidor,issocausaumasobrecarga
considervelparacadarequisioresposta.(pag135).

Cliente:
CriaumobjectodotipoSocketquetentaestabelecerumaligaocomumaportade
umservidor,numamquinaremota.Paraestabelecerestaligaonecessrioindicaro
endereoIPeaportadamquinaremota.
Servidor:
Criaumobjectodotipolisteningsocketassociadoaoportoservidor.Estesocket
possuiummtodoqueficabloqueadoatquerecebaumpedidodeligaoaoporto
correspondente.Quandochegaopedidodeligao,oservidoraceitaainstanciandoum
novosocketque,talcomoosocketdocliente,temduasstreamsassociadas,umaparasada
outraparaentradadedados.

Problemasimportantesrelacionadoscomunicaoporfluxo:

Correspondnciadeitensdedados:
doiprocessosqueestejamsecomunicando
precisamconcordaraocontedodosdadostransmitidosporumfluxo.Porexemplo,
seumprocessoenviaumvalotintseguidodeumvalordouble,ooutroladodeverler
umvalorintseguidodeumvalordouble.Quandodoisprocessosnocooperam
corretamentenousodeumfluxo,oprocessoleitorpodecausarerrosaointerpretar
osdados,ouserbloqueadodevidoadadosinsuficientesnofluxo.
Bloqueio:
osdadosgravadosemumfluxosomantidosemumafilanosoquetede
destino.Quandoumprocessotentar
ler
dadosdeumcanaldeentrada,obterdados
dafilaouserbloqueadoatquedadossetornemdisponveis.Oprocessoque
escreve
dadosemumfluxopodeserbloqueadopelomecanismodecontroledefluxo
TCP,casoosoquetenooutroladojestejaarmazenandoovolumemximodedados
permitido.
Threads:
quandoumservidoraceitaumaconexo,geralmenteelecriaumanova
thread,parasecomunicarcomonovocliente.
Vantagememseusarumathreadseparadaparacadacliente
queo
servidorpodebloquearquandoestiveresperandopordados,sematrasaros
outroscliente.

Modelodefalhas:
Parasatisfazera
propriedadedaintegridade
dacomunicao
confivel,osfluxosTCPusamsomasdeverificaoparadetectarerejeitarpacotes
corrompidos,assimcomonmerosdesequnciaparadetectarerejeitarpacotesduplicados.
Quando
propriedadedavalidade
,osfluxosTCPusamtimeouteretransmissespara
tratarcompacotesperdidos.Portantohgarantiadequeasmensagenssejamentregues,
mesmoquandoalgunsdospacotesdascamadasinferioressoperdidos.

Representaoexternadedadoseempacotamento:

Representaoexternadedados
:Padroaceitopararepresentaodeestruturas
dedadosevaloresprimitivos.
Empacotamento(
marshalling):oprocedimentodepegarumconjuntodeitensde
dadosemontalosemumaformaconvenienteparatransmissoemumamensagem.
Desempacotamento(unmarshilling):
oprocedimentoinversodedesmontlosna
chegadaparaproduzirumconjuntodeitensdedadosequivalentenodestino.

Assim,o
marshilling
consistenatransformaodeitensdedadosestruturadosevalores
primitivosemumarepresentaoexternadedados.Analogamente,o
unmarshilling
consistenageraodevaloresprimitivosapartirdesuarepresentaoexternadedadose
nareconstruodasestruturasdedados.

Comunicaoclienteservidor:
Projetadaparasuportarasfunesetrocasdemensagem
eminteraesclienteservidortpicas.

Interaesclienteservidor(sendreceiveparadatagramasUDP)

asconfirmaessoredundantes,poisasrequisiessoseguidaspelasrespostas
oestabelecimentodeumaconexoenvolvemensagensextras,almdoparexigido
paraarequisioesuaresposta
ocontroledefluxoredundanteparaamaioriadasinvocaes,quepassamapenas
pequenosargumentoseresultados.

Oprotocolorequisioresposta:
Baseadoem3primitivasdecomunicao:

doOperation
:Usadopelosclientesparainvocaroperaesremotas.Seus
argumentosespecificamoobjetoremotoeomtodoaserexecutado.Seuresultado
umarespostaRMI.
getRequest:
Usadoporumprocessoservidorparalerasrequisiesde
servio.Quandooservidortiverexecutadoomtodonoobjetoespecificado,usar
sendReply
paraenviaramensagemderespostaparaocliente.Ocliente,aoreceber
amensagemresposta,farcomqueomtododoOperationoriginalseja
desbloqueadoeaexecuodoprogramaclientecontinue.

Modelodefalhasdoprotocolopedidoresposta:

SeastrsoperaessoimplementadassobreUDP,entosofremdomesmotipodefalhas
decomunicaoqueaqueleprotocolo:.
falhasdeomisso
.
Mensagensnosogarantidamenteentreguesporordem.
Almdisso,podemocorrerfalhasnoprocesso:assumemsecrashfailures,seoprocesso
pararepermaneceparadonoproduzindovaloresarbitrrios

Timeouts:
Pararesolveroproblemadasmensagensperdidas,adoOperationpermitedefinir
umserviodetempo,timeout.
Apsesgotarotimeout,aoperaopoderetornarcomumaindicaodeerro.
Geralmente,emvezderetornar,reenviaamensagemvriasvezesparateracertezaqueo
problemafoiofimdoservidorenomensagensperdidas.

Perdadamensagemderesposta:
Searespostaseperdeu,oservidoraorecebernovo
pedidopodeprocessaromtodonovamente(casosejaidempotente)ereenviaros
resultados.

Operaesidempotentes:
Tmomesmoefeitoseexecutadasumaoumaisvezes.
Ex:Operaoqueadicionaumelementoaumconjunto.
Contraexemplo:adicionarummontanteaumacontabancria

Emvezdereexecutaromtodo,podereenviaramensagem,desdequeestafique
armazenadanumficheiroqueirconteroregistodohistricodoservidor.
Problema:consumodememria
Soluo:oservidorsercapazdeidentificarqueoregistropodeserapagadodo
histrico,i.,quandoarespostativersidorecebida.

Semnticasperantefalhas:

Maybe(talvez):
peranteperdas,norepetidoopedidodeinvocao(emgeralno
aceitvel).
Atleastonce(pelomenosumavez):
peranteperdasouatrasosnaresposta,so
reenviadospedidosdeexecuoquenosoreconhecidoscomoduplicadospelo
servidor(sdeveserusadoemoperaesidempotentes).
Atmostonce(nomximoumavez):
Ospossveisreenviosdepedidosso
reconhecidoscomoduplicadospeloservidor(asemnticahabitualdossistemasde
invocaoremota)

CAPITULO5

Middleware:
osofwaterqueforneceummodelodeprogramaoacimadosblocosde
construobsicosdeprocessosedepassagemdemensagens.Umaspectoimportantedo
middlewareatransparnciadalocalizaoeaindependnciadosdetalhesdosprotocolos
decomunicao,sistemasoperacionaisehardwaredecomputador.Algumasformasde
middlewarepermitemquecomponentesdistintossejamescritosemdiferenteslinguagensde
programao.

Transparnciadelocalizao:
naRPC,oclientequechamaumprocedimentonopode
identificarseeleexecutadonomesmoprocessoouemumoutroprocesso,possivelmente
emumcomputadordiferente.Oclientetambmnoprecisasaberalocalizaodoservidor.

Protocolosdecomunicao:
osprotocolosquesuportamasabstraesdemiddlewareso
independentesdosprotocolosdetransportesubjacentes.Porexemplo,oprotocolo
requisiorespostapodeserimplementadosobreUDPousobreTCP.

Hardwaredecomputador:
Usamsepadresderepresentaoexternadedadosno
marshillingeunmarshillingdemensagens.Elesocultamasdiferenasdevidosarquiteturas
dehardware,comoaordemdosbytes.

SistemasOperacionais:
asabstraesdemaisaltonvelfornecidaspelacamadade
middlewaresoindependentesdosSOssubjacentes.

Usodevariaslinguagensdeprogramao:
Issoobtidopelousodeuma
linguagemde
definiodeinterface
(IDL)paradefinirinterfaces.

Interfaces:
Formadeorganizarumprogramacomoumconjuntodemdulosquepodemse
comunicar.Umainterfacedefinidaparacadamdulo.Ainterfacedeummduloespecifica
osprocedimentoseasvariveisquepodemseracessadasapartirdeoutrosmdulos.

Interfacesemsistemasdistribudos:
Apenasosmtodossoacessveisatravsde
interfaces.

Interfaceremota:
Cadaobjetoremototemumainterfaceremotaqueespecificaquaisdos
seusmtodospodemserinvocadosremotamente.

Interfacedeservio:
nomodeloclienteservidor,cadaservidorforneceumconjuntode
procedimentosqueestodisponveisparausopelosclientes.Porexemplo,umservidorde
arquivosforneceriaprocedimentosparaleregravararquivos.Otermointerfacedeservio
usadoparasereferirespecificaodosprocedimentosoferecidosporumservidor,
definindoostiposdosargumentosdeentradaesadadecadaumdosprocedimentos.

OmodelodeObjeto:

Referenciasdeobjeto:
Asrefernciasdeobjetosovaloresdeprimeiraclasse,
significandoqueelespodem,porexemplo,seratribudosavariveis,passadoscomo
argumentoseretornadoscomoresultadosdemtodos.
Interfaces:
Umainterfacetambmdefineostipoquepodemserusadosparadeclarar
otipodevariveis,oudosparmetros,evaloresderetornodosmtodos.Interfaces
notemconstrutores.
Aes:
EmumprogramaOO,aaoiniciadaporumobjetoinvocandoummtodo
emoutroobjeto.Umainvocaopodeincluirinformaesadicionais(argumentos)
necessriasparaexecutaromtodo.Uma
ao
umencadeamentodeinvocaes
relacionadasdemtodos,cadaumacomseurespectivoretorno.Aativaodeum
mtodopodeter3efeitos:,

1. oestadodoreceptorpodeseralterado
2. umnovoobjetopodeserinstanciadoporexemplo,pelousodeumconstrutor
emJAVAouC++
3. outrasinvocaespodemocorrernosmtodosdeoutrosobjetos.

Excees:
Asexceesproporcionamumamaneiradetratarcomcondiesdeerro,
semcomplicarocdigo.Almdisso,cadacabealhodemtodolista,explicitamente,
comoexceesascondiesdeerroquepodeencontrar,permitindoqueosusurios
dessemtodoastratemadequadamente.
Coletadelixo:
necessriofornecerumamaneiradeliberaroespaoemmemria
ocupadopelosobjetos,quandoelesnosomaisnecessrios.Quandoumobjeto
noestmaisacessvel,recuperaoespaoemmemriaeotornadisponvelpara
alocaoporoutrosobjetos.

OmodelodeObjetosdistribudos:
Cadaprocessocontmumconjuntodeobjetos,alguns
dosquaispodemreceberinvocaeslocaiseremotas,enquantooutrosobjetospodem
recebersomenteinvocaeslocais.

Referenciadeobjetoremoto:
outrosobjetospodeminvocarosmtodosdeumobjeto
remoto,setiveremacessosuarefernciadeobjetoremoto.
Asrefernciasdeobjetoremotosoanlogasslocais,pois:
1. oobjetoremotoquevaireceberumainvocaoamtodoremotoespecificadopelo
incovadorcomoumarefernciadeobjetoremotoe
2. asrefernciasdeobjetoremotopodemserpassadascomoargumentoseresultados
deinvocaesamtodosremotos.

Interfaceremota:
todoobjetotemumainterfaceremotaespecificandoqualdeseusmtodos
podeserinvocadodeformaremota.Objetosemoutrosprocessosspodeminvocar
mtodospertencentesinterfaceremota.

Aesemumsistemadeobjetodistribudo:
Assimcomonocasonodistribudo,uma
aoiniciadaporumainvocaoamtodo,aqualpoderesultaremmaisinvocaesa
mtodosemoutrosobjetos.Nocasodistribudo,osobjetosenvolvidosemumencadeamento
deinvocaesrelacionadaspodemestarlocalizadosemdiferentesprocessosouem
diferentescomputadores.

requisioparaexecutaralgumaoperaoemumobjetoremoto
obtenoderefernciasdeobjetosremotos
instanciaodeobjetosremotos(atravsdefbricas)

Coletadelixoemumsistemadeobjetodistribudo:
Acoletadelixodistribuda
geralmenteobtidapelacooperaoentreocoletordelixolocalexistenteeummdulo
adicionadoquerealizaumaformadecoletadelixodistribuda,normalmentebaseadaem
contagemdereferncia.

requercontagemderefernciasexplcita
rastreamentodetodasasrefernciastrocadas
poucoeficienteoudifcildeserimplementada

Excees:
Ainvocaoamtodoremotodevesercapazdelanarexcees,como
timeouts,causadospeloenviodemensagens,assimcomoaquelasocorridasdurantea
execuodomtodoinvocado.

errosdeaplicao:geradospelalgicadoservidor
errosdesistema:geradospelomiddleware
conduzidosdevoltaaoclientesobaformade
mensagens

RepresentaodeRefernciasdeObjetos:
Necessriaquandoobjetosremotossopassadoscomoparmetro
Arefernciaserializada(nooobjeto)
Contmtodainformaonecessriaparaidentificar(eenderear)umobjeto
unicamente nosistemadistribudo.

SemnticadeinvocaoRMI:

Semnticade
invocaotalvez
:
Omtodoremotopodeserexecutadoumavezou
noserexecutado.Asemntica
talvez
surgequandonenhumadasmedidasde
tolernciaafalhasaplicada.Tiposdefalhasso:
Falhaporomisso,seamensagemdeinvocaoouderesultadoforperdida
falhasporcolapso,quandooservidorquecontmoobjetoremotofalha.

Seamensagemderesultadonotiversidorecebidaapsumdadotempolimite(timeout)e
nohouvernovastentativas,nohavercertezaseomtodofoiexecutado.Seamensagem
deinvocaofoiperdida,entoomtodonotersidoexecutado.Poroutrolado,omtodo
podetersidoexecutadoeamensagemderesultado,perdida.Umafalhaporcolapsopode
ocorrerantesoudepoisdomtodoserexecutado.
Asemnticatalveztilapenasparaaplicaesnasquaissoaceitveisinvocaes
malsucedidasocasionais.

Semnticadeinvocao
pelomenosumavez
:
Comasemnticadeinvocao
pelomenosumavez
,oinvocadorrecebeumresultadoquandoomtodofoi
executadopelomenosumavez,ourecebeumaexceo,informandoquenenhum
resultadofoiobtido.Mascaraasfalhasporomissoepodesofrerosseguintestipos
defalhas:
falhasporcolapso
falhasarbitrarias(bizantinas),noscasosemqueamensagemdeinvocao
retransmitida,oobjetopodereceblaeexecutaromtodomaisdeumavez
possivelmentecausandooarmazenamentoouoretornodevaloreserrados.
Semnticadeinvocao
nomximoumavez
:
comasemnticadeinvocao
no
mximoumavez,
ouoativadorrecebeumresultadoquandoomtodofoiexecutado
exatamenteumavez,ouemcasocontrrio,umaexceo.

Transparncia:
Todasasetapasnecessriasparaempacotamentoetrocasdemensagens
soocultadasdoprogramadorquefazumachamadadeprocedimentoremoto.

Mdulodecomunicao:
Omdulodecomunicaousaapenasostrsprimeiros
elementos,osquaisespecificamotipodemensagem,suarequestIdearefernciaremotado
objetoaserinvocado.Oidentificadordemtodo,etodoomarshillingeunmarshilling,de
responsabilidadedosoftwareRMI.
Omdulodecomunicaonoservidorselecionaodespachanteparaaclassedoobjetoaser
invocado,passandosuareferncialocal,obtidaapartirdomduloderefernciaremota
atravsdoidentificadordoobjetoremotodadopelamensagemderequisio.

Cuidadoprotocolodecomunicaodemensagensentreclienteeservidor
Implementaoprotocolorequisioeresposta
Defineostiposdemensagensutilizados
Provaidentificaodasrequisies
Semnticadechamadas(ex.:atmostonce)
Retransmissoeeliminaodeduplicatas

Mduloderefernciasremotas:
responsvelpelatransformaoentrerefernciasde
objetolocaleremotoepelacriaoderefernciasdeobjetoremoto.Omdulodereferncia

remotadecadaprocessocontmumtabeladeobjetosremotospararegistrara
correspondnciaentreasrefernciasdeobjetolocaldesseprocessoeasrefernciasde
objetoremoto.Atabelainclui:

Umaentradaparatodososobjetosremotosmantidospeloprocesso.
Umaentradaparacadaproxylocal.
Quandoumobjetoremotoprecisaserpassadocomoargumentoouresultadopela
primeiravez,omduloderefernciaremotacriaumarefernciadeobjetoremoto,a
qualadicionaemsuatabela.
Quandoumarefernciadeobjetoremotochegaemumamensagemderequisioou
resposta,solicitadaaomduloderefernciaremotadeobjetolocal,aqualpodese
referiraumproxyouaumobjetoremoto.Nocasodarefernciadeobjetoremotono
estarnatabela,oRMIcriaumnovoproxyepedeaomduloderefernciaremota
paraadicionalonatabela.

Serventes:
Umserventeumainstnciadeumaclassequeforneceocorpodeumobjeto
remoto.oserventequetrataasrequisiesremotasrepassadaspeloesqueleto
correspondente.Osserventessopartesintegrantesdoprocessoservidor.Elessocriados
quandoosobjetosremotossoinstanciadosepermanecememusoatnoseremmais
necessrios,sendofinalmenteexcludos.

OsoftwareRMI:
umacamadadesoftwaremiddlewareentreosobjetosdoaplicativoe
osmdulosdecomunicaoederefernciaremota.

Proxy:
Afunodeumproxytornarainvocaoamtodoremototransparente
paraosclientes,comportandosecomoumobjetolocalparaoinvocadormas,em
vezdeexecutarumainvocaolocal,eleencaminhaumamensagemparaumobjeto
remoto.Eleocultaosdetalhesderefernciadeobjetoremoto,domarshillingde
requisiesedounmarshillingderespostas,edoenvioerecepodemensagensdo
cliente.

Despachante:
umservidortemumdespachanteeumesqueletoparacadaclasse
querepresentaumobjetoremoto.OdespachanteeoproxyusamomesmomethodId
paraosmtodosdainterfaceremota.
Funcionamento:Oservidortemumdespachanteeumesqueletopadaa
classedeumobjetoremoto.Odespachanterecebeamensagemderequisiodomdulode
comunicaoeutilizaomethodIdparaselecionaromtodoapropriadonoesqueleto,
repassandoamensagemderequisio.

Esqueleto:
aclassedeumobjetoremototemumesqueleto,oqualimplementaos
mtodosdainterfaceremota,masdeumaformadiferentedosmtodos
implementadosnoserventequepersonificaoobjetoremoto.
Ummtodode
esqueleto
desempacotaosargumentosnamensagemderequisioeinvocao
resultado,juntocomasexcees,emumamensagemderespostaqueenviada
paraomtododoproxyquefezarequisio.

Ovinculador(binder):
Umvinculadorumservioseparadoquemantmumatabela
contendomapeamentosdosnomestextuaispararefernciasdeobjetoremoto.Eleusado
pelosservidorespararegistrarseusobjetosremotospelonomeepelosclientes,para
pesquisalos.

Proxydinmico:
genrico,independentedeinterface
utilizaumadefiniodeinterfaceacessveldinamicamenteparaformataras
requisies

repositriodeinterfaces
tilquandonoseconheceainterfaceemtempodeprogramao

Skeletondinmico
permitereceberchamadasdestinadasaqualquertipodeobjeto/interface
tilnaconstruodeservidoresgenricos

Progamasclienteseservidores:
Oprograma
servidor
contemasclassesparaos
despachanteseesqueletos,juntocomasimplementaesdasclassesdetodososserventes
quesuporta.Contmumasessodeinicializaoqueresponsvelporcriareinicializar
pelomenosumdosserventesquefazempartedoservidor.Maisserventespodemser
criadosemrespostarequisiesdosclientes.

Oprogramacliente
conterasclassesdosproxiesdetodososobjetosremotosque
ativar.Elepodeusarumvinculadorparapesquisarrefernciasdeobjetoremoto.

Trheadsnoservidor:
Paraevitarqueaexecuodeumainvocaoatraseaexecuode
outra,geralmenteosservidorescriamumathreadparacadainvocaoremota.

Ativaodeobjetos:
consistenacriaodeumobjetoativoapartirdoobjetopassivo
correspondente,pelacriaodeumanovainstnciadesuaclasseepelainicializaode
suasvariveisdeinstnciaapartirdoestadoarmazenado.Osobjetospassivospodemser
ativadospordemandaporexemplo,quandoelesprecisamserinvocadosporoutrosobjetos.

Repositriodeobjetospersistentes:
Umobjetoquemantmseuestadoentreinvocaes
chamadodeobjetopersistente.Geralmenteosobjetospersistentes,sogerenciadospor
repositriosdeobjetospersistentes,queguardamseusestadosemumaformaempacotada
nodisco.

Coletadelixodistribuda:
Oobjetivodocoletordistribudogarantirque,seumareferncia
localouremotaparaumobjetoaindaformantidaemalgumlugar,emumconjuntodeobjetos
distribudos,entooprprioobjetocontinuaraexistirmasassimquenohouvermais
nenhumarefernciaparaele,esseobjetosercoletadoeamemriaporeleutilizadaser
recuperada.(PAG181)

Chamadadeprocedimentoremoto:
Umachamadadeprocedimentoremotomuito
parecidacomumainvocaoamtodoremoto,poisumprocessoclientechamaum
procedimentoqueestsendoexecutadoemumprocessoservidor.
OsoftwareRPCnosepreocupacomobjetoserefernciasdeobjeto.Oclientequeacessa
umservioincluiumprocedimentostubparacadaprocedimentodainterfacedeservio.

Stub:
semelhanteaoproxy.Elesecomportacomoumprocedimentolocalparaocliente,
masemvezdeexecutarachamada,eleempacotaoidentificadordeprocedimentoeos
argumentosemumamensagemderequisioeaenviaparaoservidorpormeiodeseu
mdulodecomunicao.Quandoamensagemchegaeledesempacotaosresultados.

Interfaces:
Provemacessoscaractersticasexternamentevisveisdeumobjetooumdulo
emgeral:mtodosevariveis
Papelfundamentalnoencapsulamento
Emsistemasdistribudos:apenasosmtodossoacessveisatravsdeinterfaces
Passagemdeparmetros:copyrestore
parmetrosdeentradaesada
ponteirosnosopermitidos
objetoscomoparmetros:refernciadeobjeto

RMIregistry:
ovinculadordaRMIJava.UmainstanciadeRMIresgistrydeveser
executadaemcadacomputadorservidorquecontenhaobjetosremotos.Elemantmuma
tabelamapeandonomestextuaisnoestiloURLs,emrefernciaparaobjetosremotos
contidosnessecomputador.