![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 333 Pomógł: 137 Dołączył: 25.03.2008 Skąd: jesteś?? Ostrzeżenie: (0%) ![]() ![]() |
Hej wszystkim!
Mam problem z czasami dostępu do serwisu, szukam rozwiązania który go skróci - najpierw opiszę jaki jest obecny stan portalu. Każdy user może zakładać konta, dodawać prezentacje. Prezentacja składa się z obrazków, po klatkowych zdjęć lub rozbitych filmów na ramki. Userzy mogą te filmy udostępniać innym albo przez plugin w js animujący obrazki, albo poprzez wygenerowanie gif/video. Obecnie portal ma ok 500gb plików userów z całego świata, a transfer wychodzący jest na poziomie ok. 1tb miesięcznie. Niestety pojawiają się problemy z wydajnością łącza, klient chce rozproszyć servery/dodać cdn'y. Tak by klienci nie musieli łączyć się z serverem przez pół świata do polski gdzie obecnie stoi 1 server. Rozwiązania jakie udało mi się znaleźć to routing DNS, który wydaje się bardzo kosztowny lub Amazon S3 - tutaj lepiej z kosztami. Problem jest taki, że user musi od razu uploadować pliki na najbliższy S3. Potem server jakiś musi go pobrać, utworzyć video, gify itd i oddać tym razem do kilku regionów S3. Cała procedura jest dość zawiła i szukam innych rozwiązań tego problemu. Obecny szacunkowy koszt przy 3 regionach w amazonie tworzy koszt ok. 300$ miesięcznie + server bazowy do operacji na plikach, mysql'a itd. za ok 500zł/miesiąc. Te koszta są jak najbardziej akceptowalne. Możecie doradzić jakieś rozwiązanie ew. utwierdzić mnie że S3 to dobry wybór? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 125 Pomógł: 7 Dołączył: 27.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
Widly z igły (IMG:style_emoticons/default/wink.gif) osobiście gdybym miał taki problem to podszedł bym tak:
- mam conajmniej dwie identyczne strefy z aplikacja (moze byc oczywiscie wiecej) - dns routuje do najblizszego serwera po latency, lub geoip i zwykly redirect - klient robi zwykly upload do najblizszej strefy, plik laduje normalnie na serwerze - odpada upload do S3 - plik z automatu jest dodawany do kolejki, dane sa przetwarzane lokalnie - odpada download z S3 - po udanym przetwarzaniu plik wynikowy laduje na podmontowanym glusterze, gluster sam zadba o replikacje danych do innych stref i dziala to jak zwykly mount jak nfs - kontent prezentacji jest dostepny poprzez niewielkie nody cache, moga to byc nawet malenkie vps, na hostach stoi cached reverse proxy - dzieki temu dane beda ciagniente doslownie z lokalnego dysku, co do odswierzania cache, zalezy od ciebie kolejka: polecam python + celery, sprawdzi sie doskonale a uzycie jest trywialne baza danych: osobiscie uzylbym apache cassandra, ma jezyk CQL bardzo zblizony do SQL no i przedewszystkim masz replikacje i klastrowanie z bani druga opcja to shardowanie mysql i consisten hashing, nie uzywalbym replikacji sql ze wzgledu na opoznienia miedzy strefami skalowanie up: - tworzysz nowa strefe, stawiasz wszystkie elementy na niej - podpinasz kolejny node glustera do klastra - podpinasz kolejny node cassandry do klastra - dodajesz informacje o kolejnej strefie do dns - pijesz browar zwyciestwa (IMG:style_emoticons/default/wink.gif) Edit: ewentualnie zamiast glustera wykorzystaj S3 ale tylko do wynikow, dane przetwarzaj lokalnie Ten post edytował cepa 25.09.2014, 13:54:15 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.10.2025 - 05:27 |