Konsep namespace Layanan Azure Event Grid

Artikel ini memperkenalkan Anda pada konsep utama dan fungsionalitas yang terkait dengan topik namespace.

Acara

Peristiwa adalah jumlah informasi terkecil yang sepenuhnya menjelaskan sesuatu yang terjadi dalam sistem. Kami sering menyebut peristiwa sebagai 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. Peristiwa setiap juga memiliki type, yang biasanya merupakan pengidentifikasi unik yang menjelaskan jenis pengumuman tempat peristiwa digunakan.

Misalnya, kejadian tentang file baru yang sedang dibuat di Azure Storage memiliki detail tentang file, seperti lastTimeModified nilainya. Peristiwa Azure Event Hubs memiliki URL file yang diambil. Peristiwa tentang urutan baru dalam layanan mikro Pesanan Anda mungkin memiliki orderId atribut dan atribut URL ke representasi status pesanan. 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 sebagai "peristiwa" ke pesan yang membawa titik data, seperti satu pembacaan perangkat atau klik pada halaman aplikasi web. Peristiwa semacam itu biasanya dianalisis selama jendela waktu untuk mendapatkan wawasan dan mengambil tindakan. Dalam dokumentasi Event Grid, kami menyebut peristiwa semacam itu sebagai titik data, data streaming, atau hanya sebagai telemetri. Di antara jenis pesan lainnya, peristiwa semacam ini digunakan dengan fitur broker Message Queuing Telemetry Transport (MQTT) Event Grid.

CloudEvents

Topik namespace Layanan Event Grid menerima peristiwa yang mematuhi spesifikasi Cloud Native Computing Foundation (CNCF) CloudEvents 1.0 standar terbuka menggunakan protokol HTTP yang mengikat 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), jenisnya, dll. Semua pesan valid yang mematuhi spesifikasi CloudEvents harus menyertakan atribut konteks yang diperlukan berikut:

Spesifikasi CloudEvents juga menentukan atribut konteks opsional dan ekstensi yang dapat Anda sertakan saat menggunakan Event Grid.

Saat menggunakan Event Grid, CloudEvents adalah format peristiwa pilihan karena kasus penggunaannya yang didokumentasikan dengan baik (mode untuk mentransfer peristiwa, format peristiwa, dll.), ekstensibilitas, dan peningkatan interoperabilitas. CloudEvents meningkatkan interoperabilitas dengan menyediakan format peristiwa umum untuk menerbitkan dan menggunakan peristiwa. Ini memungkinkan alat seragam dan cara standar perutean & penanganan peristiwa.

CloudEvents con mode tenda s

Spesifikasi CloudEvents mendefinisikan tiga con mode tenda s: biner, terstruktur, dan batch.

Penting

