قم بتكوين عمليات الكتابة متعددة المناطق في تطبيقاتك التي تستخدم Azure Cosmos DB

ينطبق على: NoSQL

في سيناريوهات الكتابة في مناطق متعددة، يمكنك الحصول على ميزة الأداء عن طريق الكتابة فقط إلى المنطقة القريبة من مثيل التطبيق الخاص بك. يعالج Azure Cosmos DB النسخ المتماثل لك خلف الكواليس.

بعد تمكين حسابك لمناطق كتابة متعددة، يجب إجراء تغييرين في تطبيقك على ConnectionPolicy. ConnectionPolicyضمن ، قم بتعيين UseMultipleWriteLocations إلى true وتمرير اسم المنطقة حيث يتم نشر التطبيق إلى ApplicationRegion. يملأ هذا الإجراء الخاصية PreferredLocations استنادا إلى التقارب الجغرافي من الموقع الذي تم تمريره. إذا تمت إضافة منطقة جديدة لاحقا إلى الحساب، فلن يلزم تحديث التطبيق أو إعادة توزيعه. يكتشف تلقائيا المنطقة الأقرب والمنازل التلقائية إليها في حالة حدوث حدث إقليمي.

ملاحظة

يمكن تكوين حسابات Azure Cosmos DB التي تم تكوينها في البداية مع منطقة كتابة واحدة إلى مناطق كتابة متعددة مع صفر وقت تعطل. لمعرفة المزيد، راجع تكوين مناطق الكتابة المتعددة.

مدخل Azure

لاستخدام عمليات الكتابة متعددة المناطق، قم بتمكين حساب Azure Cosmos DB لمناطق متعددة باستخدام مدخل Microsoft Azure. حدد المناطق التي يمكن للتطبيق الخاص بك الكتابة إليها.

لتمكين عمليات الكتابة متعددة المناطق، استخدم الخطوات التالية:

  1. تسجيل الدخول إلى مدخل Azure.

  2. انتقل إلى حساب Azure Cosmos DB ومن القائمة، افتح جزء Replicate data عالميا .

  3. ضمن الخيار عمليات الكتابة متعددة المناطق، اختر تمكين . يقوم تلقائياً بإضافة المناطق الموجودة لقراءة وكتابة المناطق.

  4. يمكنك إضافة المزيد من المناطق عن طريق تحديد الأيقونات على الخريطة أو عن طريق تحديد الزر إضافة منطقة . تم تمكين كل المناطق التي تضيفها للقراءة والكتابة.

  5. بعد تحديث قائمة المنطقة، حدد حفظ لتطبيق التغييرات.

    لقطة شاشة لتمكين عمليات الكتابة متعددة المناطق باستخدام مدخل Microsoft Azure.

.NET SDK v2

لتمكين عمليات الكتابة متعددة المناطق في التطبيق الخاص بك، قم بتعيين UseMultipleWriteLocationsعلىtrue. أيضاً، قم بتعيين SetCurrentLocationعلى المنطقة التي يتم نشر التطبيق فيها والتي يتم فيها نسخ Azure Cosmos DB:

ConnectionPolicy policy = new ConnectionPolicy
    {
        ConnectionMode = ConnectionMode.Direct,
        ConnectionProtocol = Protocol.Tcp,
        UseMultipleWriteLocations = true
    };
policy.SetCurrentLocation("West US 2");

.NET SDK v3

لتمكين عمليات الكتابة متعددة المناطق في التطبيق الخاص بك، قم بتعيين ApplicationRegion إلى المنطقة التي يتم فيها نشر التطبيق وحيث يتم نسخ Azure Cosmos DB:

CosmosClient cosmosClient = new CosmosClient(
    "<connection-string-from-portal>", 
    new CosmosClientOptions()
    {
        ApplicationRegion = Regions.WestUS2,
    });

