Comunicatia cu servicii externe si alte instante ale aceluiasi serviciu Mugurel Ionuț Andreica

Sizin üçün oyun:

Google Play'də əldə edin


Yüklə 509 b.
tarix02.11.2017
ölçüsü509 b.


Comunicatia cu servicii externe si alte instante ale aceluiasi serviciu

  • Mugurel Ionuț Andreica

  • 2012


Comunicatia cu servicii externe

  • In comunicatia cu serviciile externe, un serviciu se comporta ca un client pentru serviciul extern

  • Trebuie sa avem un modul client care interactioneaza cu serviciul extern (este interfata prin care se trimit cererile serviciului extern) si se primesc raspunsurile

  • Putem folosi cate un modul client separat pentru fiecare serviciu extern sau, in functie de caz, acelasi modul poate interactiona cu mai multe servicii externe



Comunicatia cu alte instante ale aceluiasi serviciu

  • Cand o instanta X a unui serviciu S doreste sa comunice cu o instanta Y a aceluiasi serviciu:

    • Cel mai simplu model: X se comporta ca un client (special) al lui Y
      • X poate efectua aceleasi tipuri de cereri ca un client normal, plus, eventual, alte tipuri de cereri speciale
    • X are un modul client prin care comunica cu Y (sau cu orice alta instanta a serviciului S)
    • Y primeste cererile de la X prin intermedul aceluiasi Connector prin care primeste si cererile de la clienti obisnuiti sau poate utiliza un Connector dedicat pentru primirea de cereri de la alte instante ale serviciului S
  • Cand o instanta X doreste sa comunice cu mai multe instante Y ale aceluiasi serviciu (si sa le transmita aceleasi date):

    • Cel mai simplu model: X comunica cu fiecare instanta independent


Comunicatia de tip multicast intre instantele aceluiasi serviciu

  • Motivatie

    • Notificari
    • Distributia continutului generat de un client catre alti clienti (de ex., live streaming, replicare de date, sincronizarea starii interne)
    • etc.
  • Solutii posibile pentru comunicatia multicast



IP Multicast (1/3)

  • Grup de multicast (identificat printr-o adresa IP dintr-un range special: 224.0.0.0-239.255.255.255)

  • O instanta poate sa se inscrie intr-un grup de multicast (si sa il paraseasca ulterior)

    • Se creeaza un arbore de distributie a pachetelor, ce contine membrii din grup
  • Transmitatorul trimite fiecare pachet grupului de multicast, pachetul ajungand la toti membrii grupului

  • Echipamentele de retea (router-e, switch-uri) sunt cele care faciliteaza IP Multicast (fara ele, aceasta tehnologie nu este posibila)



IP Multicast (2/3)

  • MulticastSocket socket = new MulticastSocket(4446);

  • InetAddress group = InetAddress.getByName("230.0.0.1");

  • socket.joinGroup(group);

  • DatagramPacket packet;

  • byte[] buf = new byte[256];

  • packet = new DatagramPacket(buf, buf.length);

  • socket.receive(packet);

  • socket.leaveGroup(group);

  • socket.close();



IP Multicast (3/3)

  • DatagramSocket socket = new DatagramSocket();

  • byte[] buf = new byte[256];

  • InetAddress group = InetAddress.getByName(“230.0.0.1”);

  • DatagramPacket packet = newDatagramPacket(buf, 0, buf.length, group, 4446);

  • socket.send(packet);



Topologii arborescente

  • Instantele serviciului se organizeaza (prin decizii locale, distribuite sau prin coordonare centralizata sau hibrida) intr-o topologie peer-to-peer cu structura de arbore

  • Fiecare instanta are o multime de vecini in cadrul topologiei

  • Cand o instanta primeste un mesaj de la un vecin, ea trimite mesajul mai departe tuturor celorlalti vecini ai sai

  • Arborele trebuie actualizat cand:

  • O instanta poate comunica periodic cu vecinii ei (sau on-demand), pentru a face schimb de informatii necesare pentru mentinerea arborelui (sau pentru actualizarea arborelui)



