2009-09-17 11 views
23

Co wzorców projektowych lub techniki czy stosowane są specjalnie nastawiona skalowalności?konstrukcyjne (lub technik) dla skalowalność

Wzory takie jak wzór Flyweight wydają mi się wyspecjalizowaną wersją Factory Pattern, aby promować wysoką skalowalność lub podczas pracy z ograniczeniami związanymi z pamięcią lub pamięcią masową.

Czego inni użyliście? (Denormalization of Databases itd.) Czy uważasz, że zasady zmieniają się, gdy głównym celem jest wysoka dostępność lub skalowalność?

Możliwe sytuacje są:

  • mobilne urządzenia z bardziej ograniczonej pamięci, mocy obliczeniowej i łączności niż stacjonarny lub przenośny
  • Wysoka # użytkowników ograniczonym sprzęcie (strategii buforowania itp)
  • Optymalizacja schematu bazy danych pod kątem wydajności zamiast znormalizowanego projektu (np. Pakowanie w kolumnę SharePoint do przechowywania)
+13

Singleton! Haha, żartuję. –

+1

Możesz zdefiniować skalowalność w swoim pytaniu. Skalowalne pod względem, a może i ile. – NomeN

+0

Twoje pytanie nie ma sensu Obawiam się, że wzorce rozwiązują problemy (w najlepszym wypadku) i nie wspomniałeś o żadnym problemie w swoim poście. Nie wspomniałeś nawet o takiej aplikacji, o której mówisz - czy jest to internetowa? – Justin

Odpowiedz

10

Złóż wniosek jako bezpaństwowiec, jak to możliwe ble. Łatwiej będzie dostosować się do farmy serwerów.

+0

+1 Skalowalność w obrębie farm serwerów to problem, z którym często miałem do czynienia. –

+0

... i zlokalizuj stan jak najwięcej: łatwiejsze debugowanie. – jldupont

+0

Dobrym "wzorcem" byłoby użycie języka funkcjonalnego, który promuje stan odsprzęgania w jak największym stopniu od funkcji działających na stanach. – jldupont

6

Nic nie jest darmowe - sprowadza się do dopuszczalnych kompromisów, aby osiągnąć cele biznesowe. Głównymi zmiennymi są:

  • Koszt
  • Dostępność
  • Spójność
  • przetrwania (np Partition Tolerance)

Doskonałym paper czytać na ten temat.

wierzę dobrą metrykę byłoby zbadanie „koszt/user” krzywą i spróbować utrzymanie go do progresji liniowej (zakładając akceptowalny koszt użytkownika jest znany parametr :-)

Wzorce projektowe grają rola, ale najważniejsza jest nadrzędna architektura. Jeden mógł być bardzo dokładny na poziomie modułu, ale w wyniku tego stracone zostały ograniczenia na poziomie sieci i skalowalność.

Pod koniec dnia uważam, że należy zadać sobie pytanie: w przypadku niepowodzenia typu X, ilu "użytkowników" może mieć wpływ i na jak długo?

Zawsze będzie gdzieś SPOF (pojedynczy punkt awarii), ale można zaprojektować system taki, że ten SPOF zostanie przesunięty bliżej punktów końcowych (np. Użytkowników). W wielu przypadkach SPOF jest poza kontrolą aplikacji, np. Sieć POP jest niedostępna.

W każdym razie mogłem poświęcić kilka godzin na ten temat ...

2

POS Książki (architektura zorientowana na wzory) są doskonałym źródłem takich wzorów.

POSA 4, szczególnie dotyczy przetwarzania rozproszonego, ale wszystkie volumy są pełne wzorców skalowalności.

1

To, co zauważyłem w przypadku logistyki aplikacji bezstanowej, to wprowadzenie wielu innych wymagań, takich jak blokowanie w DB, które ostatecznie będą działać przeciwko skalowalności.

Powiedzmy, że wdrożona logika aplikacji jest bezstanowa w całej farmie serwerów, a następnie dla żądania, które uderza w dwa węzły klastra, musimy wprowadzić takie pojęcia, jak blokada DB, aby upewnić się, że przetwarzane jest tylko jedno żądanie.

Mam do czynienia teraz z takimi sytuacjami i zastanawiałem się, jak wszyscy mają do czynienia z takimi bezpaństwowymi zachowaniami.

Powiązane problemy