اختيارياً، يمكنك استخدام CosmosClientBuilderوWithApplicationRegion لتحقيق نفس النتيجة:

CosmosClientBuilder cosmosClientBuilder = new CosmosClientBuilder("<connection-string-from-portal>")
            .WithApplicationRegion(Regions.WestUS2);
CosmosClient client = cosmosClientBuilder.Build();

Java V4 SDK

لتمكين عمليات الكتابة متعددة المناطق في التطبيق الخاص بك، اتصل .multipleWriteRegionsEnabled(true) و .preferredRegions(preferredRegions) في منشئ العميل، حيث preferredRegions هي من List المناطق التي يتم نسخ البيانات إلى مرتبة حسب التفضيل - من الناحية المثالية المناطق ذات أقصر مسافة/أفضل زمن انتقال أولا:

Java SDK V4 (Maven com.azure::azure-cosmos) Async API:


ArrayList<String> preferredRegions = new ArrayList<String>();
preferredRegions.add(region);

CosmosAsyncClient client =
        new CosmosClientBuilder()
                .endpoint(HOST)
                .key(MASTER_KEY)
                .multipleWriteRegionsEnabled(true)
                .preferredRegions(preferredRegions)
                .buildAsyncClient();

⁧⁩⁧⁩ Async Java V2 SDK

استخدمت Java V2 SDK Maven com.microsoft.azure::azure-cosmosdb. لتمكين عمليات الكتابة متعددة المناطق في التطبيق الخاص بك، قم بتعيين policy.setUsingMultipleWriteLocations(true) وتعيين policy.setPreferredLocations إلى List المناطق التي يتم نسخ البيانات إلى مرتبة حسب التفضيل - من الناحية المثالية المناطق ذات أقصر مسافة/أفضل زمن انتقال أولا:

ConnectionPolicy policy = new ConnectionPolicy();
policy.setUsingMultipleWriteLocations(true);
policy.setPreferredLocations(Collections.singletonList(region));

AsyncDocumentClient client =
    new AsyncDocumentClient.Builder()
        .withMasterKeyOrResourceToken(this.accountKey)
        .withServiceEndpoint(this.accountEndpoint)
        .withConsistencyLevel(ConsistencyLevel.Eventual)
        .withConnectionPolicy(policy).build();

حزم SDK لـ Node.js وJavaScript وTypeScript

لتمكين عمليات الكتابة متعددة المناطق في التطبيق الخاص بك، قم بتعيين connectionPolicy.UseMultipleWriteLocationsعلىtrue. أيضا، قم بتعيين connectionPolicy.PreferredLocations إلى المناطق التي يتم نسخ البيانات إلى مرتبة حسب التفضيل - من الناحية المثالية المناطق ذات أقصر مسافة/أفضل زمن انتقال أولا:

const connectionPolicy: ConnectionPolicy = new ConnectionPolicy();
connectionPolicy.UseMultipleWriteLocations = true;
connectionPolicy.PreferredLocations = [region];

const client = new CosmosClient({
  endpoint: config.endpoint,
  auth: { masterKey: config.key },
  connectionPolicy,
  consistencyLevel: ConsistencyLevel.Eventual
});

Python SDK

لتمكين عمليات الكتابة متعددة المناطق في التطبيق الخاص بك، قم بتعيين connection_policy.UseMultipleWriteLocationsعلىtrue. أيضا، قم بتعيين connection_policy.PreferredLocations إلى المناطق التي يتم نسخ البيانات إلى مرتبة حسب التفضيل - من الناحية المثالية المناطق ذات أقصر مسافة/أفضل زمن انتقال أولا.

connection_policy = documents.ConnectionPolicy()
connection_policy.UseMultipleWriteLocations = True
connection_policy.PreferredLocations = [region]

client = cosmos_client.CosmosClient(self.account_endpoint, {
                                    'masterKey': self.account_key}, connection_policy, documents.ConsistencyLevel.Session)

الخطوات التالية