Soluzioni per "Modalità manutenzione"

0

Dato un'applicazione web in esecuzione su più di 10 server, quali tecniche sono state messe in atto per fare cose come alterare lo stato del tuo sito web in modo da poter implementare determinate funzionalità.

Ad esempio, potresti voler:

  • Limita gli accessi / disattiva alcune funzionalità
  • Trasforma il sito in "Sola lettura"
  • Trasforma la pagina del sito in modalità di manutenzione singola.

Fare una delle cose sopra è piuttosto banale. Puoi lanciare un particolare "flag" in un file .ini, o aggiungere una riga / valore a una tabella site_options nel tuo database e solo leggere quel valore e fare la cosa appropriata.

Ma queste soluzioni hanno i loro problemi.

Svantaggi / problemi

Ad esempio, se si utilizza un file per l'applicazione e si desidera disattivare temporaneamente una determinata funzione, è necessario aggiornare questo file su tutti i server. Quindi, potresti voler controllare qualcosa come ZooKeeper, ma probabilmente stai complicando le cose.

Quindi, potresti decidere di salvare questi flag "feature" in un database. Ma ovviamente stai aggiungendo query inutili a ogni richiesta di pagina. Quindi pensi a te stesso, che salterai con la memcached al mix e ti basterà mettere in cache la query. Quindi recuperi tutte le "Funzionalità" da memcached e aggiungi una latenza di 2ms ~ alla tua applicazione su ogni pagina. Quindi, per ovviare a questo, si decide di utilizzare un sistema a due livelli di cache, in cui si utilizza una cache inmemoria su ciascuna macchina (come Apc / Redis ecc.). Funzionerebbe, ma poi si complicherebbe, perché dovresti impostare la chiave / hash vita a forse 60 secondi, in modo che quando rimuovi / invalidi l'oggetto memcached che memorizza il risultato "Funzioni", la cache della tua macchina è abbastanza pronta per ottenere i nuovi stati.

Quali suggerimenti potresti avere? Tenendo presente che l'ottimizzazione / efficienza è la priorità qui.

    
posta Kare Lyse 17.11.2012 - 16:08
fonte

3 risposte

1

Se gestisci più di una manciata di server, hai bisogno di una sorta di gestione / automazione della configurazione, anche se si tratta di un client ssh multiplex glorificato.

Una volta installato, la maggior parte dei sistemi dispone di un'operazione "applica questo su questo gruppo di server ora", che è possibile utilizzare ad esempio per modificare la configurazione del server Web e riavviarla (per abilitare un sito di manutenzione a pagina singola e disabilita il tuo sito normale) o modifica la configurazione del tuo sito web.

    
risposta data 17.11.2012 - 17:27
fonte
0

Qui possono esserci molte risposte per il modo in cui viene formulata la domanda, tutte corrette che potrebbero potenzialmente produrre lo stesso risultato.

  1. Gestione della configurazione come indicato in un'altra risposta.
  2. Modello di quadro interruttori. È possibile avere una tabella di database per la configurazione con i campi "nome server", "configurazione" e "valore". Prima di ogni operazione, un controllo può garantire che l'operazione sia consentita. I risultati possono essere memorizzati nella cache localmente per le prestazioni.
  3. Distribuzione continua: spegnimento rapido delle cose dal sistema di controllo sorgente / CI.

Generalmente sarebbe più facile suggerire la soluzione ottimale se fosse nota la logica per farlo.

    
risposta data 17.12.2012 - 18:05
fonte
0

Invece di recuperare i dati di configurazione dal DB su richiesta ogni , memorizzarlo in memoria (in c # utilizzare una variabile statica o l'oggetto cache o qualcosa del genere) - quindi quando è necessario aggiornare un valore di configurazione , aggiornalo nel DB. Quindi avere un URL protetto su ciascun server che puoi colpire che costringa l'app a ricaricare i dati di configurazione. Quindi potresti perfino scrivere un front-end per l'aggiornamento dei dati di configurazione del server che colpisce anche tali URL.

Oppure, se ti trovi in ASP.NET, puoi semplicemente utilizzare l'oggetto cache e controllare SqlCacheDependency.

    
risposta data 17.03.2013 - 23:15
fonte

Leggi altre domande sui tag