2009-09-20 8 views
21

Seaside è nota come "la struttura web eretica". Uno dei punti che lo rende eretico è che ha uno stato molto condiviso. Questo comunque è qualcosa che, nella mia attuale comprensione, ostacola il facile ridimensionamento.La scala Seaside?

Il rubino su rotaie d'altra parte condivide il minor numero di stati possibile. È stato conosciuto per scalare abbastanza bene, anche se è lento cane rispetto ai moderni vms smalltalk. flickr utilizza php ed è ridimensionato a un'infrastruttura estremamente grande ...

Quindi qualcuno ha qualche esperienza nel ridimensionamento di Seaside?

+1

Sono sorpreso da un commento che Rails è noto per scalare abbastanza bene. Twitter funziona per lo più a questo punto, ma ho l'impressione che si siano allontanati molto dalle rotaie standard. Tendo a pensare ai binari come l'epica quintessenza non riesce a scalare il quadro. –

+0

Twitter utilizza un database come back-end per qualcosa che è essenzialmente la trasmissione di messaggi. Il ridimensionamento, come ho capito, indica quanto sia facile soddisfare più richieste utilizzando più hardware. Suggerisco che Rails si adatta bene a questa definizione perché DHH, uno degli autori originali di Rails, dice "[...] è possibile aggiungere quasi un numero qualsiasi di server Web e app senza cambiare nulla.", Nel suo [Blog ] [1] Che si adatta alla mia comprensione. [1]: http://www.loudthinking.com/arc/000479.html –

+0

Come ho capito, Twitter si sta muovendo verso l'uso di Scala anziché di Rails. – Mei

risposta

13

Risposta breve: è possibile scalare le applicazioni Mare come l'inferno yah

Risposta lunga: nel settore IT, il ridimensionamento è una cosa, ma ha due dimensioni:

  1. horozontal
  2. verticale

Quasi tutti hanno pensato di ridimensionare la dimensione verticale. Fino a quando Intel e gli amici hanno raggiunto alcune barriere fisiche e hanno iniziato ad aggiungere core per compensare l'attuale impossibilità di aggiungere MHz.

Ecco quando abbiamo iniziato a essere più consapevoli di ridimensionamento orizzontale come la strada da percorrere.

Perché sto dicendo questo?

Perché Seaside è un'immagine smalltalk in esecuzione su una VM e si tratta approssimativamente della stessa situazione di un sistema in un server di un processore monocore.

Prendendo come base, si ridimensionano le app Web creando un cluster di server. È la cosa naturale da fare, è la cosa tollerante ai guasti, è la cosa topologicamente intelligente da fare, è la cosa flessibile da fare, immagino tu abbia l'idea ...

Quindi, se per il ridimensionamento, tu fare lo stesso intel & amici, si abbraccia il modo orizzontale. Ed è anche più economico il modo verticale (che ti porterà a server IBM e Sun che sono altrettanto costosi).

Le applicazioni RoR vengono generalmente ridimensionate orizzontalmente. Google ha innumerevoli server economici per fare le loro cose. Funziona perfettamente bene, non importa quanto le persone drammatizzate vogliano impressionarti mentre ti lanciano un mucchio di balene twitter dimenticate.

Se si parla con te di che, basta essere gentili e sentire quello che dicono ma ricordate questo:

  1. perfetto è il nemico del bene
  2. la perfetta incompiuta non sarà mai come valore la cosa buona fatta

BTW, Amazon fa qualcosa di simile anche (e tipo di coppia di geolocalizzazione in modo da aumentare le possibilità di frequentare le vostre richieste con il cluster che è più vicino a te).

D'altro canto, il modo in cui Avi ha scalato dabbledb (società di applicazioni web basata sul mare acquistato da Twitter) utilizzava un vm per account cliente (all'avvio e all'arresto di quelli su richiesta).

Avere molto stato in un'immagine non rende il ridimensionamento impossibile o complicato.

Semplicemente diverso.

La strada da percorrere è con un servizio di bilanciamento del carico che utilizza sessioni di appiccicosità in modo da poter avere un'immagine che attenti tutte le richieste di una sessione utente. Fai le cose in modo che qualsiasi immagine di lavoro dietro il servizio di bilanciamento del carico possa partecipare a qualsiasi utente di una determinata app. E questo è praticamente tutto.

Per poterlo fare è necessario condividere gli oggetti persistenti tra i lavoratori. Tutti i database degli utenti devono essere accessibili dai lavoratori in qualsiasi momento e devono gestire bene la concorrenza.

Abbiamo progettato un flusso d'aria scalabile in questo modo.

È economicamente conveniente anche perché è possibile iniziare con N molto piccolo (a seconda della RAM del primo server) e aumentarlo su richiesta fino a raggiungere il limite hardware.

