Azure Cosmos DB dalam beban kerja IoT

Azure Cosmos DB
Azure Databricks
Azure Functions
Azure IoT Hub
Power BI

Artikel ini menjelaskan beban kerja internet-of-things (IoT) yang bergantung pada beberapa fitur layanan database Azure Cosmos DB. Azure Cosmos DB adalah database multi-model yang dibangun untuk distribusi global dan skala horizontal.

Distribusi global secara transparan menskalakan dan mereplikasi data di seluruh wilayah Azure. Anda dapat menskalakan throughput dan penyimpanan di seluruh dunia, dan hanya membayar jumlah yang Anda butuhkan. Penskalaan elastis instan mengakomodasi beban kerja IoT yang beragam dan tidak dapat diprediksi, tanpa mengorbankan penyerapan atau performa kueri.

Azure Cosmos DB sangat ideal untuk beban kerja IoT karena mampu:

  • Menyerap data telemetri perangkat dengan tarif tinggi, dan mengembalikan kueri terindeks dengan latensi rendah dan ketersediaan tinggi.
  • Menyimpan format JSON dari vendor perangkat yang berbeda, yang memberikan fleksibilitas dalam skema payload.
  • Dengan menggunakan titik akhir API yang kompatibel dengan protokol kawat untuk Cassandra, MongoDB, SQL, Gremlin, dlld, dan database tabel, dan dukungan bawaan untuk file Jupyter Notebook.

Kemungkinan kasus penggunaan

  • Gunakan kemampuan Azure Cosmos DB bawaan yang didistribusikan secara global untuk memungkinkan baca-tulis latensi rendah untuk aplikasi IoT yang sangat responsif.
  • Menangani data dari berbagai vendor perangkat dan jenis data.

Sistem

Diagram yang menunjukkan peran Azure Cosmos DB dalam arsitektur solusi Azure IoT.Unduh file Visio arsitektur ini.

Aliran data

  1. Sensor IoT dan perangkat Edge mengirim peristiwa sebagai aliran pesan melalui Azure IoT Hub ke lapisan analisis dan transformasi. IoT Hub dapat menyimpan aliran data dalam partisi selama durasi tertentu.

  2. Azure Databricks dengan Apache Spark Structured Streaming mengambil pesan dari IoT Hub secara real time, memproses data berdasarkan logika bisnis, dan mengirim data ke penyimpanan. Streaming Terstruktur dapat menyediakan analitik real time, seperti menghitung rata-rata bergerak atau nilai minimum dan maksimum dari periode waktu tertentu.

  3. Azure Cosmos DB menyimpan pesan perangkat sebagai dokumen JSON di penyimpanan data panas. Azure Cosmos DB dapat memvalidasi terhadap skema JSON dari vendor perangkat yang berbeda.

    Lapisan penyimpanan juga terdiri dari:

    • Azure Blob Storage. Perutean pesan IoT Hub menyimpan pesan perangkat mentah ke penyimpanan Blob, menyediakan penyimpanan data dingin jangka panjang yang murah.
    • Azure SQL Database, untuk menyimpan data transaksional dan relasional, seperti data penagihan dan peran pengguna.
    • Gudang data Azure Synapse Analytics, diisi oleh Azure Data Factory, yang menggabungkan data dari Azure Cosmos DB dan Azure SQL DB.
  4. Microsoft Power BI menganalisis gudang data.

  5. Lapisan presentasi menggunakan data dari lapisan penyimpanan untuk membangun aplikasi web, seluler, dan API.

  6. Setiap kali pesan perangkat baru atau yang diperbarui tiba, umpan perubahan Azure Cosmos DB memicu fungsi Azure Functions.

  7. Fungsi menentukan apakah pesan memerlukan tindakan perangkat, seperti boot ulang. Jika demikian, fungsi terhubung ke IoT Hub dengan menggunakan IoT Hub Service API, dan memulai tindakan perangkat. Fungsi ini dapat memulai tindakan dengan menggunakan perangkat kembar, pesan cloud ke perangkat, atau metode langsung.

Komponen

Beban kerja ini menggunakan komponen Azure berikut:

Azure Cosmos DB

