Как обеспечить пропускную способность для контейнера? - PullRequest
1 голос
/ 29 мая 2019

Я создал учетную запись, базу данных и контейнеры Cosmos Db, используя этот шаблон ARM. Развертывание через конвейер выпуска DevOps Azure работает.

Я использовал этот шаблон ARM для настройки пропускной способности базы данных. Он также находится в конвейере выпуска и работает.

В настоящее время пропускная способность предоставляется на уровне базы данных и распределяется между всеми контейнерами. Как обеспечить пропускную способность на уровне контейнера? Я попытался запустить этот шаблон ARM для обновления пропускной способности на уровне контейнера. Похоже, что после предоставления общей пропускной способности на уровне базы данных невозможно обеспечить пропускную способность на уровне контейнера.

Я нашел этот справочный документ, но пропускная способность не указана. Я что-то упускаю из виду, или желаемая функциональность еще не реализована?

UPDATE: При попытке обновить контейнер с помощью вышеуказанного шаблона я получаю следующее:

2019-05-29T20:25:10.5166366Z There were errors in your deployment. Error code: DeploymentFailed.
2019-05-29T20:25:10.5236514Z ##[error]At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/arm-debug for usage details.
2019-05-29T20:25:10.5246027Z ##[error]Details:
2019-05-29T20:25:10.5246412Z ##[error]NotFound: {
  "code": "NotFound",
  "message": "Entity with the specified id does not exist in the system.\r\nActivityId: 7ba84...b52b2, Microsoft.Azure.Documents.Common/2.4.0.0"
} undefined
2019-05-29T20:25:10.5246730Z ##[error]Task failed while creating or updating the template deployment.

Ответы [ 2 ]

0 голосов
/ 30 мая 2019

Я считаю, что сначала вам нужно создать контейнер с выделенной пропускной способностью. Я не видел никакой документации по изменению контейнера с общей на выделенную пропускную способность. В документации Microsoft пример создает контейнеры с общей и выделенной пропускной способностью.

Установить пропускную способность для базы данных и контейнера

Вы можете объединить две модели. Предоставление пропускной способности как для базы данных, так и для контейнера разрешено. В следующем примере показано, как обеспечить пропускную способность для базы данных Azure Cosmos и контейнера:

  • Вы можете создать базу данных Azure Cosmos с именем Z с выделенной пропускной способностью "K" RU.
  • Затем создайте пять контейнеров с именами A, B, C, D и E в базе данных. При создании контейнера B обязательно включите выделенную пропускную способность Provision для этого параметра контейнера и явно настройте «P» RU выделенной пропускной способности для этого контейнера. Обратите внимание, что вы можете настроить общую и выделенную пропускную способность только при создании базы данных и контейнера.
  • Пропускная способность "K" RU распределяется между четырьмя контейнерами A, C, D и E. Точный объем пропускной способности, доступный для A, C, D или E, варьируется. Для пропускной способности каждого отдельного контейнера нет соглашений об уровне обслуживания.
  • Контейнер с именем B гарантированно будет постоянно пропускать пропускную способность "P" RU. Он поддерживается SLA.

В подпапке 101-cosmosdb-sql-container-ru-update имеется шаблон prereq ARM. В предыдущей версии контейнер имел свойство throughput, установленное при создании контейнера. После создания контейнера с выделенной пропускной способностью шаблон обновления работает без ошибок. Я попробовал это и проверил, что это работает. enter image description here

        {
            "type": "Microsoft.DocumentDB/databaseAccounts/apis/databases",
            "name": "[concat(variables('accountName'), '/sql/', variables('databaseName'))]",
            "apiVersion": "2016-03-31",
            "dependsOn": [ "[resourceId('Microsoft.DocumentDB/databaseAccounts/', variables('accountName'))]" ],
            "properties":{
                "resource":{
                    "id": "[variables('databaseName')]"
                },
                "options": { "throughput": "[variables('databaseThroughput')]" }
            }
        },
        {
            "type": "Microsoft.DocumentDb/databaseAccounts/apis/databases/containers",
            "name": "[concat(variables('accountName'), '/sql/', variables('databaseName'), '/', variables('containerName'))]",
            "apiVersion": "2016-03-31",
            "dependsOn": [ "[resourceId('Microsoft.DocumentDB/databaseAccounts/apis/databases', variables('accountName'), 'sql', variables('databaseName'))]" ],
            "properties":
            {
                "resource":{
                    "id":  "[variables('containerName')]",
                    "partitionKey": {
                        "paths": [
                        "/MyPartitionKey1"
                        ],
                        "kind": "Hash"
                    }
                },
                "options": { "throughput": "[variables('containerThroughput')]" }
            }
        }

0 голосов
/ 30 мая 2019

Я совершенно уверен, что это невозможно с ARM, учитывая, что эта ссылка API существует без пропускной способности контейнера: https://docs.microsoft.com/en-us/rest/api/cosmos-db-resource-provider/databaseaccounts/createupdatesqlcontainer#definitions

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...