Menskalakan akun Azure Cosmos DB untuk Apache Cassandra secara elastis

BERLAKU UNTUK: Cassandra

Ada berbagai opsi untuk menjelajahi sifat elastis Azure Cosmos DB for Apache Cassandra. Untuk memahami cara menskalakan secara efektif di Azure Cosmos DB, penting untuk memahami cara menyediakan jumlah unit permintaan (RU/s) yang tepat untuk memperhitungkan kebutuhan performa dalam sistem Anda. Untuk mempelajari selengkapnya tentang unit permintaan, lihat artikel unit permintaan.

Untuk API untuk Cassandra, Anda dapat mengambil biaya Unit Permintaan untuk kueri individual menggunakan .NET dan Java SDK. Ini sangat membantu dalam menentukan jumlah RU yang perlu Anda provisikan dalam layanan.

Operasi database menggunakan Unit Permintaan

Menangani pembatasan tarif (429 kesalahan)

Azure Cosmos DB akan menampilkan (429) kesalahan pembatasan tarif jika klien menggunakan lebih banyak sumber daya (RU/s) dibandingkan jumlah yang telah Anda provisikan. API untuk Cassandra di Azure Cosmos DB menerjemahkan pengecualian ini ke kesalahan yang kelebihan beban pada protokol asli Cassandra.

Jika sistem Anda tidak sensitif terhadap latensi, mungkin cukup untuk menangani pembatasan tarif throughput dengan menggunakan percobaan kembali. Lihat sampel kode Java versi 3 dan versi 4 driver Apache Cassandra Java untuk cara menangani pembatasan rating secara transparan. Sampel ini mengimplementasikan versi kustom Kebijakan coba kembali Cassandra default di Java. Anda juga dapat menggunakan ekstensi Spark untuk menangani pembatasan tarif. Saat menggunakan Spark, pastikan Anda mengikuti panduan kami terkait Mengoptimalkan konfigurasi throughput konektor Spark.

Mengelola penskalaan

Jika Anda perlu meminimalkan latensi, ada spektrum opsi untuk mengelola throughput skala dan provisi (RU) di API untuk Cassandra:

Bagian berikut menjelaskan kelebihan dan kekurangan dari setiap pendekatan. Anda kemudian dapat memutuskan strategi terbaik untuk menyeimbangkan kebutuhan penskalaan sistem Anda, biaya keseluruhan, dan kebutuhan efisiensi untuk solusi Anda.

Gunakan portal Microsoft Azure

Anda dapat menskalakan sumber daya di akun Azure Cosmos DB for Apache Cassandra dengan menggunakan portal Azure. Untuk mempelajari lebih lanjut, lihat artikel tentang Throughput penyediaan pada kontainer dan database. Artikel ini menjelaskan manfaat relatif pengaturan throughput baik di tingkat database atau kontainer di portal Microsoft Azure. Istilah "database" dan "kontainer" yang disebutkan dalam artikel ini masing-masing memetakan ke "keyspace" dan "table" untuk API untuk Cassandra.

Keuntungan dari metode ini adalah bahwa metode tersebut merupakan cara turnkey langsung untuk mengelola kapasitas throughput pada database. Namun, kerugiannya adalah bahwa dalam banyak kasus, pendekatan penskalaan Anda mungkin memerlukan tingkat automasi tertentu untuk menjadi hemat biaya dan memiliki performa tinggi. Bagian berikutnya menjelaskan skenario dan metode terkait.

Menggunakan sarana kontrol

API Azure Cosmos DB untuk Cassandra memberikan kemampuan untuk menyesuaikan throughput secara terprogram dengan menggunakan berbagai fitur sarana kontrol kami. Lihat artikel Azure Resource Manager, PowerShell, dan Azure CLI untuk panduan dan sampel.

Keuntungan dari metode ini adalah Anda dapat mengautomasikan penskalaan naik atau turun sumber daya berdasarkan timer guna memperhitungkan aktivitas puncak, atau periode aktivitas rendah. Lihat sampel kami di sini untuk cara menyelesaikan ini menggunakan Azure Functions dan PowerShell.

Kerugian dengan pendekatan ini mungkin yaitu Anda tidak dapat menanggapi kebutuhan skala yang berubah tidak terduga secara real-time. Sebaliknya, Anda mungkin perlu memanfaatkan konteks aplikasi dalam sistem Anda, di tingkat klien/SDK, atau menggunakan Skala Otomatis.

Menggunakan kueri CQL dengan SDK tertentu

Anda dapat menskalakan sistem secara dinamis dengan kode dengan menjalankan perintah CQL ALTER untuk database atau kontainer yang diberikan.

Keuntungan dari pendekatan ini adalah memungkinkan Anda menanggapi kebutuhan skala secara dinamis dan dengan cara khusus yang sesuai dengan aplikasi Anda. Dengan pendekatan ini, Anda masih dapat memanfaatkan biaya dan tarif RU/ s standar. Jika kebutuhan skala sistem Anda sebagian besar dapat diprediksi (sekitar 70% atau lebih), menggunakan SDK dengan CQL mungkin merupakan metode auto-scaling yang lebih hemat biaya dibandingkan menggunakan skala otomatis. Kerugian dari pendekatan ini adalah penerapan percobaan lagi bisa menjadi cukup rumit, sementara pembatasan tarif dapat meningkatkan latensi.

Menggunakan throughput yang disediakan skala otomatis

Selain cara standar (manual) atau terprogram untuk menyediakan throughput, Anda juga dapat mengonfigurasi kontainer Azure Cosmos DB dalam throughput yang disediakan skala otomatis. Skala Otomatis akan menskalakan secara otomatis dan instan ke kebutuhan pemakaian Anda dalam rentang RU tertentu tanpa mengorbankan SLA. Untuk mempelajari selengkapnya, lihat artikel Membuat kontainer dan database Azure Cosmos DB di skala otomatis .

Pendekatan ini memiliki keuntungan yaitu cara termudah untuk mengelola kebutuhan penskalaan dalam sistem Anda. Pendekatan ini tidak akan menerapkan pembatasan tarif dalam rentang RU yang dikonfigurasi. Kerugiannya adalah, jika kebutuhan penskalaan dalam sistem Anda dapat diprediksi, skala otomatis mungkin merupakan cara yang kurang hemat biaya dalam menangani kebutuhan penskalaan Anda dibandingkan menggunakan sarana kontrol yang dipesan lebih dahulu atau pendekatan tingkat SDK yang disebutkan di atas.

Untuk mengatur atau mengubah throughput maks (RUs) untuk skala otomatis menggunakan CQL, gunakan yang berikut (mengganti keyspace/nama tabel yang sesuai):

# to set max throughput (RUs) for autoscale at keyspace level:
create keyspace <keyspace name> WITH cosmosdb_autoscale_max_throughput=5000;

# to alter max throughput (RUs) for autoscale at keyspace level:
alter keyspace <keyspace name> WITH cosmosdb_autoscale_max_throughput=4000;

# to set max throughput (RUs) for autoscale at table level:
create table <keyspace name>.<table name> (pk int PRIMARY KEY, ck int) WITH cosmosdb_autoscale_max_throughput=5000;

# to alter max throughput (RUs) for autoscale at table level:
alter table <keyspace name>.<table name> WITH cosmosdb_autoscale_max_throughput=4000;

Langkah berikutnya