Szukam najbardziej wydajnego sposobu na ustawienie użycia pamięci podręcznej i fabryki datacache dla wywołań buforowania AppFabric, dla od 400 do 700 cache pobiera na załadowanie strony (i prawie żadnych puts) . Wygląda na to, że do zrobienia wystarczy użycie pojedynczego statycznego DataCacheFactory (lub prawdopodobnie pary w konfiguracji typu round-robin).Buforowanie AppFabric - Prawidłowe korzystanie z DataCacheFactory i DataCache
Czy nazywam GetCache ("cacheName") dla każdego żądania obiektu DataCache, czy też mogę utworzyć jeden statyczny w czasie inicjowania fabryki DataCache i używać go do wszystkich połączeń?
Czy muszę obsługiwać wyjątki, sprawdzać kody błędów i próbować ponawiania prób?
Czy muszę rozważyć rywalizację, gdy więcej niż jeden wątek próbuje użyć magazynu pamięci podręcznej i chce tego samego produktu (według klucza)?
Czy istnieje dokumentacja, która właściwie analizuje projekt i wykorzystanie tego?
Niektóre informacje mam zebrane dotychczas z forum:
http://social.msdn.microsoft.com/Forums/en-AU/velocity/thread/98d4f00d-3a1b-4d7c-88ba-384d3d5da915
„Tworzenie fabryki wymaga podłączenia do klastra i może zająć trochę czasu, ale raz. masz obiekt fabryczny i pamięć podręczną, z którymi chcesz pracować, możesz po prostu ponownie użyć te obiekty, aby zrobić puts i dostać się do pamięci podręcznej, a powinieneś zobaczyć znacznie szybszą wydajność. "
http://social.msdn.microsoft.com/Forums/en-US/velocity/thread/0c1d7ce2-4c1b-4c63-b525-5d8f98bb8a49
„Tworzenie pojedynczego DataCacheFactory (singleton) jest bardziej niż jego efektywności tworzenia wielu DataCacheFactory. Nie należy tworzyć DataCacheFactory dla każdego połączenia, będzie miał wydajność.”
"Proszę spróbować zaimplementować algorytm round-robin (posiadający fabryczne wersje 3/4/5) w swoim singletonie i porównać wyniki testu obciążenia."
http://blogs.msdn.com/b/velocity/archive/2009/04/15/pushing-client-performance.aspx
„Można zwiększyć liczbę klientów, aby zwiększyć przepustowość pamięci podręcznej. Ale czasami, jeśli chcesz mieć mniejszą liczbę klientów i zwiększyć przepustowość, trick jest wykorzystanie wielu wystąpień DataCacheFactory. The DataCacheFactory instancji tworzy połączenie z serwerami (e..g, jeśli istnieją 3 serwery, utworzy 3 połączenia) i zmultipleksuje wszystkie żądania z baz danych na te połączenia. Tak więc, jeśli wolumin put/get jest bardzo wysoki, te połączenia TCP mogą być jednym ze sposobów tworzenia wielu instancji DataCacheFactory, a następnie korzystać z operacji na nich. "
Tutaj, co jest używane do tej pory ... właściwość jest wywoływana i jeśli zwracana wartość nie jest pusta, wykonywana jest operacja.
private static DataCache Cache
{
get
{
if (_cacheFactory == null)
{
lock (Sync)
{
if (_cacheFactory == null)
{
try
{
_cacheFactory = new DataCacheFactory();
}
catch (DataCacheException ex)
{
if (_logger != null)
{
_logger.LogError(ex.Message, ex);
}
}
}
}
}
DataCache cache = null;
if (_cacheFactory != null)
{
cache = _cacheFactory.GetCache(_cacheName);
}
return cache;
}
}
Zobacz to pytanie na Microsoft AppFabric forum: http://social.msdn.microsoft.com/Forums/en-AU/velocity/thread/e0a0c6fb-df4e-499f-a023-ba16afb6614f
Jest odpowiedzią na to teraz na forum. Sprawdź powyższy link. – CRice