Konsep namespace Layanan Azure Event Grid

Artikel ini menjelaskan konsep utama dan fungsionalitas yang terkait dengan topik namespace.

Acara

Peristiwa adalah jumlah informasi terkecil yang sepenuhnya menjelaskan sesuatu yang terjadi dalam sistem. Peristiwa sering disebut peristiwa diskrit karena mewakili fakta yang berbeda dan berdiri sendiri tentang sistem yang memberikan wawasan yang dapat ditindaklanjuti. Setiap peristiwa memiliki informasi umum seperti source peristiwa, time acara berlangsung, dan pengidentifikasi unik. Setiap acara juga memiliki type, yang biasanya merupakan pengidentifikasi unik yang menjelaskan jenis pengumuman tempat peristiwa digunakan.

Misalnya, peristiwa tentang pembuatan file baru di Azure Storage memiliki detail file, seperti nilai lastTimeModified. Peristiwa Azure Event Hubs memiliki URL file yang diambil. Kejadian tentang pesanan baru dalam layanan mikro Orders Anda mungkin memiliki atribut orderId dan atribut URL yang mengarah ke representasi status pesanan tersebut. Beberapa contoh jenis peristiwa lainnya meliputi: com.yourcompany.Orders.OrderCreated, , org.yourorg.GeneralLedger.AccountChangedio.solutionname.Auth.MaximumNumberOfUserLoginAttemptsReached.

Berikut contoh peristiwa:

{
    "specversion" : "1.0",
    "type" : "com.yourcompany.order.created",
    "source" : "/orders/account/123",
    "subject" : "O-28964",
    "id" : "A234-1234-1234",
    "time" : "2018-04-05T17:31:00Z",
    "comexampleextension1" : "value",
    "comexampleothervalue" : 5,
    "datacontenttype" : "application/json",
    "data" : {
       "orderId" : "O-28964",
       "URL" : "https://com.yourcompany/orders/O-28964"
    }
}

Jenis peristiwa lain

Komunitas pengguna juga merujuk pada pesan yang membawa titik data, seperti satu pembacaan perangkat atau klik pada halaman aplikasi web, sebagai "peristiwa." Anda biasanya menganalisis peristiwa semacam ini selama jendela waktu untuk mendapatkan wawasan dan mengambil tindakan. Dalam dokumentasi Event Grid, peristiwa semacam ini disebut titik data, data streaming, atau hanya telemetri. Fitur broker Message Queuing Telemetry Transport (MQTT) Event Grid menggunakan peristiwa semacam ini, di antara jenis pesan lainnya.

Dukungan untuk CloudEvents

Topik namespace Event Grid menerima peristiwa yang mematuhi spesifikasi standar terbuka Cloud Native Computing Foundation (CNCF) CloudEvents 1.0 menggunakan pengikatan protokol HTTP dengan format JSON. CloudEvent adalah semacam pesan yang berisi apa yang sedang dikomunikasikan, disebut sebagai data peristiwa, dan metadata tentang hal itu. Data peristiwa dalam arsitektur berbasis peristiwa biasanya membawa informasi yang mengumumkan perubahan status sistem. Metadata CloudEvents terdiri dari sekumpulan atribut yang memberikan informasi kontekstual tentang pesan, seperti asalnya (sistem sumber) dan jenisnya.

Untuk informasi selengkapnya, lihat Dukungan untuk skema CloudEvents.

Penerbit

Penerbit adalah aplikasi yang mengirim peristiwa ke Event Grid. Ini bisa menjadi aplikasi yang sama tempat peristiwa berasal, sumber peristiwa. Anda dapat memublikasikan event dari aplikasi Anda sendiri saat menggunakan topik namespace.

Sumber Kejadian

Sumber kejadian adalah tempat peristiwa terjadi. Setiap sumber peristiwa mendukung satu atau beberapa jenis peristiwa. Misalnya, aplikasi Anda adalah sumber peristiwa untuk peristiwa kustom yang ditentukan sistem Anda. Saat menggunakan topik namespace, sumber peristiwa yang didukung adalah aplikasi Anda sendiri.

Namaspace

