قم بتكوين عمليات الكتابة متعددة المناطق في تطبيقاتك التي تستخدم 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 globally .

  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. الإصدار 3

لتمكين عمليات الكتابة متعددة المناطق في التطبيق الخاص بك، قم بتعيين 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();

Node.js وJavaScript وTypeScript SDKs

لتمكين عمليات الكتابة متعددة المناطق في التطبيق الخاص بك، قم بتعيين 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)

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