Czy ktoś już zaimplementował memcached do użytku produkcyjnego w środowisku Windows? Ponieważ wiele blogów, które czytałem, nie zaleca się uruchamiania memcached w systemie Windows, szczególnie do użytku produkcyjnego, na przykład uruchamiania memcached w systemie Windows .
I jeszcze jedno, który klient memcached, który jest dobry w użyciu z C # i .net 3.5? Znalazłem wielu alternatywnych dostawców, takich jak Memcached Providers @ Codeplex , Beitmemcached i memcached provider @ Sourceforge
c#
.net-3.5
memcached
distributed-caching
Funky81
źródło
źródło
Odpowiedzi:
Dlaczego musisz uruchamiać memcached w systemie Windows? To kosztowna sprawa w środowisku produkcyjnym.
Jeśli Twój kod musi działać w środowisku Windows, pobierz klienta Windows memcached i rozmawiaj z maszyną memcached opartą na * nix.
W środowisku produkcyjnym, w którym działa memcached na serwerze 2003 lub 2008, oznacza to, że otrzymasz licencje na wszystkie te pudełka. Linux oferuje wszystkie zalety OSS. Całkowity koszt posiadania wzrośnie liniowo dzięki memcached w systemie Windows
Edytować:
Od napisania tej odpowiedzi minęło około 1,5 roku i od tego czasu wiele się zmieniło. Musisz uważać, zwłaszcza gdy ktoś taki jak Dustin komentuje.
Oto jak uzyskać memcached w systemie Windows. Pobierz memcached dla systemu Windows z Couchbase (dawniej Northscale) .
Zwykle, jeśli planujesz uruchomić memcached na tej samej maszynie produkcyjnej, chciałbyś uruchomić go w ograniczonej pamięci, tj. Zdefiniować maksymalną ilość pamięci, z której może korzystać memcached.
Tutaj memcached działa z maksymalnym wykorzystaniem 128 MB. Nie chcesz, aby memcached zajmował całą pamięć na serwerze internetowym.
W chwili, gdy zdecydujesz się skalować memcached, musisz rozważyć to, co powiedziałem wcześniej. Dodatkowo skompresuj wartości w kombinacjach kluczowych wartości. Serwery internetowe zwykle zużywają bardzo mało procesora (2-3%), a kompresja wnosi dużą wartość do całej sieci w porównaniu do wykorzystania procesora. Jeśli zbytnio martwi cię normalna kompresja, wypróbuj LZO
źródło
Jestem zaskoczony, że nikt tu jeszcze nie wspomniał o Redis - jest to jeden z najbardziej funkcjonalnych i najszybszych (110 000 zestawów na sekundę w Linuksie dla początkujących) magazynów danych o kluczowej wartości z bogatą obsługą struktury danych dla ciągów, zbiory, listy, posortowane zestawy i skróty.
Chociaż Windows nie jest oficjalnie obsługiwaną platformą, działa idealnie pod oknami, po przejściu wszystkich testów. Mam kompilacje systemu Windows (używając Cygwin) dostępne tutaj: https://github.com/ServiceStack/ServiceStack.Redis#redis-server-builds-for-windows
Posiada również powiązania klienta dla prawie każdego używanego obecnie języka programowania. Utrzymuję bogatego klienta Open Source C # Redis z natywną obsługą API dla dowolnego typu C # POCO, obsługą transakcji i bezpiecznymi wątkowo menedżerami klientów, którzy są gotowi do umieszczenia w dowolnym IOC pod adresem : https://github.com/ServiceStack/ServiceStack. Redis
źródło
Ponieważ Velocity w tamtym czasie nie istniało, użyłem portu memcached do systemu Windows dla firmy, dla której pracuję, Skiviez. Istnieje głównie w celu zapewnienia scentralizowanej pamięci podręcznej dla wielu procesów roboczych na tej samej maszynie. Działa dobrze od około 18 miesięcy w witrynie e-commerce, która odnotowuje skromne wykorzystanie (~ 18 500 odwiedzin dziennie). Klientem, którego użyłem, był Enyim zintegrowany jako dostawca pamięci podręcznej dla iBATIS.NET. Ten klient wydaje się działać wystarczająco dobrze; Klienci memcached również nie są zbyt skomplikowani.
Gdybym musiał to zrobić ponownie, prawdopodobnie spojrzałbym na Velocity, gdybym był zdecydowany pozostać przy Windowsie dla mojego rozproszonego rozwiązania buforowania. Ale teraz działa, więc nie zamierzam tego dotykać.
(Na marginesie: od tego czasu wyeliminowałem większość potrzeby pamięci podręcznej, dodając określone
Cache*
kolumny do tabel kluczy w bazie danych, które są aktualizowane przez zaplanowane zadanie każdego wieczoru. Skończyło się to na znacznie mniejszym obciążeniu zasobów dookoła, od początkowego uderzenie w czas procesora przez wysyłanie zapytań do bazy danych o kolejne obciążenie dostępności pamięci przez przechowywanie wyników z pamięci podręcznej w pamięci podręcznej. Sprawiło to również, że jest to znacznie bardziej wyraźne w kodzie, gdy uzyskiwany jest dostęp do zbuforowanej wersji danych, w porównaniu z Wersja w locie. Jestem pewien, że masz wiele powodów, aby korzystać z rozproszonej pamięci podręcznej, ale zawsze warto zrobić krok wstecz i zastanowić się, czy naprawdę tego potrzebujesz!)źródło
nie wiem, nad jakim projektem pracujesz, ale możesz rzucić okiem na projekt Microsoft Velocity Ze strony:
Widziałem kilka demonstracji i wygląda na to, że ma naprawdę dobrą integrację z frameworkiem .net.
Problem z API klienta polega na tym, że nadal musisz mieć instancję memcached działającą gdzieś na innym komputerze, najlepiej jak zauważyłeś, używając stosu LAMP. Korzystanie z velocity oznacza, że nadal będziesz pracować na tym samym stosie, a integracja z platformą .net będzie ściślejsza.
Powiedziawszy to, jeśli chcesz używać velocity jako pamięci podręcznej dla innych aplikacji .net, może się okazać, że będziesz musiał napisać własne API, aby udostępnić dane prędkości do wykorzystania.
źródło
Velocity jest nieco bardziej zaangażowane w administrowanie, ale jest o wiele, dużo bardziej wydajne niż memcached. Nie jestem anty-memcached, ani trochę, jest super. Ale idąc naprzód, nowe projekty oparte wyłącznie na .NET są szalone, aby nie wykorzystywać Velocity, nawet w obecnym stanie niewydanym.
źródło
spójrz na SharedCache . jego otwarte źródło, łatwe w użyciu i bardzo niezawodne.
źródło
Wcale nie. Stos LAMP (Linux, Apache, MySQL, PHP) nie jest wymagany do uruchomienia Memcached. Obecnie wolę memcached niż prędkość, dopóki prędkość nie znajdzie się poza CTP. Bawiłem się przez chwilę z prędkością, ale uznałem ją za zbyt nieporęczną. Podążam za tym całym KISS, wiesz ... niech to będzie proste. Nie ma nic prostszego niż buforowanie ... Get (key) ... Put (key, value) ... Destroy (Key).
źródło
Jako dodatek do wzmianek o Velocity powyżej, zostało to wydane przez Microsoft jako część AppFabric . Więcej szczegółów tutaj.
Sprawdź różne pytania dotyczące AppFabric i Cache tutaj w StackOverflow.
źródło
Wiem, że trochę się spóźniłem na przyjęcie tutaj, a jest już mnóstwo dobrych odpowiedzi.
Użyliśmy Membase w systemie Windows Server z wielkim sukcesem. Jest w 100% kompatybilny z Memcached i ma ładny instalator GUI i serwer konfiguracji WWW, który go buduje. Jest niezwykle łatwy w zarządzaniu.
Istnieją również inne funkcje NoSQL, które są poza zakresem tego wątku, ale warto się im przyjrzeć. Mają bezpłatną licencję na serwery programistyczne, testowe i (ograniczone) produkcyjne.
Pobieranie z Membase
Ta sama strona ma tylko instalację Windows dla Memcached, jeśli nie chcesz żadnych dodatkowych funkcji w Membase.
źródło
Skorzystaj z poniższych linków, aby zobaczyć rozwiązanie tego pytania.
Mógłbym zaimplementować memcached do użytku produkcyjnego w środowisku Windows.
http://www.codeproject.com/Articles/96698/Implementing-Distributed-Caching-using-Memcached http://www.deanhume.com/Home/BlogPost/object-caching----net-4/37 http : //latebound.blogspot.com/2008/10/using-memcached-from-c.html
źródło
Jeśli jesteś zainteresowany uruchomieniem klienta memcached w systemie Windows, istnieją dwa dodatkowe serwery open source, które mogą wykonać to zadanie. Oba implementują standardowy protokół serwera memcached i są napisane w języku Java, dzięki czemu działają w systemie Windows.
źródło