Namespace Event Grid adalah wadah pengelolaan untuk sumber daya berikut:

Sumber daya Protokol yang didukung
Topik ruang nama HTTP
Ruang Topik MQTT
Klien MQTT
Kelompok Klien MQTT
Sertifikat CA MQTT
Pengikatan izin MQTT

Dengan menggunakan namespace Azure Event Grid, Anda dapat mengelompokkan sumber daya terkait dan mengelolanya sebagai satu unit dalam langganan Azure Anda. Ini memberi Anda nama domain unik yang sepenuhnya memenuhi syarat (FQDN).

Namespace mengekspos dua titik akhir:

  • Titik akhir HTTP untuk mendukung persyaratan pesan umum dengan menggunakan topik namespace.
  • Endpoint MQTT untuk perpesanan IoT atau solusi yang menggunakan MQTT.

Sebuah namespace juga menyediakan endpoint jaringan yang terintegrasi dengan DNS. Ini juga menyediakan berbagai kontrol akses dan fitur manajemen integrasi jaringan seperti pemfilteran masuk IP publik dan tautan privat. Ini juga merupakan wadah identitas terkelola yang digunakan untuk sumber daya dalam namespace.

Berikut adalah beberapa poin tambahan tentang namespace:

  • Ruang nama adalah sumber daya yang dilacak yang memiliki properti tags dan location. Setelah membuatnya, Anda dapat menemukannya di resources.azure.com.
  • Nama namespace dapat memiliki panjang 3-50 karakter. Ini dapat mencakup karakter alfanumerik, tanda hubung (-), dan tanpa spasi.
  • Nama harus unik per wilayah.

Satuan throughput

Unit throughput (TU) menentukan kapasitas laju kejadian masuk dan keluar dalam namespace. Untuk informasi selengkapnya, lihat Kuota dan batasan Azure Event Grid.

Skala otomatis

Skala otomatis secara otomatis menyesuaikan jumlah unit throughput yang ditetapkan ke namespace Event Grid berdasarkan lalu lintas real-time dan pemanfaatan sumber daya. Ini terus memantau indikator kinerja utama dan menskalakan kapasitas dalam batas minimum dan maksimum yang Anda konfigurasikan. Perilaku ini membantu mempertahankan performa yang konsisten selama lonjakan beban kerja dan mengurangi biaya selama periode aktivitas rendah tanpa memerlukan intervensi manual.

Untuk menggunakan Skala Otomatis, Anda mengaktifkannya di namespace dan menentukan:

  • Unit throughput minimum: Batas bawah kapasitas. Namespace tidak menskalakan di bawah nilai ini.
  • Unit throughput maksimum: Batas atas kapasitas. Namespace tidak menskalakan di atas nilai ini.

Event Grid mengevaluasi penggunaan berdasarkan ingres peristiwa, egres peristiwa, laju publikasi masuk dan keluar MQTT, serta jumlah klien MQTT yang terdaftar. Ketika kategori mana pun melebihi ambang batas penskalaan ke atas, lebih banyak TU akan disediakan. Ketika semua kategori berada di bawah ambang penurunan skala, TU dilepas. Masa tunggu di antara proses penskalaan mencegah osilasi yang cepat.

Skala otomatis berguna untuk beban kerja MQTT, di mana penyebaran pesan dan pertumbuhan langganan dapat berubah dengan cepat saat perangkat terhubung dan terputus. Ini juga bermanfaat untuk beban kerja event broker dengan pola lalu lintas yang melonjak-lonjak.

Untuk detail konfigurasi dan batas kapasitas per TU, lihat gambaran umum Autoscale dan panduan.

Topik

Topik menyimpan peristiwa yang telah diterbitkan ke Event Grid. Anda biasanya menggunakan sumber daya topik untuk kumpulan peristiwa terkait. Topik di dalam namespace sering disebut topik namespace.

Topik ruang nama