Beban kerja IoT ini menyoroti Azure Cosmos DB, database multi-model yang didistribusikan secara global. Beban kerja menggunakan fitur Azure Cosmos DB berikut:

  • Tingkat konsistensi. Azure Cosmos DB mendukung lima tingkat konsistensi baca, dari yang terkuat hingga terlemah: Kuat, keusangan terikat, sesi, awalan yang konsisten, dan akhirnya. Secara umum, konsistensi yang lebih kuat menyebabkan ketersediaan yang lebih rendah, latensi yang lebih lama, dan throughput yang lebih rendah. Anda dapat memilih tingkat konsistensi berdasarkan persyaratan beban kerja Anda.

  • Time to live (TTL). Azure Cosmos DB dapat menghapus item secara otomatis dari kontainer setelah periode waktu tertentu. Kemampuan ini memungkinkan Azure Cosmos DB bertindak sebagai penyimpanan data panas untuk data terbaru, dengan data jangka panjang yang disimpan di penyimpanan dingin Azure Blob.

  • Ubah umpan. Fitur umpan perubahan menghasilkan daftar dokumen yang diubah yang diurutkan, dalam urutan modifikasinya. Setiap peristiwa baru di umpan perubahan kontainer Azure Cosmos DB secara otomatis memicu fungsi Azure Functions kecil yang reaktif. Bergantung pada konten dokumen JSON, fungsi dapat terhubung ke Azure IoT Hub Service API dan menjalankan tindakan pada perangkat.

  • Unit permintaan (RU). RU adalah unit komputasi yang mengukur throughput Azure Cosmos DB. Anda dapat menggunakan RU untuk meningkatkan dan menurunkan skala Azure Cosmos DB secara dinamis, sambil mempertahankan ketersediaan dan mengoptimalkan biaya dan performa.

  • Pemartisian. Kunci partisi menentukan bagaimana Azure Cosmos DB merutekan data dalam partisi. ID Perangkat IoT adalah kunci partisi biasa untuk aplikasi IoT.

Komponen Azure lainnya

Solusi ini juga menggunakan komponen Azure berikut:

  • Azure IoT Edge menjalankan aplikasi di tepi, seperti model pembelajaran mesin.

  • Azure IoT Hub bertindak sebagai gateway cloud, menyerap telemetri perangkat dalam skala besar. IoT Hub mendukung komunikasi kembali ke perangkat, memungkinkan tindakan dikirim dari cloud ke IoT Edge ke perangkat.

  • Azure Databricks dengan Spark Structured Streaming adalah sistem pemrosesan aliran yang dapat diskalakan dan toleran terhadap kesalahan yang secara asli mendukung beban kerja batch dan streaming. Azure Databricks adalah lapisan transformasi dan analitik, dan terhubung ke titik akhir yang kompatibel dengan hub peristiwa IoT Hub dengan menggunakan pustaka Maven azure-eventhubs-spark_2.11:2.3.6 .

  • Azure Blob Storage menyediakan penyimpanan data dingin jangka panjang yang dapat diskalakan, murah, dan jangka panjang untuk data yang tidak terstruktur.

  • Azure SQL Database adalah database hubungan untuk data transaksional dan non-IoT lainnya.

  • Azure Synapse Analytics adalah gudang data dan platform pelaporan untuk pergudangan data perusahaan dan analitik big data. Synapse Analytics berisi data agregat dari Azure SQL Database dan Azure Cosmos DB.

    Azure Synapse Link untuk Azure Cosmos DB memungkinkan analitik mendekati real time pada data operasional Azure Cosmos DB, tanpa dampak performa atau biaya pada beban kerja transaksional. Synapse Link menggunakan dua mesin analitik di ruang kerja Azure Synapse: SQL Serverless dan Spark Pools.

  • Power BI adalah serangkaian alat analitik bisnis untuk menganalisis data dan berbagi wawasan. Power BI dapat mengkueri model semantik yang disimpan di Azure Analysis Services, atau dapat mengkueri Synapse Analytics secara langsung.

  • Azure App Service membangun aplikasi web dan seluler. Azure API App memungkinkan aplikasi pihak ketiga menggunakan API berdasarkan data dari lapisan penyajian.

  • Azure Functions adalah platform komputasi tanpa server berbasis peristiwa yang dapat beroperasi dalam skala besar di cloud, dan mengintegrasikan layanan dengan menggunakan pemicu dan pengikatan. Azure Functions dapat menerjemahkan format pesan IoT, atau memicu tindakan saat tersambung ke umpan perubahan Azure Cosmos DB.

Alternatif

  • Alih-alih Azure Databricks, lapisan transformasi dan analitik dapat menggunakan HDInsight Storm, HDInsight Spark atau Azure Stream Analytics untuk melakukan analitik streaming, dan menggunakan Azure Functions untuk mengubah payload pesan.

  • Lapisan penyimpanan layanan dapat menggunakan Azure Data Explorer untuk menyimpan pesan IoT. Layanan ini juga memiliki kemampuan analitik yang kaya.

Pertimbangan

Azure Cosmos DB memiliki batas 20 GB untuk satu partisi logis. Untuk sebagian besar solusi IoT, ukuran ini sudah cukup. Jika tidak, Anda dapat:

  • Atur kunci partisi ke bidang buatan, dan tetapkan bidang nilai komposit, seperti ID Perangkat + Bulan Saat Ini dan Tahun. Strategi ini menjamin kardinalitas bernilai tinggi untuk desain partisi yang baik. Untuk informasi selengkapnya, lihat Memilih kunci partisi.

  • Berdasarkan siklus hidup data, Anda dapat memindahkan data Azure Cosmos DB yang lebih lama ke penyimpanan dingin, seperti Azure Blob Storage. Anda dapat menggunakan kombinasi umpan perubahan untuk mereplikasi data ke penyimpanan dingin, dan TTL untuk menghapus data secara otomatis dari kontainer setelah periode waktu tertentu.

Langkah berikutnya