Programowanie za pomocą usługi Azure Managed Redis (wersja zapoznawcza)
Odporność połączenia i obciążenie serwera
Podczas tworzenia aplikacji klienckich należy wziąć pod uwagę odpowiednie najlepsze rozwiązania dotyczące odporności połączeń i zarządzania obciążeniem serwera.
Rozważ więcej kluczy i mniejszych wartości
Usługa Azure Managed Redis (wersja zapoznawcza) działa najlepiej z mniejszymi wartościami. Aby rozłożyć dane na wiele kluczy, rozważ podzielenie większych fragmentów danych na mniejsze fragmenty. Aby uzyskać więcej informacji na temat idealnego rozmiaru wartości, zobacz ten artykuł.
Duży rozmiar żądania lub odpowiedzi
Duże żądanie lub odpowiedź może spowodować przekroczenie limitu czasu. Załóżmy na przykład, że wartość limitu czasu skonfigurowana na kliencie wynosi 1 sekundę. Aplikacja żąda dwóch kluczy (na przykład "A" i "B") jednocześnie (przy użyciu tego samego połączenia sieciowego). Większość klientów obsługuje potokowanie żądań, gdzie oba żądania "A" i "B" są wysyłane jeden po drugim bez oczekiwania na odpowiedzi. Serwer wysyła odpowiedzi z powrotem w tej samej kolejności. Jeśli odpowiedź "A" jest duża, może jeść większość limitu czasu dla późniejszych żądań.
W poniższym przykładzie żądanie "A" i "B" są wysyłane szybko do serwera. Serwer szybko uruchamia wysyłanie odpowiedzi "A" i "B". Ze względu na czas transferu danych odpowiedź "B" musi czekać za odpowiedzią "A" przekracza limit czasu, mimo że serwer szybko zareagował.
|-------- 1 Second Timeout (A)----------|
|-Request A-|
|-------- 1 Second Timeout (B) ----------|
|-Request B-|
|- Read Response A --------|
|- Read Response B-| (**TIMEOUT**)
To żądanie/odpowiedź jest trudne do zmierzenia. Możesz instrumentować kod klienta w celu śledzenia dużych żądań i odpowiedzi.
Rozwiązania dotyczące dużych rozmiarów odpowiedzi są zróżnicowane, ale obejmują:
- Zoptymalizuj aplikację pod kątem dużej liczby małych wartości, a nie kilku dużych wartości.
- Preferowanym rozwiązaniem jest podzielenie danych na powiązane mniejsze wartości.
- Zobacz wpis Jaki jest idealny zakres rozmiaru wartości dla usługi Redis? Czy 100 KB jest zbyt duże? aby uzyskać szczegółowe informacje o tym, dlaczego zalecane są mniejsze wartości.
- Zwiększ rozmiar maszyny wirtualnej, aby uzyskać większą przepustowość
- Większa przepustowość na maszynie wirtualnej klienta lub serwera może skrócić czas transferu danych w przypadku większych odpowiedzi.
- Porównaj bieżące użycie sieci na obu maszynach z limitami bieżącego rozmiaru maszyny wirtualnej. Większa przepustowość tylko na serwerze lub tylko na kliencie może nie być wystarczająca.
- Zwiększ liczbę obiektów połączenia używanych przez aplikację.
- Użyj podejścia okrężnego, aby wysyłać żądania do różnych obiektów połączenia.
Korzystanie z potokowania
Spróbuj wybrać klienta redis, który obsługuje potok redis. Potokowanie pomaga efektywnie korzystać z sieci i uzyskać najlepszą możliwą przepływność.
Unikanie kosztownych operacji
Niektóre operacje usługi Redis, takie jak polecenie KEYS , są kosztowne i należy unikać. Aby zapoznać się z niektórymi zagadnieniami dotyczącymi długotrwałych poleceń, zobacz długotrwałe polecenia.
Wybieranie odpowiedniej warstwy
Usługa Azure Managed Redis oferuje warstwy Zoptymalizowane pod kątem pamięci, Zrównoważone, Zoptymalizowane pod kątem obliczeń i Zoptymalizowane pod kątem flash. Zobacz więcej informacji na temat wybierania warstwy tutaj. Zalecamy testowanie wydajnościowe, aby wybrać odpowiednią warstwę i zweryfikować ustawienia połączenia. Aby uzyskać więcej informacji, zobacz Testowanie wydajności.
Wybieranie odpowiedniego trybu dostępności
Usługa Azure Managed Redis oferuje opcję włączania lub wyłączania konfiguracji wysokiej dostępności. Gdy tryb wysokiej dostępności jest wyłączony, dane wystąpienia usługi AMR nie zostaną zreplikowane, dlatego wystąpienie usługi Redis będzie niedostępne podczas konserwacji. Wszystkie dane w wystąpieniu usługi AMR również zostaną utracone w przypadku planowanej lub nieplanowanej konserwacji. Zalecamy wyłączenie wysokiej dostępności tylko dla obciążeń programistycznych lub testowych. Wydajność wystąpień usługi Redis o wysokiej dostępności może być również niższa ze względu na brak replikacji danych, co ma kluczowe znaczenie dla dystrybucji obciążenia między fragmentami danych podstawowych i replik.
Klient w tym samym regionie co wystąpienie usługi Redis
Znajdź wystąpienie usługi Redis i aplikację w tym samym regionie. Nawiązywanie połączenia z usługą Redis w innym regionie może znacznie zwiększyć opóźnienie i zmniejszyć niezawodność.
Chociaż możesz nawiązać połączenie spoza platformy Azure, nie jest to zalecane, zwłaszcza w przypadku korzystania z usługi Redis w celu przyspieszenia wydajności aplikacji lub bazy danych. Jeśli używasz serwera Redis jako magazynu kluczy/wartości, opóźnienie może nie być głównym problemem.
Polegaj na nazwie hosta, która nie jest publicznym adresem IP
Publiczny adres IP przypisany do wystąpienia usługi AMR może ulec zmianie w wyniku operacji skalowania lub ulepszenia zaplecza. Zalecamy poleganie na nazwie hosta zamiast jawnego publicznego adresu IP.
Korzystanie z szyfrowania TLS
Usługa Azure Managed Redis domyślnie wymaga szyfrowanej komunikacji TLS. Obecnie obsługiwane są wersje TLS 1.2 i 1.3. Jeśli biblioteka klienta lub narzędzie nie obsługuje protokołu TLS, możliwe jest włączenie niezaszyfrowanych połączeń.
Monitorowanie użycia pamięci, metryk użycia procesora CPU, połączeń klientów i przepustowości sieci
W przypadku korzystania z wystąpienia usługi Azure Managed Redis w środowisku produkcyjnym zalecamy ustawienie alertów dla metryk "Procent użycia pamięci", "PROCESOR" i "Połączonych klientów". Jeśli te metryki są stale powyżej 75%, rozważ skalowanie wystąpienia do większej pamięci lub lepszej warstwy przepływności. Zobacz , kiedy przeprowadzić skalowanie , aby uzyskać więcej szczegółów.
Rozważ włączenie trwałości danych lub kopii zapasowej danych
Usługa Redis jest domyślnie przeznaczona dla danych efemerycznych, co oznacza, że w rzadkich przypadkach dane mogą zostać utracone z powodu różnych okoliczności, takich jak konserwacja lub awarie. Jeśli aplikacja jest wrażliwa na utratę danych, zalecamy włączenie trwałości danych lub okresowej kopii zapasowej danych przy użyciu operacji eksportowania danych.
Funkcja trwałości danych została zaprojektowana tak, aby automatycznie zapewnić szybki punkt odzyskiwania danych, gdy pamięć podręczna ulegnie awarii. Szybkie odzyskiwanie jest możliwe dzięki przechowywaniu pliku RDB lub AOF na dysku zarządzanym zainstalowanym w wystąpieniu pamięci podręcznej. Pliki trwałości na dysku nie są dostępne dla użytkowników ani nie mogą być używane przez żadne inne wystąpienie usługi AMR.
Wielu klientów chce używać trwałości do wykonywania okresowych kopii zapasowych danych w pamięci podręcznej. Nie zalecamy używania trwałości danych w ten sposób. Zamiast tego użyj funkcji importu/eksportu . Kopie danych w formacie RDB można eksportować bezpośrednio do wybranego konta magazynu i wyzwalać eksport danych tak często, jak jest to wymagane. Wyeksportowane dane można następnie zaimportować do dowolnego wystąpienia usługi Redis. Eksportowanie można wyzwolić z portalu lub przy użyciu interfejsu wiersza polecenia, programu PowerShell lub narzędzi zestawu SDK.
Wskazówki dotyczące biblioteki klienta
Aby uzyskać więcej informacji, zobacz Biblioteki klienta usługi Azure Managed Redis