Topik namespace adalah topik yang dibuat dalam namespace Event Grid. Aplikasi Anda menerbitkan peristiwa ke titik akhir namespace HTTP yang menentukan topik namespace tempat peristiwa yang diterbitkan dimuat secara logis. Saat Anda merancang aplikasi, tentukan berapa banyak topik yang akan dibuat. Untuk solusi yang relatif besar, buat topik namespace untuk setiap kategori kejadian terkait. Misalnya, pertimbangkan aplikasi yang mengelola akun pengguna dan aplikasi lain tentang pesanan pelanggan. Kecil kemungkinan semua pelanggan event menginginkan event dari kedua aplikasi. Untuk memisahkan cakupan, buat dua topik namespace: satu untuk setiap aplikasi. Izinkan konsumen event berlangganan topik sesuai kebutuhan mereka. Untuk solusi kecil, Anda mungkin lebih suka mengirim semua peristiwa ke satu topik.

Topik namespace mendukung pengiriman tarik dan pengiriman dorong. Lihat kapan menggunakan pengiriman pull atau push untuk membantu Anda memutuskan apakah pengiriman pull adalah pendekatan yang tepat berdasarkan kebutuhan Anda.

Langganan acara

Langganan peristiwa adalah sumber daya konfigurasi yang terkait dengan satu topik. Antara lain, gunakan langganan peristiwa untuk mengatur kriteria pemilihan peristiwa guna menentukan kumpulan peristiwa yang tersedia bagi pelanggan dari total kumpulan peristiwa yang tersedia dalam suatu topik. Anda dapat memfilter peristiwa sesuai dengan persyaratan pelanggan. Misalnya, Anda dapat memfilter peristiwa berdasarkan jenis peristiwanya. Anda juga dapat menentukan kriteria filter pada properti data peristiwa jika Anda menggunakan objek JSON sebagai nilai untuk properti data . Untuk informasi selengkapnya tentang properti sumber daya, lihat dokumentasi Event Grid REST API .

Diagram memperlihatkan topik dan langganan peristiwa terkait.

Untuk contoh membuat langganan untuk topik namespace, lihat Menerbitkan dan menggunakan pesan menggunakan topik namespace menggunakan CLI.

Catatan

Langganan peristiwa di bawah topik namespace menampilkan model sumber daya yang disederhanakan jika dibandingkan dengan model yang digunakan untuk topik kustom, domain, mitra, dan sistem (Event Grid Basic). Untuk informasi selengkapnya, lihat Membuat, menampilkan, dan mengelola langganan peristiwa.

Pengiriman penarikan

Dengan pengiriman pull, aplikasi Anda terhubung ke Event Grid untuk membaca pesan menggunakan semantik mirip antrean. Saat aplikasi terhubung ke Event Grid untuk mengonsumsi peristiwa, aplikasi mengontrol tingkat konsumsi peristiwa dan waktu. Aplikasi konsumen juga dapat menggunakan titik akhir privat saat menyambungkan ke Event Grid untuk membaca peristiwa menggunakan ruang IP privat.

Pengiriman tarik mendukung operasi berikut untuk membaca pesan dan mengontrol status pesan: menerima, mengakui, melepaskan, menolak, dan memperbarui kunci. Untuk informasi selengkapnya, lihat gambaran umum pull delivery.

Bentuk data saat menerima peristiwa menggunakan pengiriman pull

Saat Anda mengirimkan peristiwa dengan menggunakan pengiriman pull, Event Grid menyertakan array objek yang pada gilirannya mencakup objek peristiwa dan brokerProperties . Nilai properti event adalah CloudEvent yang dikirim dalam mode konten terstruktur. Objek brokerProperties berisi token kunci yang terkait dengan CloudEvent yang dikirimkan. Objek JSON berikut adalah respons sampel dari operasi penerimaan yang mengembalikan dua peristiwa:

{
    "value": [
        {
            "brokerProperties": {
                "lockToken": "CiYKJDUwNjE4QTFFLUNDODQtNDZBQy1BN0Y4LUE5QkE3NjEwNzQxMxISChDXYS23Z+5Hq754VqQjxywE",
                "deliveryCount": 2
            },
            "event": {
                "specversion": "1.0",
                "id": "A234-1234-1235",
                "source": "/mycontext",
                "time": "2018-04-05T17:31:00Z",
                "type": "com.example.someeventtype",
                "data": "some data"
            }
        },
        {
            "brokerProperties": {
                "lockToken": "CiYKJDUwNjE4QTFFLUNDODQtNDZBQy1BN0Y4LUE5QkE3NjEwNzQxMxISChDLeaL+nRJLNq3/5NXd/T0b",
                "deliveryCount": 1
            },
            "event": {
                "specversion": "1.0",
                "id": "B688-1234-1235",
                "source": "/mycontext",
                "type": "com.example.someeventtype",
                "time": "2018-04-05T17:31:00Z",
                "data": {
                    "somekey" : "value",
                    "someOtherKey" : 9
                }
            }
        }
    ]
}

Pengiriman push

Dengan pengiriman push, Event Grid mengirimkan peristiwa ke tujuan yang dikonfigurasi dalam langganan peristiwa mode pengiriman push. Ini menyediakan logika coba lagi yang kuat jika tujuan tidak dapat menerima peristiwa.

Penting

Pengiriman push namespace Event Grid saat ini mendukung Azure Event Hubs sebagai tujuan pengiriman. Di masa mendatang, namespace Event Grid akan mendukung lebih banyak tujuan, termasuk semua tujuan yang didukung oleh Event Grid Basic.

Pengiriman peristiwa Event Hubs

Event Grid menggunakan Event Hubs SDK untuk mengirim peristiwa ke Azure Event Hubs menggunakan AMQP. Kejadian dikirim sebagai larik byte, dengan setiap elemen dalam larik berisi CloudEvent.

Pendorongan dan penarikan pengiriman

Event Grid mendukung pengiriman kejadian dengan metode push dan pull menggunakan HTTP. Dengan pengiriman push, Anda menentukan tujuan dalam langganan peristiwa, webhook, atau layanan Azure, yang menjadi tujuan Event Grid mengirimkan peristiwa. Dengan pengiriman pull, aplikasi pelanggan terhubung ke Event Grid untuk mengonsumsi kejadian. Pengiriman pull didukung untuk topik dalam namespace Event Grid.

Penting

Event Hubs didukung sebagai tujuan untuk langganan ke topik namespace. Dalam rilis mendatang, Namespace Event Grid akan mendukung semua tujuan yang saat ini tersedia di Event Grid Basic bersama dengan tujuan tambahan.

Diagram tingkat tinggi memperlihatkan pengiriman push dan pengiriman tarik dengan jenis sumber daya yang terlibat.

Kapan menggunakan pengiriman push vs. pengiriman penarikan

Berikut ini adalah panduan umum untuk membantu Anda memutuskan kapan harus menggunakan pengiriman pull atau push.

Pengiriman penarikan

  • Anda memerlukan kontrol penuh kapan harus menerima peristiwa. Misalnya, aplikasi Anda mungkin tidak aktif sepanjang waktu, tidak cukup stabil, atau Anda memproses data pada waktu tertentu.
  • Anda memerlukan kendali penuh atas penanganan peristiwa. Misalnya, layanan atau lapisan hilir di aplikasi konsumen Anda memiliki masalah yang mencegah Anda memproses peristiwa. Dalam hal ini, API pull delivery memungkinkan aplikasi konsumen untuk mengembalikan event yang sudah dibaca ke broker agar dapat dikirimkan lagi nanti.
  • Anda ingin menggunakan private link saat menerima event, yang hanya dimungkinkan dengan metode pull delivery, bukan push delivery.
  • Anda tidak memiliki kemampuan untuk mengekspos endpoint dan menggunakan push delivery, tetapi Anda dapat terhubung ke Event Grid untuk menerima event.

Pengiriman push

  • Anda ingin menghindari polling konstan untuk menentukan bahwa perubahan status sistem telah terjadi. Anda lebih suka menggunakan Event Grid untuk mengirim peristiwa kepada Anda pada saat perubahan status terjadi.
  • Anda memiliki aplikasi yang tidak dapat melakukan panggilan keluar. Misalnya, organisasi Anda mungkin khawatir tentang penyelundupan data. Namun, aplikasi Anda dapat menerima event melalui endpoint publik.