eRIMP

6
O arhitectură client-server two-tier portabilă pentru gestiunea sarcinilor la distanţă. eRIMP Ciprian Pungilă Universitatea de Vest Facultatea de Matematică‐Informatică Timişoara, 2007 [email protected] Abstract Arhitectura clientserver este o paradigmă des întâlnită în era informațională actuală, deosebit de utilă atunci când vine vorba de modelarea unor procese sau activități distribuite, sau de controlul workflowului întro rețea de calculatoare. O altă utilizare importantă a aceste arhitecturi o reprezintă controlul încărcării în sistemele distribuite, respectiv gestiunea centralizată a informației. Articolul de față îşi propune să prezinte o arhitectură clientserver portabilă pentru gestiunea la distanță a sarcinilor, atât pe sistemele actuale Windows, cât şi pe sistemele UNIX, împreună cu o aplicație clientserver care o modelează. 1 Introducere Arhitectura clientserver este o arhitectură computațională care presupune unul sau mai multe procese client, aflate pe calculatoare client, invocând servicii de la un proces server, aflat pe un calculator conectat în rețea cu calculatoarele client. Arhitectura derivă din programarea modulară, model care presupune divizarea codului sursă în mai multe părți (identificate ca fiind module), pentru o mai uşoară gestiune ulterioarăşi o mai facilă dezvoltare de cod ulterioară. Un exemplu este redat în figura 1. Un domeniu important al tehologiei informaționale este cel legat de graficăşi de procesarea grafică. Domeniile de maxim interes în acest scop includ procesarea digitală a imaginilor şi animația computerizată. În acest scop există numeroare stații dedicate prelucrărilor grafice, cele mai cunoscute fiind cele de la Sillicon Graphics, stații care folosesc o arhitectură multiprocesor împreună cu plăci grafice corelate cu acceleratoare bi şi tridimensionale. Un factor determinant pentru orice sistem şi pentru orice prelucrare, de orice fel, este costul. Ca şi alți factori la fel de semnificativi, el este unul dintre elementele determinante atunci când vine vorba de a alege un sistem dedicat prelucrărilor digitale sau de alt tip. În general însă, stațiile grafice dedicate exclusiv 1

description

eRimp documentation