Topologii peer-to-peer cu diverse proprietati

  • Instantele serviciului se organizeaza (prin decizii locale, distribuite sau prin coordonare centralizata sau hibrida) intr-o topologie peer-to-peer cu anumite proprietati (nu neaparat arborescenta)

  • Fiecare instanta are o multime de vecini in cadrul topologiei

  • Cand o instanta primeste un mesaj de la un vecin, ea trimite mesajul mai departe tuturor celorlalti vecini ai sai

    • Astfel, spre deosebire de cazul topologiei arborescente, o instanta poate primi acelasi mesaj de mai multe ori => trebuie implementate mecanisme pentru a identifica mesajele duplicate
  • Topologia trebuie actualizata cand:

    • Este pornita o instanta noua
    • Este oprita o instanta veche
    • Periodic (eventual) – pentru a optimiza anumiti parametrii de performanta
  • O instanta poate comunica periodic cu vecinii ei (sau on-demand), pentru a face schimb de informatii necesare pentru mentinerea topologiei (sau pentru actualizarea topologiei)



Scalabilitatea interconectarii instantelor

  • Daca un serviciu are multe instante pornite si/sau daca instantele sunt pornite/oprite des, nu este fezabil (scalabil) ca fiecare instanta sa cunoasca fiecare alta instanta (pentru a putea comunica cu ea direct)

    • In aceste cazuri, instantele se organizeaza intr-o topologie de tip peer-to-peer (service overlay network) ce este utilizata chiar si in vederea comunicatiei de tip punct-la-punct
    • Topologia trebuie sa ofere posibilitati ca o instanta sa comunice cu o alta instanta nu doar pe baza unei adrese/identificator, ci pe baza de scop
      • de ex., un serviciu de stocare de date stocheaza datele distribuit, in functie de anumite criterii ; cand un client cere datele unei instante, aceasta trebuie sa redirecteze clientul catre instanta ce detine datele dorite de client (redirectarea e facilitata de topologie)


Moduri de a procesa cereri care necesita interactiune cu alte instante / servicii

  • Cand un client trimite o cerere catre o instanta X, iar cererea necesita comunicatia cu servicii externe / alte instante ale serviciului:

    • X efectueaza aceasta comunicatie cu serviciile externe / celelalte instante ale serviciului ca etape din cadrul procesarii cererii SAU
    • X ii spune clientului cu ce servicii externe / alte instante sa comunice ca parte a raspunsului la cerere (astfel, cererea nu este procesata complet din punctul de vedere al clientului, deoarece acesta trebuie sa transmita alte sub-cereri ulterioare)


Starea interna a unui serviciu cu mai multe instante

  • Fiecare instanta a unui serviciu detine date generate in urma interactiunilor cu clientii sai, cu alte instante ale serviciului si cu servicii externe

    • O parte din aceste date sunt valide doar pe durata de viata a instantei (de ex., referinte la obiecte create de instanta, informatii despre vecinii instantei, etc.)
    • Alte date sunt, insa, importante si este de dorit sa supravietuiasca si in cazul opririi (defectarii) instantei
      • Solutii:
        • Stocarea acestor date intr-un serviciu de stocare extern (pasarea responsabilitatii catre un alt serviciu) si utilizarea unor identificatori creati dupa reguli standard pentru accesul acestor date (sau replicarea identificatorilor la alte instante)
        • Replicarea acestor date pe alte instante ale serviciului
        • Hibride (o combinatie a celor doua variante de mai sus)


Service Discovery (1/2)

  • Daca un client doreste sa acceseze una din instantele unui serviciu, cum afla despre aceasta ?

  • Mecanism de service discovery (prin care un client selecteaza o instanta cu care sa interactioneze)

    • de ex., instanta cea mai apropiata (dpdv al latentei)
  • Service Discovery static

    • Fiecare client descarca un fisier cu informatii despre instante de undeva (nu se pot adauga instante noi) SAU
    • Fiecare client are un fisier de configurare cu informatii despre instantele la care se poate conecta (acelasi dezavantaj)


Service Discovery (2/2)

  • Service Discovery dinamic

    • Clientul acceseaza un serviciu de lookup separat, de la care obtine o lista a instantelor la care se poate conecta
      • Serviciul de lookup ii poate intoarce o lista cu un numar mic de instante, cele considerate cele mai potrivite – de ex., se poate efectua load balancing
      • Din lista intoarsa, clientul poate selecta o instanta conform unor criterii de performanta (de ex., latenta)
        • Alternativ (dar ne-uzual), un client poate interactiona cu mai multe instante ale serviciului (pentru cereri diferite)



Dostları ilə paylaş:
Orklarla döyüş:

Google Play'də əldə edin


Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2017
rəhbərliyinə müraciət

    Ana səhifə