Memcache (d) vs. Varnish dla przyspieszenia 3-warstwowej architektury sieciowej
111
Próbuję przyspieszyć mój test porównawczy (trójwarstwowa architektura sieciowa) i mam kilka ogólnych pytań związanych z Memcache (d) i Varnish.
Jaka jest różnica?
Wydaje mi się, że Varnish znajduje się za serwerem WWW, cache'uje strony internetowe i nie wymaga zmian w kodzie, wystarczy konfiguracja.
Z drugiej strony Memcached jest systemem buforowania ogólnego przeznaczenia i jest używany głównie do buforowania wyników z bazy danych i wymaga zmiany getmetody (pierwsze wyszukiwanie w pamięci podręcznej).
Czy mogę używać obu? Lakier na serwerze WWW i Memcached do buforowania bazy danych?
Jaka jest lepsza opcja?
(scenariusz 1 - głównie zapis,
scenariusz 2 - głównie odczyt,
scenariusz 3 - odczyt i zapis są podobne)
Lakier znajduje się przed serwerem WWW; działa jako odwrotne proxy http, które buforuje.
Możesz używać obu.
Głównie pisz - Varnish będzie musiał wyczyścić strony, których dotyczy problem. Spowoduje to obciążenie i niewielkie korzyści dla zmodyfikowanych stron.
Najczęściej czytane - większość z nich pokryje prawdopodobnie lakier.
Podobny odczyt i zapis - Varnish będzie obsługiwał wiele stron za Ciebie, Memcache dostarczy informacje o stronach, które zawierają mieszankę znanych i nowych danych, umożliwiając szybsze generowanie stron.
Przykład, który mógłby dotyczyć stackoverflow.com: dodanie tego komentarza unieważniło pamięć podręczną strony, więc ta strona musiałaby zostać wyczyszczona z Varnish (a także mojej strony profilowej, która prawdopodobnie nie jest warta buforowania na początku. Pamiętając o unieważnieniu wszystkich strony, których dotyczy problem, mogą stanowić problem). Wszystkie komentarze są jednak nadal w Memcache, więc baza danych musi tylko napisać ten komentarz. Baza danych nie musi nic robić, aby wygenerować stronę. Wszystkie komentarze są pobierane przez Memcache, a strona jest ponownie odtwarzana, dopóki ktoś nie wpłynie na nią ponownie (być może poprzez głosowanie na moją odpowiedź). Ponownie, baza danych zapisuje głosowanie, wszystkie inne dane są pobierane z Memcache, a życie toczy się szybko.
Memcache chroni Twoją bazę danych przed wykonaniem dużej ilości pracy związanej z czytaniem, Varnish chroni dynamiczny serwer WWW przed obciążeniem procesora, dzięki czemu generujesz strony rzadziej (i nieco zmniejsza obciążenie bazy danych, jeśli nie w przypadku Memcache).
to: „(być może głosując na moją odpowiedź)” sprawiło, że zagłosowałem za Twoją odpowiedzią
Cesc,
dlatego nie zaleca się stosowania lakieru w witrynach takich jak stackoverflow (lub takich jak Facebook ze stroną kanału aktywności). czy to jest
Mohammad Reza Esmaeilzadeh
@jbferland Moje pytanie w twoim przykładzie dotyczy tego, że na górze tej strony znajduje się moje zdjęcie z liczbą uzyskanych punktów, jak możemy buforować za pomocą Varnish, ale pokazać dynamikę tego obszaru?
Hossj
@Hossj przy użyciu tagów ESI.
Johny Pie
Lakier może znajdować się przed serwerem WWW, ale także za serwerem WWW. Może być również w tym samym czasie z przodu i za tym samym serwerem WWW ;-) Na przykład Varnish nie obsługuje SSL, więc nie jest rzadkością posiadanie serwera WWW przed Varnish do obsługi HTTPS. Ruch jest następnie przekazywany do Varnish, który następnie komunikuje się z serwerem WWW aplikacji - który może być tym samym serwerem, co serwer obsługujący ruch HTTPS.
mat.
32
Moje doświadczenie pochodzi z używania Varnish na Drupalu. Najprościej jak to możliwe, odpowiadam:
Ogólnie rzecz biorąc, Varnish działa w przypadku ruchu nieuwierzytelnionego (za pośrednictwem plików cookie), a pamięć podręczna buforuje ruch uwierzytelniony.
Moje doświadczenie pochodzi z używania Varnish na Drupalu. Najprościej jak to możliwe, odpowiadam:
Ogólnie rzecz biorąc, Varnish działa w przypadku ruchu nieuwierzytelnionego (za pośrednictwem plików cookie), a pamięć podręczna buforuje ruch uwierzytelniony.
Więc używaj obu.
źródło