Transcript of eRIMP

  • O arhitectur client-server two-tier portabil pentru gestiunea sarcinilor la distan. eRIMP

    CiprianPungilUniversitateadeVest

    FacultateadeMatematicInformaticTimioara,2007

    [email protected]

    Abstract Arhitectura clientserver este oparadigm des ntlnit n erainformaional actual, deosebit de utilatuncicndvinevorbademodelareaunorprocese sau activiti distribuite, sau decontrolul workflowului ntro reea decalculatoare. O alt utilizare important aaceste arhitecturi o reprezint controlulncrcrii n sistemeledistribuite, respectivgestiunea centralizat a informaiei.Articolulde fa ipropune sprezinte oarhitectur clientserver portabil pentrugestiunea la distan a sarcinilor, att pesistemele actuale Windows, ct i pesistemele UNIX, mpreun cu o aplicaieclientservercareomodeleaz.

    1 Introducere Arhitectura clientserver este oarhitectur computaional carepresupuneunulsaumaimulteproceseclient,aflatepecalculatoare client, invocnd servicii de laun proces server, aflat pe un calculatorconectat n reea cu calculatoarele client.Arhitectura deriv din programareamodular,modelcarepresupunedivizareacodului surs n mai multe pri(identificatecafiindmodule),pentruomaiuoar gestiune ulterioar i o mai facil

    dezvoltare de cod ulterioar.Un exempluesteredatnfigura1.

    Undomeniuimportantaltehologieiinformaionaleestecellegatdegraficideprocesarea grafic. Domeniile de maximinteres n acest scop includ procesareadigital a imaginilor i animaiacomputerizat. n acest scop existnumeroare staii dedicate prelucrrilorgrafice, celemai cunoscute fiind celede laSillicon Graphics, staii care folosesc oarhitectur multiprocesor mpreun cuplci grafice corelate cu acceleratoare bi itridimensionale. Un factor determinant pentru oricesistem i pentru orice prelucrare, de oricefel, este costul. Ca i ali factori la fel desemnificativi,elesteunuldintreelementeledeterminante atunci cnd vine vorba de aalege un sistem dedicat prelucrrilordigitale sau de alt tip. n general ns,staiile grafice dedicate exclusiv

    1

  • algoritmilor intens computaionali folosesccelpuinpatruprocesoare,mpreuncuunsistemdeoperarestabilieficientdinpunctdevederealoptimizrii lanivelelementar(inline)alcodului. O arhitectur twotier este oarhitectur ncareclientulcomunicdirectcuserverul,frinterveniaunuialtserver.Este o arhitectur folosit n general nmediilecucelmult50deutilizatori,pentruapreveni suprancrcarea serverelor.Dacsedoreteomrireanumruluideclieni,este necesar s se foloseasc o arhitecturthreetier. Plecnd de la aceste considerente,propunem o arhitectur clientserver twotier portabil (multiplatform), dedicatprelucrrilorintenscomputaionale,pecareoaplicm nparticularprocesrii nformatdigital a imaginilor,dezvoltat n limbajulDelphi i respectiv C++. Mediile dedezvoltare folosite la implementare vor fiDelphi7Enteprise(pentruparteadeclient,respectiv server Windows a aplicaiei) iKylix C++ 3 Enterprise (pentru partea deserveraaplicaiei,pe sistemeledeoperareUNIX). 2 Activiti similare Arhitectura clientserver a fostimplementat n numeroase sisteme decalcul existente la ora actual, unul dintrecelemai simple fiind protocolulHTTP detransfer a informaiei pe Internet.Clientul(webbrowseruldepemainaclient)faceocerere la serverul HTTP (care ruleaz pemaina server), urmnd ca serverul s irspund cu coninutul text al paginii pecareutilizatorul ncearc s lacceseze.Denotat ns c aceast arhitectur nu estetwotier, n general ntre client i serverinterpunndusenumeroarealteservere(deexempluDNS).

    ncontextulmodelului clientserverdetipcerereHTTP,unmodelesteredat nfigura3:

    Un alt exemplu tipic l reprezintsistemele de mesagerie instant, ca deexemplu ICQ sau AIM, sisteme care sebazeaz pe o arhitectur twotier simpl,compus dintrun server care gestioneazconexiunile de la clieni (programele demesagerie care ruleaz pe calculatoareleclient), respectiv accept mesajeleutilizatorilorclientileredirecioneazspreclientuldestinaie,totulntimpreal. Sistemul pe care l abordm nlucrarea de fa i propune s facilitezeaccesul la serviciile oferite de o staiededicat procesrii grafice (intenscomputaionale) de mare performan,considerat ca server al arhitecturii (deobiceimultiprocesor,irulndsistemuldeoperare UNIX), unui numr de clieni(reprezentnd staii cu performane micisau medii, pe care ruleaz sistemul deoperare Windows) conectai la server iinteracionnd cu acestapentruprocesareadigitalaunorasaumaimultorimaginipecare clientul le solicit serverului. Pn laoraactual,nusecunoateoalt iniiativ

    2

  • opensource pentru un astfel de modelclientserver. 3 Componente de baz Componentele de baz ale uneiarhitecturiclientserversunt: ocombinaiedefrontendpepartea

    de client, care interacioneaz cuutilizatorul, i un server n fundal,care interacioneaz cu resursapartajat;

    sarcinilefrontendibackendaungeneral necesiti diferite pentru acalcula viteza procesorului,memoria, viteza discului icapacitileacestuia,idispozitiveledeintrare/ieire;

    mediul este n general eterogen imultivendor;platformahardware isistemeledeoperarealeclientuluiiserverului n general nu suntaceleai; clientul i serverulcomunicprintrointerfastandardde comunicare (API) i apeluri deproceduriladistan(RPC).

    Aplicaiape care amdezvoltato senumete eRIMP (enhanced Remote ImageManipulationProgram)iimplementeazoarhitectur clientserver pentru a permitemanipularea imaginilor la distan.ServerulafostconstruitpentruplatformeleUNIXnprincipal,nsexistovariantdeserver (care ns nu va fi meninut nversiunile ulterioare),dezvoltat nDelphi7 Enterprise, care faciliteaz rulareaserverului i pe sistemele de operareWindows. 4 Aplicaia client Aplicaiaclienteste importantmaiales din punct de vedere ergonomic, ea

    oferindunmediudelucruutilizatoruifinal.Interaciunea presupune mai muli pai,dintrecare: selectareaunui efect graficdin cele

    disponibile pe server, pentruprocesareaimaginii;

    selectarea imaginiicaresedoreteafiprocesatpeparteadeserver;

    arhivarea imaginiiitrimitereaei laserverpentruprocesare;

    ateptarea imaginii procesat de laserver;

    salvarea imaginiide ctreutilizatorlaodestinaiedorit.

    Din punct de vedere funcional,aplicaia client funcioneaz pe baza unuifiierdeconfigurarecarespecificadresaIPaserveruluidinreea,respectivportulundeclientul se poate conecta la server. nfiierul de iniializare se specific deasemenea i setrile pentru procesareagraficefectuatultimaoardeacea staieclient. Fiierul de configurare este nformat Windows INI standard, avndcmpuriledemaijos:

    [Effects] EffectParameter=25 [Connection] ServerIP=127.0.0.1 Port=7170 ReadTimeout=0 RecBufferSize=32768 SendBufferSize=32768

    Printre elementele configurable pepartea de client se numr i timpul detimeout al aplicaiei n cazul n careserverul nu rspunde la o cerere deconectare din partea clientului, respectivdimensiuneazoneitamponimplicitepentrutransferuldedate,dimensiunecaredepinden general de arhitectura reelei n caresistemuleste folosit,precum idecalitateaconexiunii ideparametriideperforman

    3

  • aledispozitivelor (routere, switchuri, etc.)folositepentrutransfer;nunultimulrnd,gradul de ncrcare al reelei idimensiunea zonei tampon implicite asistemului de operare afecteaz aceti doiparametrii. Algoritmul implementat pe parteadeclientesteredatschematicmaijos:

    Fiecareprocesclientcareruleazpestaiile client are un fir de execuie(implementat printrun obiect, instan aunei clase TWorkThread care extindeTThread) care se ocup cu dou sarciniimportante: Are rol de meninere activ a

    conexiunii (pentru a nu permitetimeout),prinpinguri consecutivela server, la intervale stabilite detimp.

    n cazul setrii de ctre firulprincipalaflaguluipentrutrimitereimagine, va trimite imaginea ctreserver i va reveni la ciclul normaldefuncionare.

    ncazulrecepiei,nurmaunuipingla server, a unui rspuns pentruprimirea unei imagini, o varecepiona (arhivat ZLib), o vadezarhiva i, ntro metodsincronizat cu firul de execuieprincipal, va permite refreshul peparteadeclientainterfeei,pentruaafia noua imagine, procesatdigital, aa cum a fost earecepionatdeclient.

    Schematic, acest algoritm esteprezentnfigurademaijos:

    Dup ce procesul client a trimisimaginea la server, n timp ce firul deexecuie ateapt primirea imaginiiprocesate de la acesta, utilizatorul va fiinformatcaplicaiaateaptrspunsdelaserver prin intermediul unei csue dedialog. Sincronizarea celor dou fire deexecuieestevitaliprevinedeadlockulibottleneckurile posibile n situaiile detransfer,respectivdeactualizarea ferestreiprincipale. Pentru a asigura sincronizarea,mediul de dezvoltare pune la dispoziiemethoda Synchronize(), care permiteaccesul exclusiv al unui fir de execuie lainterfaagrafic(GUI).

    5 Aplicaia server Aplicaia server este nucleulfuncionriicorecteieficienteaarhitecturiipropuse.Layeruldecomunicarecuclieniiesterealizatprintrunobiectinstanaunei

    4

  • claseTIdTCPServer,carepuneladispoziiefuncii trigger (declanatoare, sauevenimente n limbaj standard Delphi)pentru conectarea unui client la server,deconectarealui,etc. Aplicaia server a fost scris pe unsistem de operare Mandrake 8.2, folosindKylixC++3Enterprise.Au fostnecesare ilibrriile QT pentru anumite obiecte dinprogram. Serverul menine n permanen olistcuclieniiconectai,precum iun flagcare specific dac un client a trimis osarcin serverului saunu.Deasemenea, laselectareaunuiclientdinlistadeclienivorfi disponibile informaii despre dataconectrii,dataultimeisolicitri,numehosti nume calculator client. Fiecare clientconectat are un fir de execuie asociat peparteadeclient, fircareesteplasat ntrunobiectinstanaclaseiTThreadList. nmomentul conectriiunui client,serverul creeazun firde execuie n listacurent pentru el, asociind cu acest firinformaii despre client; ulterior, serverulrspunde clientului cu lista de efectedigitaledisponibile,acestea fiindafiate (iconfigurate corespunztor) pe partea declient.Listade efecte estedisponibil ntrun fiierde iniializareWindows standard(INI),custructura:

    [Grayscale] Author=Ciprian Pungila Description=Grayscale the image Customizeable=No

    n momentul deconectrii unuiclient de la server, acesta i actualizeazlista intern de fire de execuie (denumitClients),eliminndfiruldeexecuieasociatcuclientul. Evenimentul OnExecute alTIdTCPServerpermiteexecuiauneifunciihandlerpentruo comand recepionatdela un client, al crui fir de execuie este

    transmis ca i parametru (TIdPeerThread).n acest moment sunt actualizateinformaiile despre client, precum timpulultimei aciuni, iar serverul rspundeadecvatcomenziiprimite:

    dac este o comand de tip ping,serverul rspunde cu rspunsulimplicit;

    dac este o comand Process Image,serverul va crea un fir de execuiepentru clientul curent, prin creareauneiinstaneaTProcessThread.

    Obiectele de tip TProcessThreadsuntinstanealeuneisuperclaseaTThread,cu un constructor propriu, pentru aspecifica informaii despre clientul asociatcufiruldeexecuiealsarcinii. Modul n care firul de execuieasociatuneisarciniprovenitedelaunclienti ndeplinete sarcinile este redat ndiagramademaijos:

    Datorit modului de implementarea acestei arhitecturi pe partea de server,funcionarealuiestenetsuperioardacseutilizeazsistemeUNIXcuoimplementareeficient a firelor de execuie la nivelulkernelului,implementarecare,peunsistem

    5

  • multiprocesor, ar permite o partajareechilibrat a sarcinilor pe unul dinprocesoare. n sistemele actuale,procesoarele pun la dispoziie nucleeinterneseparatepentruexecuianparalelainstruciunilor, iar un sistem de operarededicat folosete aceste faciliti pentruprogramarea sarcinilor adecvat. Unul dinaceste sistemedeoperare este Sun Solaris,el fiind folosit pe cteva staii graficededicatenmodcurent. Profilulperformanal serveruluiafostsuperiorpeunsistemLinuxMandrake8.2, comparativ cu rularea aceluiai serverpe un sistem Windows XP, configuraiasistemelordetestfiindaceeai.

    6 Obiective propuse n viitor ne propunem smbuntim arhitectura propus,urmtorulpas constnd n scalarea ei la oarhitectur threetier i implementareasuportuluiRPCpentruclientiserver. Alte mbuntiri semnificativecarevorfiimplementatevorfi:

    o algoritm optimal pentru controlulncrcrii pe partea de serverintermediar n arhitectura threetier;

    o modularizare server i suportpentrupluginuri;

    o mai muli algoritmi avansai deprelucrare grafic digital (e.g.aged newspaper, buttonize,chisel, multiple light sourceshadowing).

    7 Concluzii Lucrarea de fa i propune sprezinte un model de arhitectur clientserver twotier portabil pentru gestiuneasarcinilor la distan, model care este

    deopotriv flexibil iutilpentru aplicaiilepractice. Corelarea arhitecturii cu un sistemde calcul multiprocesor dedicatprelucrrilor de mare putere, dotat cu unsistem de operare capabil s foloseascperformanele puse la dispoziie de ctreacesta duce la o cretere a performaneisemnificativa ntreguluisistemipermitecentralizarea algoritmilor implementai pepartea de server pe un singur calculator,deinepropunem caversiunileurmtoaressuporteunsistemcompletdistribuit. Aplicaia portabil eRIMP(enhanced Remote Image ManipulationProgram), cu server rulnd nprincipalpestaiileUNIXdedicateiclienicompuidinstaii Windows, implementeaz aceastarhitectur, aa cum exist ea n stadiulcurentdedezvoltare,urmndcaversiunileulterioaresombunteascisduclascalarea acesteia ntrun mod care seficientizeze att sarcina programatorului,ctisarcinasistemuluidecalcul. 8 Referine [1] A clientserver architecture forproviding clientspecific, interactive networkservices on the application layer, RolandHaratsch, TechnicalUniversity ofMunich,2002[2] Client/Server Architectures forBusiness Information Systems,KlausRenzel,Wolfgang Keller, 1997 [3] Client-Server Architecture, Lawrence Chung, Computer Science Program, The University of Texas, Dallas, 2004

    6