Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Fontos
A cikkben szereplő teljesítménytippek csak az Azure Cosmos DB Java SDK v4-hez tartoznak. További információért tekintse meg az Azure Cosmos DB Java SDK v4 kiadási megjegyzéseit, a Maven-adattárat és az Azure Cosmos DB Java SDK v4 hibaelhárítási útmutatóját . Ha jelenleg a v4-es verziónál régebbi verziót használ, a v4-re való frissítéssel kapcsolatos segítségért tekintse meg az Azure Cosmos DB Java SDK v4-re való migrálási útmutatóját.
Az Azure Cosmos DB egy gyors és rugalmas elosztott adatbázis, amely zökkenőmentesen méretezhető, garantált késéssel és átviteli sebességgel. Nem kell jelentős architektúramódosításokat végeznie, és nem kell összetett kódot írnia az adatbázis Azure Cosmos DB-vel való skálázásához. A fel- és leskálázás olyan egyszerű, mint egyetlen API-hívás vagy SDK metódus hívása. Mivel azonban az Azure Cosmos DB hálózati hívásokon keresztül érhető el, vannak olyan kapcsolatkonfigurációk, amelyeket az Azure Cosmos DB Java SDK 4-ben történő használatakor a csúcsteljesítmény elérése érdekében hangolhat.
Kapcsolatkonfiguráció
Megjegyzés:
Az Azure Cosmos DB Java SDK 4-ben a Direct mód a legjobb választás az adatbázis teljesítményének javításához a legtöbb számítási feladat esetében.
A különböző csatlakozási lehetőségekről a kapcsolati módokról szóló cikkből tudhat meg többet.
Közvetlen kapcsolati mód
A Java SDK alapértelmezett kapcsolati módja közvetlen. A közvetlen módú Azure Cosmos DB-kérések TCP-en keresztül jönnek létre az Azure Cosmos DB Java SDK v4 használatakor. A belső közvetlen mód egy speciális architektúrát használ a hálózati erőforrások dinamikus kezeléséhez és a legjobb teljesítmény eléréséhez. A Közvetlen módban alkalmazott ügyféloldali architektúra kiszámítható hálózatkihasználtságot és multiplexált hozzáférést tesz lehetővé az Azure Cosmos DB-replikákhoz. Az architektúrával kapcsolatos további információkért tekintse meg a közvetlen módú kapcsolatarchitektúrát
A kapcsolati módot az ügyfélszerkesztőben az itt látható directMode() metódussal konfigurálhatja. Ha a közvetlen módot alapértelmezett beállításokkal szeretné konfigurálni, hívja meg a metódust directMode() argumentumok nélkül. A közvetlen mód kapcsolati beállításainak testreszabásához adja át a DirectConnectionConfigot az API-nak directMode() .
Java SDK V4 (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();
Közvetlen kapcsolati mód testreszabása
Ha nem megfelelő közvetlen módú viselkedésre van szükség, hozzon létre egy DirectConnectionConfig-példányt , és szabja testre a tulajdonságait, majd adja át a testre szabott tulajdonságpéldányt az Azure Cosmos DB ügyfélszerkesztő directMode() metódusának.
Ezek a konfigurációs beállítások szabályozzák a korábban tárgyalt közvetlen módú architektúra viselkedését.
Első lépésként használja az alábbi ajánlott konfigurációs beállításokat. Ezek a DirectConnectionConfig-beállítások speciális konfigurációs beállítások, amelyek váratlan módon befolyásolhatják az SDK teljesítményét; javasoljuk, hogy a felhasználók ne módosítsák őket, hacsak nem érzik jól magukat a kompromisszumok megértésében, és ez szükséges. Lépjen kapcsolatba az Azure Cosmos DB csapatával , ha problémákba ütközik az adott témában.
| Konfigurációs opció | Alapértelmezett | Ajánlott | Részletek |
|---|---|---|---|
| idleConnectionTimeout | "PT0" (NULLA) | "PT0" (NULLA) | Ez jelöli az egy végpontra/háttércsomópontra (amely egy replikát képvisel) vonatkozó kapcsolat tétlenségi időtúllépésének időtartamát. Alapértelmezés szerint az SDK nem zárja be automatikusan a háttércsomópontok tétlen kapcsolatait. |
| idleEndpointTimeout | "PT1H" | "PT1H" | Ez egy végpont/háttércsomópont kapcsolatkészletének üresjárati kapcsolat időtúllépési időtartamát jelöli (replikát jelöl). Alapértelmezés szerint, ha egy adott végpontra/háttércsomópontra nincsenek bejövő kérések, az SDK 1 óra elteltével bezárja a kapcsolatkészletben lévő összes kapcsolatot az adott végpont/háttércsomópont felé a hálózati erőforrások és az I/O költségeinek mentése érdekében. Ritka vagy szórványos forgalom esetén javasoljuk, hogy ezt az értéket magasabb számra, például 6 órára, 12 órára vagy akár 24 órára állítsa, hogy az SDK-nak ne kelljen gyakran megnyitnia a kapcsolatokat. Ez azonban kihasználja a hálózati erőforrásokat, és egy adott időpontban nagyobb számú kapcsolatot tart nyitva. Ha ez NULLA értékre van állítva, a tétlen végpont ellenőrzése le van tiltva. |
| maxConnectionsPerEndpoint | "130" | "130" | Ez egy végpont/háttércsomópont kapcsolatkészletének felső határméretét jelöli (replikát jelöl). Az SDK igény szerint hoz létre kapcsolatokat a végpont-/háttércsomóponttal, a bejövő egyidejű kérések alapján. Az SDK alapértelmezés szerint legfeljebb 130 kapcsolatot hoz létre egy végpont/háttércsomópont között. (MEGJEGYZÉS: Az SDK nem hozza létre előre ezt a 130 kapcsolatot). |
| maxRequestsPerConnection | 30 | "30" | Ez egy adott végpont/háttércsomópont egyetlen kapcsolatán várólistára helyezett kérelmek maximális számának felső határát jelöli (replikát jelölve). Az SDK igény szerint egy végpont/háttércsomópont egyetlen kapcsolatára irányuló kérelmeket küld, a bejövő egyidejű kérések alapján. Ha szükséges, az SDK alapértelmezés szerint legfeljebb 30 kérést küld egyetlen kapcsolathoz egy adott végpont/háttércsomópont számára. (MEGJEGYZÉS: Az SDK nem sorolja várakozási sorba ezt a 30 kérést egyetlen kapcsolatra előzetesen.) |
| kapcsolódási időkorlát (connectTimeout) | "PT5S" | "~PT1S" | Ez a végpont/háttércsomóponttal létesítendő egyetlen kapcsolat kapcsolatlétrehozási időtúllépési időtartamát jelöli. Alapértelmezés szerint az SDK legfeljebb 5 másodpercig vár a kapcsolat létrehozására, mielőtt hibát jelez. A TCP-kapcsolat létrehozása többlépéses kézfogást használ, amely növeli a kapcsolatlétrehozási idő késését, ezért az ügyfeleknek ajánlott ezt az értéket a hálózati sávszélesség és a környezeti beállítások szerint beállítani. MEGJEGYZÉS: Ez a ~PT1S-javaslat csak a Cosmos DB-fiókjuk megosztott régióiban üzembe helyezett alkalmazásokra vonatkozik. |
| networkRequestTimeout | "PT5S" | "PT5S" | Ez egyetlen kérelem hálózati időtúllépési időtartamát jelöli. Az SDK a kérelem hálózati kapcsolatra való írása után legfeljebb erre az időtartamra vár, hogy szolgáltatásválaszt használjon fel. Az SDK csak 1 másodperc (perc) és 10 másodperc (maximum) közötti értékeket engedélyez. A túl magas érték beállítása kevesebb újrapróbálkozást eredményezhet, és csökkentheti a sikeresség esélyét. |
Átjáró kapcsolati módja
Az olyan vezérlősík-műveletek, mint az adatbázis és a tároló CRUD , mindig átjáró módot használnak. Még akkor is, ha a felhasználó konfigurálta a Közvetlen módot az adatsík műveleteihez, a vezérlősík és a metaadat-műveletek az alapértelmezett átjárómód-beállításokat használják. Ez a legtöbb felhasználónak megfelel. Azok a felhasználók azonban, akik közvetlen módot szeretnének használni az adatsík műveleteihez és a vezérlősík Átjáró mód paramétereinek hangolhatóságához, a következő DirectMode() felülbírálást használhatják.
Java SDK V4 (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();
Átjáró kapcsolati módjának testreszabása
Ha nem megfelelő átjáró módú viselkedésre van szükség, hozzon létre egy GatewayConnectionConfig-példányt , és szabja testre a tulajdonságait, majd adja át a testre szabott tulajdonságpéldányt a directMode() felülbírálási metódusnak vagy gatewayMode() metódusnak az Azure Cosmos DB-ügyfélszerkesztőben.
Első lépésként használja az alábbi ajánlott konfigurációs beállításokat. Ezek a GatewayConnectionConfig beállítások speciális konfigurációs beállítások, amelyek váratlan módon befolyásolhatják az SDK teljesítményét; javasoljuk, hogy a felhasználók ne módosítsák őket, hacsak nem érzik jól magukat a kompromisszumok megértésében, és ez szükséges. Lépjen kapcsolatba az Azure Cosmos DB csapatával , ha problémákba ütközik az adott témában.
| Konfigurációs opció | Alapértelmezett | Ajánlott | Részletek |
|---|---|---|---|
| maximálisKapcsolatkészletMéret (maxConnectionPoolSize) | "1000" | "1000" | Ez az alapul szolgáló HTTP-ügyfél kapcsolatkészlet-méretének felső határméretét jelöli, amely az SDK által az átjáró módba irányuló kérelmekhez létrehozott kapcsolatok maximális száma. Az SDK újra felhasználja ezeket a kapcsolatokat, amikor kéréseket küld az átjárónak. |
| idleConnectionTimeout | "PT60S" | "PT60S" | Ez a Gateway-hez létesített egyetlen kapcsolat inaktív kapcsolatának időtúllépési időtartamát jelöli. Ezt követően a rendszer automatikusan bezárja a kapcsolatot, és eltávolítja a kapcsolatkészletből. |
Következő lépések
A Java SDK teljesítménytippjeiről további információt az Azure Cosmos DB Java SDK 4-hez készült teljesítménytippjeiben talál.
Ha többet szeretne megtudni az alkalmazás méretezéshez és nagy teljesítményhez való tervezéséről, tekintse meg a particionálást és a skálázást az Azure Cosmos DB-ben.
Kapacitástervezést szeretne végezni az Azure Cosmos DB-be való migráláshoz? A kapacitástervezéshez használhatja a meglévő adatbázisfürt adatait.
- Ha csak annyit tud, hogy hány virtuális mag és kiszolgáló található a meglévő adatbázisfürtben, olvassa el a kérelemegységek becslését virtuális magok vagy vCPU-k használatával
- Ha ismeri az aktuális adatbázis számítási feladataira vonatkozó tipikus kérési arányokat, olvassa el a kérelemegységek becslését az Azure Cosmos DB kapacitástervezővel