Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ważne
Porady dotyczące wydajności w tym artykule dotyczą tylko zestawu Java SDK usługi Azure Cosmos DB w wersji 4. Aby uzyskać więcej informacji, zapoznaj się z informacjami o wersji, repozytorium Maven oraz przewodnikiem rozwiązywania problemów dla Azure Cosmos DB Java SDK v4. Jeśli obecnie używasz starszej wersji niż 4, zobacz przewodnik Migrate to Azure Cosmos DB Java SDK v4 (Migrowanie do zestawu Java SDK usługi Azure Cosmos DB w wersji 4), aby uzyskać pomoc dotyczącą uaktualniania do wersji 4.
Azure Cosmos DB to szybka i elastyczna rozproszona baza danych, która bezproblemowo skaluje się z gwarantowanym opóźnieniem i przepływnością. Nie musisz wprowadzać istotnych zmian architektury ani pisać złożonego kodu w celu skalowania bazy danych za pomocą usługi Azure Cosmos DB. Skalowanie w górę i w dół jest tak proste, jak tworzenie pojedynczego wywołania interfejsu API lub wywołania metody zestawu SDK. Jednak ponieważ usługa Azure Cosmos DB jest dostępna za pośrednictwem wywołań sieciowych, istnieją konfiguracje połączeń, które można dostosować, aby osiągnąć szczytową wydajność podczas korzystania z zestawu Java SDK usługi Azure Cosmos DB w wersji 4.
Konfiguracja połączenia
Uwaga / Notatka
W Azure Cosmos DB Java SDK w wersji 4 tryb bezpośredni jest najlepszym wyborem, aby zwiększyć wydajność bazy danych dla większości obciążeń.
Aby dowiedzieć się więcej o różnych opcjach łączności, zobacz artykuł o trybach łączności.
Tryb połączenia bezpośredniego
Domyślny tryb połączenia zestawu JAVA SDK jest bezpośredni. Żądania trybu bezpośredniego usługi Azure Cosmos DB są wykonywane za pośrednictwem protokołu TCP podczas korzystania z zestawu Java SDK usługi Azure Cosmos DB w wersji 4. Tryb wewnętrznie bezpośredni używa specjalnej architektury do dynamicznego zarządzania zasobami sieciowymi i uzyskania najlepszej wydajności. Architektura po stronie klienta zastosowana w trybie bezpośrednim umożliwia przewidywalne wykorzystanie sieci i multipleksowany dostęp do replik usługi Azure Cosmos DB. Aby dowiedzieć się więcej na temat architektury, zobacz architektura połączenia w trybie bezpośrednim
Tryb połączenia można skonfigurować w konstruktorze klienta przy użyciu metody directMode(), jak pokazano tutaj. Aby skonfigurować tryb bezpośredni z ustawieniami domyślnymi, wywołaj directMode() metodę bez argumentów. Aby dostosować ustawienia połączenia trybu bezpośredniego, przekaż polecenie DirectConnectionConfig do directMode() interfejsu API.
Zestaw JAVA SDK w wersji 4 (Maven com.azure::azure-cosmos) Async API
/* Direct mode, default settings */
CosmosAsyncClient clientDirectDefault = new CosmosClientBuilder()
.endpoint(HOSTNAME)
.key(MASTERKEY)
.consistencyLevel(CONSISTENCY)
.directMode()
.buildAsyncClient();
/* Direct mode, custom settings */
DirectConnectionConfig directConnectionConfig = DirectConnectionConfig.getDefaultConfig();
// Example config, do not use these settings as defaults
directConnectionConfig.setMaxConnectionsPerEndpoint(130);
directConnectionConfig.setIdleConnectionTimeout(Duration.ZERO);
CosmosAsyncClient clientDirectCustom = new CosmosClientBuilder()
.endpoint(HOSTNAME)
.key(MASTERKEY)
.consistencyLevel(CONSISTENCY)
.directMode(directConnectionConfig)
.buildAsyncClient();
/* Gateway mode, default settings */
CosmosAsyncClient clientGatewayDefault = new CosmosClientBuilder()
.endpoint(HOSTNAME)
.key(MASTERKEY)
.consistencyLevel(CONSISTENCY)
.gatewayMode()
.buildAsyncClient();
/* Gateway mode, custom settings */
GatewayConnectionConfig gatewayConnectionConfig = GatewayConnectionConfig.getDefaultConfig();
// Example config, do not use these settings as defaults
gatewayConnectionConfig.setProxy(new ProxyOptions(ProxyOptions.Type.HTTP, InetSocketAddress.createUnresolved("your.proxy.addr",80)));
gatewayConnectionConfig.setMaxConnectionPoolSize(1000);
CosmosAsyncClient clientGatewayCustom = new CosmosClientBuilder()
.endpoint(HOSTNAME)
.key(MASTERKEY)
.consistencyLevel(CONSISTENCY)
.gatewayMode(gatewayConnectionConfig)
.buildAsyncClient();
/* No connection mode, defaults to Direct mode with default settings */
CosmosAsyncClient clientDefault = new CosmosClientBuilder()
.endpoint(HOSTNAME)
.key(MASTERKEY)
.consistencyLevel(CONSISTENCY)
.buildAsyncClient();
Dostosowywanie trybu bezpośredniego połączenia
Jeśli wymagane jest niestandardowe zachowanie trybu bezpośredniego, utwórz wystąpienie DirectConnectionConfig i dostosuj jego właściwości, a następnie przekaż dostosowane wystąpienie do metody directMode() w kreatorze klienta Azure Cosmos DB.
Te ustawienia konfiguracji kontrolują zachowanie architektury trybu bezpośredniego omówionej wcześniej.
W pierwszym kroku skorzystaj z poniższych zalecanych ustawień konfiguracji. Te opcje DirectConnectionConfig to zaawansowane ustawienia konfiguracji, które mogą mieć wpływ na wydajność zestawu SDK w nieoczekiwany sposób; zalecamy, aby użytkownicy unikali ich modyfikowania, chyba że czują się komfortowo w zrozumieniu kompromisów i jest to konieczne. Skontaktuj się z zespołem usługi Azure Cosmos DB , jeśli wystąpią problemy w tym konkretnym temacie.
| Opcja konfiguracji | Default | Zalecane | Szczegóły |
|---|---|---|---|
| limitCzasuNieaktywnegoPołączenia | "PT0" (ZERO) | "PT0" (ZERO) | Reprezentuje to czas trwania bezczynności połączenia dla pojedynczego połączenia z węzłem punktu końcowego/zaplecza (reprezentującym replikę). Domyślnie zestaw SDK nie zamyka automatycznie bezczynnych połączeń z węzłami zaplecza. |
| idleEndpointTimeout | "PT1H" | "PT1H" | Reprezentuje to okres czasu limitu bezczynności dla puli połączeń węzła końcowego lub zaplecza (reprezentującego replikę). Domyślnie, jeśli nie ma żądań przychodzących do określonego punktu końcowego/węzła zaplecza, zestaw SDK zamknie wszystkie połączenia w puli połączeń z tym węzłem punktu końcowego/zaplecza po 1 godzinie, aby zaoszczędzić zasoby sieciowe i koszty operacji we/wy. W przypadku rozrzedzonego lub sporadycznego wzorca ruchu zalecamy ustawienie tej wartości na wyższą liczbę, taką jak 6 godzin, 12 godzin, a nawet 24 godziny, aby zestaw SDK nie musiał często otwierać połączeń. Jednak wykorzystuje to zasoby sieciowe i będzie mieć większą liczbę połączeń otwartych w danym momencie. Jeśli jest ustawiona wartość ZERO, sprawdzanie bezczynności punktu końcowego jest wyłączone. |
| maxConnectionsPerEndpoint | "130" | "130" | Reprezentuje górną granicę rozmiaru puli połączeń dla węzła punktu końcowego lub węzła zapasowego (reprezentującego replikę). SDK tworzy połączenia z węzłem punktu końcowego/zaplecza na żądanie i w oparciu o współbieżne żądania przychodzące. Domyślnie, jeśli to konieczne, zestaw SDK tworzy maksymalnie 130 połączeń z węzłem krańcowym/backend. (UWAGA: zestaw SDK nie tworzy tych 130 połączeń z góry). |
| maksLiczbaŻądańNaPołączenie | 30 | "30" | Reprezentuje on górną granicę maksymalnej liczby żądań, które mogą być w kolejce na jednym połączeniu dla określonego punktu końcowego lub węzła zaplecza (reprezentującego replikę). Zestaw SDK kolejkuje żądania do pojedynczego połączenia z węzłem punktu końcowego lub węzłem zaplecza w miarę potrzeb i na podstawie nadchodzących żądań współbieżnych. Domyślnie w razie potrzeby zestaw SDK kolejkuje maksymalnie 30 żądań do pojedynczego połączenia dla określonego punktu końcowego/węzła zaplecza. (UWAGA: zestaw SDK nie kolejkuje tych 30 żądań do pojedynczego połączenia wcześniej). |
| limitCzasuPołączenia (connectTimeout) | "PT5S" | "~PT1S" | Reprezentuje to czas trwania limitu czasu połączenia dla pojedynczego połączenia , które ma zostać nawiązane z węzłem punktu końcowego/zaplecza. Domyślnie zestaw SDK czeka maksymalnie 5 sekund na utworzenie połączenia przed zgłoszeniem błędu. Ustanowienie połączenia TCP używa uzgadniania wieloetapowego , co zwiększa opóźnienie czasu ustanowienia połączenia, dlatego zaleca się klientom ustawienie tej wartości zgodnie z ich przepustowością sieci i ustawieniami środowiska. UWAGA: To zalecenie ~PT1S dotyczy tylko aplikacji wdrożonych w kolokowanych regionach kont usługi Cosmos DB. |
| networkRequestTimeout | "PT5S" | "PT5S" | Reprezentuje to czas trwania limitu czasu sieci dla pojedynczego żądania. Zestaw SDK będzie czekał przez maksymalny czas, aby odebrać odpowiedź usługi po wysłaniu żądania przez połączenie sieciowe. Zestaw SDK zezwala tylko na wartości z zakresu od 1 sekundy (min) do 10 sekund (maksimum). Ustawienie zbyt dużej wartości może spowodować zmniejszenie liczby ponownych prób i zmniejszenie prawdopodobieństwa powodzenia przez ponawianie prób. |
Tryb połączenia gatewaya
Operacje płaszczyzny sterowania, takie jak baza danych i kontener CRUD , zawsze korzystają z trybu bramy. Nawet jeśli użytkownik skonfigurował tryb bezpośredni dla operacji płaszczyzny danych, płaszczyzna sterowania i operacje metadanych używają domyślnych ustawień trybu Gateway. Odpowiada to większości użytkowników. Jednak użytkownicy, którzy chcą używać trybu Direct dla operacji w płaszczyźnie danych i regulacji parametrów trybu Gateway w płaszczyźnie sterowania, mogą użyć następującego nadpisania directMode():
Zestaw JAVA SDK w wersji 4 (Maven com.azure::azure-cosmos) Async API
/* Independent customization of Direct mode data plane and Gateway mode control plane */
DirectConnectionConfig directConnectionConfig = DirectConnectionConfig.getDefaultConfig();
// Example config, do not use these settings as defaults
directConnectionConfig.setMaxConnectionsPerEndpoint(130);
directConnectionConfig.setIdleConnectionTimeout(Duration.ZERO);
GatewayConnectionConfig gatewayConnectionConfig = GatewayConnectionConfig.getDefaultConfig();
// Example config, do not use these settings as defaults
gatewayConnectionConfig.setProxy(new ProxyOptions(ProxyOptions.Type.HTTP, InetSocketAddress.createUnresolved("your.proxy.addr",80)));
gatewayConnectionConfig.setMaxConnectionPoolSize(1000);
CosmosAsyncClient clientDirectCustom = new CosmosClientBuilder()
.endpoint(HOSTNAME)
.key(MASTERKEY)
.consistencyLevel(CONSISTENCY)
.directMode(directConnectionConfig,gatewayConnectionConfig)
.buildAsyncClient();
Dostosowywanie trybu połączenia bramy
Jeśli zachowanie trybu niebędącego domyślnym dla Bramy jest pożądane, utwórz wystąpienie GatewayConnectionConfig i dostosuj jego właściwości, a następnie przekaż dostosowane wystąpienie do metody directMode() lub metody gatewayMode() w konstruktorze klienta usługi Azure Cosmos DB.
W pierwszym kroku skorzystaj z poniższych zalecanych ustawień konfiguracji. Te opcje GatewayConnectionConfig to zaawansowane ustawienia konfiguracji, które mogą mieć wpływ na wydajność zestawu SDK w nieoczekiwany sposób; zalecamy, aby użytkownicy unikali ich modyfikowania, chyba że czują się komfortowo w zrozumieniu kompromisów i jest to konieczne. Skontaktuj się z zespołem usługi Azure Cosmos DB , jeśli wystąpią problemy w tym konkretnym temacie.
| Opcja konfiguracji | Default | Zalecane | Szczegóły |
|---|---|---|---|
| maxConnectionPoolSize (maksymalna wielkość puli połączeń) | "1000" | "1000" | Oznacza to górny rozmiar puli połączeń dla bazowego klienta HTTP, który jest maksymalną liczbą połączeń tworzonych przez zestaw SDK dla żądań przechodzących do trybu bramy. SDK ponownie używa tych połączeń podczas wysyłania żądań do bramy. |
| limitCzasuNieaktywnegoPołączenia | "PT60S" | "PT60S" | Czas trwania limitu czasu bezczynności dla pojedynczego połączenia z bramą. Po tym czasie połączenie zostanie automatycznie zamknięte i zostanie usunięte z puli połączeń. |
Dalsze kroki
Aby dowiedzieć się więcej na temat wskazówek dotyczących wydajności zestawu Java SDK, zobacz Porady dotyczące wydajności zestawu Java SDK usługi Azure Cosmos DB w wersji 4.
Aby dowiedzieć się więcej na temat projektowania aplikacji pod kątem skalowania i wysokiej wydajności, zobacz Partycjonowanie i skalowanie w usłudze Azure Cosmos DB.
Próbujesz zaplanować zasoby na potrzeby migracji do usługi Azure Cosmos DB? Informacje o istniejącym klastrze bazy danych można użyć do planowania pojemności.
- Jeśli wszystko, co wiesz, to liczba rdzeni wirtualnych i serwerów w istniejącym klastrze bazy danych, przeczytaj o szacowaniu jednostek żądań przy użyciu rdzeni wirtualnych lub procesorów wirtualnych
- Jeśli znasz typowe stawki żądań dla bieżącego obciążenia bazy danych, przeczytaj o szacowaniu jednostek żądań przy użyciu planisty pojemności usługi Azure Cosmos DB