Una volta raggiunto il limite hardware, è sufficiente aggiungere un altro host al cluster e riconfigurare il bilanciatore (e l'accesso ai database).

Semplice, economico ed elegante.

-9

Dall'articolo di Wikipedia, è un maiale totale. Prima di allora, non era stato ridimensionato al punto in cui ne avevo sentito parlare. :)

+0

cos'è un maiale totale? –

+0

"resource hog": P – alex

9

http://dabbledb.com/ sembra in scala abbastanza bene. Inoltre, si può usare GemStone GLASS per eseguire Seaside.

+0

Bene ... dabbledb è in qualche modo speciale, poiché esegue una VM separata per ogni cliente. Non penso che sia il significato ordinario di "scala". E per GLASS, beh, è ​​in scala come LAMP, non come Google. – nes1983

5

Vorrei riformulare leggermente la domanda in: Seaside impedisce/scoraggiarvi dalla creazione di applicazioni in scala? Direi di solito no. Seaside non ha un modo predefinito per archiviare i tuoi dati (proprio come php sul suo no, anche se Seaside ti offre alcune opzioni extra) e la mia impressione sta interagendo con i tuoi dati tende ad essere il più grande ostacolo quando si tratta di ridimensionare .

Se si desidera memorizzare i dati in un db SQL monolitico, come con le guide, è possibile farlo. O puoi usare un database di oggetti. Oppure puoi utilizzare un database degli oggetti separato per ciascun utente, o un db separato per ogni progetto, o un db separato per ogni utente e progetto. Oppure puoi memorizzare tutto in una serie di file flat o puoi semplicemente memorizzare i tuoi dati come oggetti nella memoria della tua VM.

E a causa di continuazioni non è necessario recuperare i dati dal datastore su ogni chiamata di pagina web. Come quando si utilizza un'applicazione desktop, è possibile estrarre i dati dall'archivio dati quando l'utente inizia a interagire con esso, impostare le variabili appropriate e quindi utilizzare tali variabili tra le webcall fino a quando l'utente non ha terminato con i dati a quel punto è possibile aggiornare il datastore. Quando non condividi lo stato devi colpire il datastore su ogni singola webcall.

Ovviamente questo non significa che il ridimensionamento è gratuito, significa solo che si dispone di un dominio più ampio in cui cercare soluzioni di ridimensionamento.

Tutto ciò detto, per molte applicazioni i binari scaleranno molto più facilmente semplicemente perché esistono grandi soluzioni di hosting per binari (e php per quella materia) che ti offriranno un'enorme quantità di risorse senza dover noleggiare e configurare una scatola personalizzata .

Queste sono solo le mie impressioni da leggere e parlare con le persone.

+0

Il prezzo per le continuazioni e le sessioni può essere pagato non dovendo ripristinare lo stato su ogni richiesta, suggerite? Interessante. –

+1

Questo è un buon modo per dirlo, e penso che valga la pena di notare dove è ripagato. Solleva il carico dal datastore centrale e trasferisce il carico su un server delle applicazioni, di cui è possibile aggiungerne altri. Questi sono i tipi di trasferimenti che si desidera effettuare quando si pensa al ridimensionamento poiché è sempre possibile aggiungere altri server applicazioni. Quindi, anche se le continuazioni costano più del colpire il db su ogni chiamata di pagina web, è ancora una vittoria in scala se si trasferisce quel colpo lontano da un punto centrale di errore. –

8

Su questo interview Avi Bryant il creatore di Seaside e Co fondatore DabbleDB Spiega come lo fanno scala.

Da quello che ho capito:

  • ogni cliente ha il proprio Squeak immagine.

  • Quando un cliente viene Apache decide in base al nome utente a quale porta inviarlo.

  • Sulla base della porta viene avviata l'immagine Squeak del cliente.

  • In questo modo può crescere fino a un numero infinito di server.

Penso che questa soluzione funzioni per loro in base alle specifiche della loro applicazione, ogni cliente non ha bisogno di condividere informazioni tra di loro. Quindi non c'è bisogno di o DB centralizzato.

In ogni caso è meglio guardare l'intervista piuttosto che il mio riassunto parziale.

6

Sì, Seaside si riduce in modo fantastico. Un singolo sviluppatore può creare e mantenere molto bene applicazioni complesse per piccoli gruppi.

[ritorno a questo dopo alcuni anni] Questo in realtà è molto più importante del ridimensionamento. La velocità del computer continua a crescere e il 99% di tutte le applicazioni ora può essere eseguito su una sola macchina. La velocità di sviluppo e, in particolare, la manutenzione ora domina totalmente il TCO.

2

Ho appena ricordato che esiste un collegamento sulle storie di successo di Pharo: un'applicazione Web balneare con un massimo di 1000 utenti simultanei per una grande assicurazione sanitaria in Argentina.

Pharo success stories

Issys Tracking:

  • bilanciamento del carico: Apache come proxy/bilanciatore (round robin con sessione affinità)
  • configurazione del server: 5 immagini Pharo su 3 diversi server (Linux e Windows 2003)
  • GUI: pesantemente basato su AJAX. Tutto il codice scritto in Smalltak: Seaside 3.0, Seaside JQuery integration e JQWidgetBox.
  • Persistenza: Glorp (OR Mapper) e OpenDBX (client DB)
  • Database: grande PostgreSQL e MS SQL Server DB