Megosztás a következőn keresztül:


Kapcsolatkonfigurációk finomhangolása az Azure Cosmos DB Java SDK v4-hez

A KÖVETKEZŐRE VONATKOZIK: NoSQL

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ésről a Migrálás az Azure Cosmos DB Java SDK v4-es verziójára című útmutatóban olvashat.

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, vagy összetett kódot kell írnia az adatbázis Azure Cosmos DB-vel való skálázásához. A vertikális fel- és leskálázás olyan egyszerű, mint egyetlen API-hívás vagy SDK-metódushívás. 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ó

Feljegyzé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 alább 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 alapértelmezett 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 fent 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 feltétlenül szükséges. Ha problémákba ütközik ebben a témakörben, forduljon az Azure Cosmos DB csapatához .

Konfigurációs beállítás Alapértelmezett Ajánlott Részletek
idleConnectionTimeout "PT0" (NULLA) "PT0" (NULLA) Ez egy végponttal/háttércsomóponttal való egyetlen kapcsolat (replikát képviselő) egyetlen kapcsolatának tétlenségi időtúllépési időtartamát jelöli. 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 a hálózati erőforrásokat fogja használni, és egy adott időpontban nagyobb számú kapcsolat fog nyitva maradni. Ha ez NULLA értékre van állítva, az inaktív végpont ellenőrzése le lesz 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. Ha szükséges, az SDK alapértelmezés szerint legfeljebb 130 kapcsolatot hoz létre egy végponthoz/háttércsomóponthoz. (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 vár egy adott végpont/háttércsomópont egyetlen kapcsolatára. (MEGJEGYZÉS: Az SDK nem várólistára küldi ezt a 30 kérést egyetlen kapcsolatra előre.
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ásodpercet 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ással és az újrapróbálkozással 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 az adatsík műveleteihez, valamint a vezérlősík átjáró mód paramétereinektunitását, 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 alapértelmezett á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 fenti 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 olyan 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 feltétlenül szükséges. Ha problémákba ütközik ebben a témakörben, forduljon az Azure Cosmos DB csapatához .

Konfigurációs beállítás Alapértelmezett Ajánlott Részletek
maxConnectionPoolSize "1000" "1000" Ez a mögöttes 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 az átjáróval létesített egyetlen kapcsolat tétlen 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.