Dengan con apa pun mode tenda Anda dapat bertukar teks (JSON, teks/*, dll.) atau data peristiwa yang dikodekan biner. Biner con mode tenda tidak secara eksklusif digunakan untuk mengirim data biner.

Con mode tenda s bukan tentang pengodean yang Anda gunakan, biner, atau teks, tetapi tentang bagaimana data peristiwa dan metadatanya dijelaskan dan ditukar. Con terstruktur mode tenda menggunakan satu struktur, misalnya, objek JSON, di mana atribut konteks dan data peristiwa bersama-sama dalam payload HTTP. Biner con mode tenda memisahkan atribut konteks, yang dipetakan ke header HTTP, dan data peristiwa, yang merupakan payload HTTP yang dikodekan sesuai dengan jenis media yang diatur dalam Content-Type.

Dukungan CloudEvents

Tabel ini memperlihatkan dukungan saat ini untuk spesifikasi CloudEvents:

CloudEvents con mode tenda Didukung?
JSON terstruktur Ya
JSON terstruktur di-batch Ya, untuk menerbitkan peristiwa
Biner Ya, untuk menerbitkan peristiwa

Ukuran maksimum yang diperbolehkan untuk suatu acara adalah 1 MB. Peristiwa di atas 64 KB dikenakan biaya dengan 64 KB tahapan.

Con terstruktur mode tenda

Pesan di cloudEvents terstruktur con mode tenda memiliki atribut konteks dan data peristiwa bersama-sama dalam payload HTTP.

Penting

Saat ini, Event Grid mendukung format CloudEvents JSON dengan HTTP.

Berikut adalah contoh CloudEvents dalam mode terstruktur menggunakan format JSON. Kedua metadata (semua atribut yang bukan "data") dan data pesan/peristiwa (objek "data") dijelaskan menggunakan JSON. Contoh kami mencakup semua atribut konteks yang diperlukan bersama dengan beberapa atribut opsional (subject, , timedan datacontenttype) dan atribut ekstensi (comexampleextension1, comexampleothervalue).

{
    "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"
    }
}

Anda dapat menggunakan format JSON dengan konten terstruktur untuk mengirim data peristiwa yang bukan nilai JSON. Untuk itu, Anda melakukan langkah-langkah berikut:

  1. datacontenttype Sertakan atribut dengan jenis media tempat data dikodekan.
  2. Jika jenis media dikodekan dalam format teks seperti text/plain, , text/csvatau application/xml, Anda harus menggunakan data atribut dengan string JSON yang berisi apa yang Anda komunikasikan sebagai nilai.
  3. Jika jenis media mewakili pengodean biner, Anda harus menggunakan data_base64 atribut yang nilainya adalah string JSON yang berisi nilai biner yang dikodekan BASE64 .

Misalnya, CloudEvent ini membawa data peristiwa yang dikodekan application/protobuf untuk bertukar pesan Protobuf.

{
    "specversion" : "1.0",
    "type" : "com.yourcompany.order.created",
    "source" : "/orders/account/123",
    "id" : "A234-1234-1234",
    "time" : "2018-04-05T17:31:00Z",
    "datacontenttype" : "application/protobuf",
    "data_base64" : "VGhpcyBpcyBub3QgZW5jb2RlZCBpbiBwcm90b2J1ZmYgYnV0IGZvciBpbGx1c3RyYXRpb24gcHVycG9zZXMsIGltYWdpbmUgdGhhdCBpdCBpcyA6KQ=="
}

Untuk informasi selengkapnya tentang penggunaan data atribut atau data_base64 , lihat Penanganan data .

Untuk informasi selengkapnya tentang con ini mode tenda, lihat spesifikasi kon terstruktur HTTP CloudEvents mode tenda .

Con batched mode tenda

Event Grid saat ini mendukung con batch JSON mode tenda saat menerbitkan CloudEvents ke Event Grid. Con ini mode tenda menggunakan array JSON yang diisi dengan CloudEvents dalam con terstruktur mode tenda. Misalnya, aplikasi Anda dapat menerbitkan dua peristiwa menggunakan array seperti berikut ini. Demikian juga, jika Anda menggunakan SDK sarana data Event Grid, payload ini juga yang sedang dikirim:

[
    {
        "specversion": "1.0",
        "id": "E921-1234-1235",
        "source": "/mycontext",
        "type": "com.example.someeventtype",
        "time": "2018-04-05T17:31:00Z",
        "data": "some data"
    },
    {
        "specversion": "1.0",
        "id": "F555-1234-1235",
        "source": "/mycontext",
        "type": "com.example.someeventtype",
        "time": "2018-04-05T17:31:00Z",
        "data": {
            "somekey" : "value",
            "someOtherKey" : 9
        }
    }
]

Untuk informasi selengkapnya, lihat Spesifikasi Mode Konten Batch cloudEvents.

Pembuatan batch

Aplikasi Anda harus mengumpulkan beberapa peristiwa bersama-sama dalam array untuk mencapai efisiensi yang lebih besar dan throughput yang lebih tinggi dengan satu permintaan penerbitan. Batch bisa hingga 1 MB dan ukuran maksimum suatu peristiwa adalah 1 MB.

Biner con mode tenda

CloudEvent dalam biner con mode tenda memiliki atribut konteks yang dijelaskan sebagai header HTTP. Nama header HTTP adalah nama atribut konteks yang diawali dengan ce-. Header Content-Type mencerminkan jenis media tempat data peristiwa dikodekan.

Penting

Saat menggunakan biner con mode tenda ce-datacontenttype header HTTP TIDAK BOLEH juga ada.

Penting

Jika Anda berencana untuk menyertakan atribut Anda sendiri (yaitu atribut ekstensi) saat menggunakan biner con mode tenda, pastikan bahwa namanya terdiri dari huruf kecil ('a' hingga 'z') atau digit ('0' hingga '9') dari karakter ASCII dan panjangnya tidak melebihi 20 karakter. Artinya, konvensi penamaan untuk penamaan atribut konteks CloudEvents lebih ketat daripada nama header HTTP yang valid. Tidak setiap nama header HTTP yang valid adalah nama atribut ekstensi yang valid.

Payload HTTP adalah data peristiwa yang dikodekan sesuai dengan jenis media di Content-Type.

Permintaan HTTP yang digunakan untuk menerbitkan CloudEvent dalam mode biner konten dapat terlihat seperti contoh ini:

POST / HTTP/1.1
HOST mynamespace.eastus-1.eventgrid.azure.net/topics/mytopic
ce-specversion: 1.0
ce-type: com.example.someevent
ce-source: /mycontext
ce-id: A234-1234-1234
ce-time: 2018-04-05T17:31:00Z
ce-comexampleextension1: value
ce-comexampleothervalue: 5
content-type: application/protobuf

Binary data according to protobuf encoding format. No context attributes are included.

Kapan menggunakan biner CloudEvents atau con terstruktur mode tenda

Anda dapat menggunakan con terstruktur mode tenda jika Anda menginginkan pendekatan sederhana untuk meneruskan CloudEvents di seluruh hop dan protokol. Karena CloudEvent dalam con terstruktur mode tenda berisi pesan bersama dengan metadatanya, mudah bagi klien untuk menggunakannya secara keseluruhan dan meneruskannya ke sistem lain.

Anda dapat menggunakan biner con mode tenda jika Anda tahu aplikasi hilir hanya memerlukan pesan tanpa informasi tambahan (yaitu, atribut konteks). Meskipun dengan con terstruktur mode tenda Anda masih bisa mendapatkan data peristiwa (pesan) dari CloudEvent, lebih mudah jika aplikasi konsumen hanya memilikinya di payload HTTP. Misalnya, aplikasi lain dapat menggunakan protokol lain dan mungkin hanya tertarik pada pesan inti Anda, bukan metadatanya. Bahkan, metadata bisa relevan hanya untuk hop pertama segera. Dalam hal ini, memiliki data yang ingin Anda tukarkan dari metadatanya meminjamkan dirinya sendiri ke penanganan dan penerusan yang lebih mudah.

Penerbit

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

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 layanan, sumber peristiwa yang didukung adalah aplikasi Anda sendiri.

Namaspace

Namespace Layanan Event Grid adalah kontainer manajemen untuk sumber daya berikut:

Sumber daya Protokol yang didukung
Topik namespace HTTP
Spasi Topik MQTT
Klien MQTT
Grup Klien MQTT
Sertifikat CA MQTT
Pengikatan izin MQTT

Dengan namespace Azure Event Grid, Anda dapat mengelompokkan sumber daya terkait dan mengelolanya sebagai satu unit di 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 olahpesan umum menggunakan topik namespace.
  • Titik akhir MQTT untuk Olahpesan IoT atau solusi yang menggunakan MQTT.

Namespace layanan juga menyediakan titik akhir jaringan terintegrasi DNS. Ini juga menyediakan berbagai kontrol akses dan fitur manajemen integrasi jaringan seperti pemfilteran masuk IP publik dan tautan privat. Ini juga kontainer identitas terkelola yang digunakan untuk sumber daya yang terkandung di namespace layanan.

Berikut adalah beberapa poin lagi tentang namespace layanan:

  • Namespace adalah sumber daya terlacak dengan tags properti dan location , dan setelah dibuat, itu dapat ditemukan di resources.azure.com.
  • Nama namespace dapat memiliki panjang 3-50 karakter. Ini dapat mencakup alfanumerik, dan tanda hubung(-), dan tanpa spasi.
  • Nama harus unik per wilayah.
  • Wilayah yang didukung saat ini: AS Tengah, Asia Timur, AS Timur, US Timur 2, Eropa Utara, AS Tengah Selatan, Asia Tenggara, UAE Utara, Eropa Barat, US Barat 2, AS Barat 3.

Unit throughput

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

Topik

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

Topik namespace

Topik namespace adalah topik yang dibuat dalam namespace Layanan Event Grid. Aplikasi Anda menerbitkan peristiwa ke titik akhir namespace HTTP yang menentukan topik namespace tempat peristiwa yang diterbitkan dimuat secara logis. Saat merancang aplikasi, Anda harus memutuskan berapa banyak topik yang akan dibuat. Untuk solusi yang relatif besar, buat topik namespace layanan untuk setiap kategori peristiwa terkait. Misalnya, pertimbangkan aplikasi yang mengelola akun pengguna dan aplikasi lain tentang pesanan pelanggan. Tidak mungkin semua pelanggan peristiwa menginginkan peristiwa dari kedua aplikasi. Untuk memisahkan masalah, buat dua topik namespace layanan: satu untuk setiap aplikasi. Biarkan konsumen peristiwa berlangganan topik sesuai dengan persyaratan mereka. Untuk solusi kecil, Anda mungkin lebih suka mengirim semua peristiwa ke satu topik.

Topik namespace mendukung pengiriman penarikan dan pengiriman push. Lihat kapan menggunakan pengiriman penarikan atau pendorongan untuk membantu Anda memutuskan apakah pengiriman penarikan adalah pendekatan yang tepat mengingat kebutuhan Anda.

Langganan acara

Langganan peristiwa adalah sumber daya konfigurasi yang terkait dengan satu topik. Antara lain, Anda menggunakan langganan peristiwa untuk mengatur kriteria pemilihan peristiwa untuk menentukan koleksi peristiwa yang tersedia untuk pelanggan dari kumpulan total peristiwa yang tersedia dalam 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 menggunakan objek JSON sebagai nilai untuk properti data . Untuk informasi selengkapnya tentang properti sumber daya, cari operasi sarana kontrol di 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 fitur model sumber daya yang disederhanakan jika dibandingkan dengan 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 tarik, aplikasi Anda terhubung ke Event Grid untuk membaca pesan menggunakan semantik seperti antrean. Saat aplikasi terhubung ke Event Grid untuk mengonsumsi peristiwa, aplikasi tersebut memegang kendali atas tingkat konsumsi peristiwa dan waktunya. 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 pengiriman penarikan.

Bentuk data saat menerima peristiwa menggunakan pengiriman pull

Saat mengirimkan peristiwa menggunakan pengiriman pull, Event Grid menyertakan array objek yang pada gilirannya mencakup objek peristiwa dan brokerProperties . Nilai properti peristiwa adalah CloudEvent yang dikirimkan dalam con terstruktur mode tenda. 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 push (mode pengiriman dalam). Ini menyediakan logika coba lagi yang kuat jika tujuan tidak dapat menerima peristiwa.

Penting

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

Pengiriman peristiwa Azure Event Hubs

Event Grid menggunakan Event Hubs SDK untuk mengirim peristiwa ke Azure Event Hubs menggunakan AMQP. Peristiwa dikirim sebagai array byte dengan setiap elemen dalam array yang berisi CloudEvent.

Pendorongan dan penarikan pengiriman

Event Grid mendukung pengiriman peristiwa pendorongan dan penarikan menggunakan HTTP. Dengan pengiriman push, Anda menentukan tujuan dalam langganan peristiwa, webhook, atau layanan Azure, tempat Event Grid mengirim peristiwa. Dengan pengiriman pull, aplikasi pelanggan terhubung ke Event Grid untuk mengonsumsi peristiwa. Pengiriman penarikan didukung untuk topik di namespace Layanan Event Grid.

Penting

Azure Event Hubs didukung sebagai tujuan langganan ke topik namespace layanan. 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 kontrol penuh atas konsumsi peristiwa. Misalnya, layanan atau lapisan hilir di aplikasi konsumen Anda memiliki masalah yang mencegah Anda memproses peristiwa. Dalam hal ini, API pengiriman penarikan memungkinkan aplikasi konsumen untuk merilis peristiwa yang sudah dibaca kembali ke broker sehingga dapat dikirimkan nanti.
  • Anda ingin menggunakan tautan privat saat menerima peristiwa, yang hanya dimungkinkan dengan pengiriman pull, bukan pengiriman push.
  • Anda tidak memiliki kemampuan untuk mengekspos titik akhir dan menggunakan pengiriman push, tetapi Anda dapat terhubung ke Event Grid untuk menggunakan peristiwa.

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 peristiwa melalui titik akhir publik.

Langkah berikutnya