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

ينطبق على: واجهة برمجة تطبيقات SQL

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

ملاحظة

يمكن تكوين حسابات Cosmos التي تم تكوينها مبدئياً بمنطقة كتابة واحدة لمناطق كتابة متعددة دون وقت تعطل. لمعرفة المزيد، راجع تكوين مناطق الكتابة المتعددة

مدخل Azure

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

  1. سجّل الدخول إلى بوابة Azure.

  2. انتقل إلى حساب Azure Cosmos الخاص بك ومن القائمة، افتح الجزء تكرار البيانات عالمياً.

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

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

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

    Screenshot to enable multi-region writes using Azure portal

.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على المنطقة التي يتم فيها نشر التطبيق وحيث يتم نسخ 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 تحتوي على عنصر واحد - وهي المنطقة التي يتم نشر التطبيق وحيث يتم نسخ Cosmos DB:

⁩Java SDK V4⁧⁩ (Maven ⁧⁩com.azure::azure-cosmos⁧⁩) واجهة برمجة التطبيقات غير المتزامنة


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 على المنطقة التي يتم فيها نشر التطبيق وحيث يتم نسخ Cosmos DB:

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على المنطقة التي يتم نشر التطبيق فيها والتي يتم فيها نسخ Cosmos DB:

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على المنطقة التي يتم نشر التطبيق فيها والتي يتم فيها نسخ Cosmos DB.

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)

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

اقرأ المقالات التالية: