Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [c#] Socket Server Cluster

    Salve,
    dopo aver realizzato un server per la gestione di vari client es: Msn Messenger.

    Il server è stato sviluppato in multithread, 2 thread (uno per la scrittura e una per la lettura di dati su socket) per ogni utente che partecipa alla sessione, + un thread per accettare le connessioni, + un thread che detta le regole della sessione.

    Quello che mi piacerebbe fare è far funzionare il server in un sistema a cluster, in modo da garantire il servizio, avendo così un'alta affidabilità e alte prestazioni.

    Avete qualche idea a riguardo?

    Grazie a tutti per la collaborazione

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Di quale "sistema cluster" parli, in particolare?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Avevo pensato di creare un'applicazione master che ha la funzione di dividere il triffico sulle macchine sottostanti (slave) le quali dovrebbero essere dei cloni.
    La domanda è questa con i tipi streamer posso creare dei cloni serializzando ad esempio gli oggetti?

    in parole semplici se serializzo un oggetto che contiene il socket riesco a comunicare anche con la copia con il client??

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    In quel caso, l'applicazione master diventa un SPOF e quindi non ottieni l'alta affidabilità.

    Questa la ottieni se la tua applicazione gira su un server in modo tale che possa essere eseguita automaticamente su un altro server se il primo cade.

    Le altre prestazioni le ottieni se usi anche un sistema di "load balancing".

    I due sistemi possono coesistere, ma sono realizzabili tramite una architettura sistemistica complessa, non tramite accorgimenti dell'applicazione.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    però se di applicazioni master ce ne fossero due, cioè una pronta a sostituirla, il sistema sarebbe affidabile, senza spof.
    Penso che sei più esperto di me in materia, esiste qualche soluzione esclusivamente hardware che farebbe al caso mio?

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da carmineabomb
    però se di applicazioni master ce ne fossero due, cioè una pronta a sostituirla, il sistema sarebbe affidabile, senza spof.
    Sì, ma non dovrebbe girare sullo stesso server. E le cose diventerebbero complesse, in quanto le due applicazioni dovrebbero "comunicare" per distribuire opportunamente il carico.

    Penso che sei più esperto di me in materia, esiste qualche soluzione esclusivamente hardware che farebbe al caso mio?
    Non so su che architetture lavori, ma il tuo sembra un problema strettamente "sistemistico".
    Esistono soluzioni hardware+software di sistema ma dipendono da tante "variabili".

    Per la distribuzione del carico esistono appositi "load balancer" (sostanzialmente hardware dedicato), ad esempio F5, o Radware o simili.

    Per la clusterizzazione, sarebbe interessante utilizzare delle Virtual Machine che girano su VMWare ESX clusterizzato. Le VM sarebbero "spostate" automaticamente al verificarsi di problemi sull'host fisico verso un altro host fisico.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    più o meno come quello che volevo creare.
    Volendo tralasciare le prestazione visto che si tratta di un carico di 3000 utenti al massimo.
    Posso creare un Server fisico master che comunica con un altro Server slave.
    praticamente la comunicazione non è altro che l'aggiornamento dello stato del programma, avendo quindi su slave la copia di master.

    In caso di problemi, o di manutenzione, passo il carico al server slave che a sua volta si può mettere in attesa che un slave si collegasse a lui e quindi diventerebbe un master.

    Come rilevare i problemi? come far entrare in gioco l'altro server?
    ho pensato ad un tunneling da router.

    L'argomento sembra interessante... mi informerò sulle tue soluzioni
    grazie intanto....!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.