Aracılığıyla paylaş


Azure Event Grid ad alanı kavramları

Bu makalede, ad alanı konularıyla ilişkili ana kavramlar ve işlevler açıklanır.

Ekinlikler

Olay, bir sistemde gerçekleşen bir şeyi tam olarak açıklayan en küçük bilgi miktarıdır. Eyleme dönüştürülebilir bir içgörü sağlayan sistemle ilgili ayrı, kendi kendine çalışan bir gerçeği temsil ettiğinden genellikle olayı ayrı bir olay olarak adlandırıyoruz. Her olay, olay, time olay gerçekleşti ve benzersiz bir tanımlayıcı gibi source ortak bilgilere sahiptir. Her olay, genellikle olayın kullanıldığı duyuru türünü açıklayan benzersiz bir tanımlayıcı olan bir typeöğesine de sahiptir.

Örneğin, Azure Depolama'da oluşturulan yeni dosya hakkındaki olayda dosyayla ilgili lastTimeModified değeri gibi ayrıntılar vardır. Event Hubs olayı, yakalanan dosyanın URL'sine sahiptir. Siparişler mikro hizmetinizdeki yeni bir siparişle ilgili bir olayın, siparişin durum gösterimine yönelik bir orderId özniteliği ve URL özniteliği olabilir. Olay türlerine birkaç örnek daha şunlardır: com.yourcompany.Orders.OrderCreated, org.yourorg.GeneralLedger.AccountChanged, io.solutionname.Auth.MaximumNumberOfUserLoginAttemptsReached.

Aşağıda örnek bir olay verilmişti:

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

Başka bir tür olay

Kullanıcı topluluğu, tek bir cihaz okuması veya bir web uygulaması sayfasına tıklama gibi bir veri noktası taşıyan iletilere "olaylar" olarak da adlandırılır. Bu tür olaylar genellikle içgörüler elde etmek ve bir eylem gerçekleştirmek için zaman penceresinde analiz edilir. Event Grid'in belgelerinde bu tür bir olayı veri noktası, akış verileri veya yalnızca telemetri olarak adlandırıyoruz. Diğer ileti türlerinin yanında bu tür olaylar Event Grid'in Message Queuing Telemetri Aktarımı (MQTT) aracı özelliğiyle birlikte kullanılır.

CloudEvents

Event Grid ad alanı konuları, JSON biçiminde HTTP protokol bağlamasınıkullanarak Cloud Native Computing Foundation'ın (CNCF) açık standart CloudEvents 1.0 belirtimine uygun olayları kabul eder. CloudEvent, iletileneni içeren, olay verileri olarak adlandırılan ve bununla ilgili meta veriler içeren bir ileti türüdür. Olay temelli mimarilerdeki olay verileri genellikle sistem durumu değişikliği duyurulan bilgileri taşır. CloudEvents meta verileri, iletinin kaynağı (kaynak sistem), türü vb. gibi bağlamsal bilgiler sağlayan bir öznitelik kümesinden oluşur. CloudEvents belirtimlerine uygun tüm geçerli iletiler aşağıdaki gerekli bağlam özniteliklerini içermelidir:

CloudEvents belirtimi, Event Grid kullanırken ekleyebileceğiniz isteğe bağlı ve uzantı bağlamı özniteliklerini de tanımlar.

CloudEvents, Event Grid kullanırken iyi belgelenmiş kullanım örnekleri (olayları aktarma modları , olay biçimleri vb.), genişletilebilirlik ve geliştirilmiş birlikte çalışabilirlik nedeniyle tercih edilen olay biçimidir. CloudEvents, olayları yayımlamak ve kullanmak için ortak bir olay biçimi sağlayarak birlikte çalışabilirliği geliştirir. Tekdüzen araçlara ve olayları yönlendirmenin ve işlemenin standart yollarını sağlar.

CloudEvents con çadır modu s

CloudEvents belirtimi üç çadır modu tanımlar: ikili, yapılandırılmış ve toplu.

Önemli

Herhangi bir eksiyle çadır modu metin (JSON, metin/*, vb.) veya ikili kodlanmış olay verilerini değiştirebilirsiniz. İkili con çadır modu yalnızca ikili veri göndermek için kullanılmaz.

Con çadır modu s, kullandığınız kodlama, ikili veya metinle değil, olay verilerinin ve meta verilerinin nasıl tanımlandığı ve değiştirildiğinden söz eder. Yapılandırılmış con çadır modu tek bir yapı kullanır; örneğin, bağlam özniteliklerinin ve olay verilerinin HTTP yükünde bir araya geldiği bir JSON nesnesi. İkili con çadır modu, HTTP üst bilgilerine eşlenen bağlam özniteliklerini ve içinde ayarlanan Content-Typemedya türüne göre kodlanmış HTTP yükü olan olay verilerini ayırır.

CloudEvents desteği

Bu tabloda CloudEvents belirtimi için geçerli destek gösterilmektedir:

CloudEvents con çadır modu Destekleniyor mu?
Yapılandırılmış JSON Yes
Yapılandırılmış JSON toplu iş Evet, olayları yayımlamak için
Ikili Evet, olayları yayımlamak için

Bir olay için izin verilen boyut üst sınırı 1 MB'tır. 64 KB üzerindeki olaylar 64 KB'lık artışlarla ücretlendirilir.

Yapılandırılmış con çadır modu

CloudEvents yapılandırılmış con çadır modu içindeki bir ileti, http yükünde hem bağlam özniteliklerine hem de olay verilerine sahiptir.

Önemli

Event Grid şu anda CLOUDEvents JSON biçimini HTTP ile destekler.

Aşağıda, JSON biçimini kullanan yapılandırılmış modda CloudEvents örneği verilmiştir. Hem meta veriler ("veri" olmayan tüm öznitelikler) hem de ileti/olay verileri ("veri" nesnesi) JSON kullanılarak açıklanmıştır. Örneğimiz tüm gerekli bağlam özniteliklerinin yanı sıra bazı isteğe bağlı öznitelikleri (subject, timeve datacontenttype) ve uzantı özniteliklerini (comexampleextension1, comexampleothervalue) içerir.

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

JSON değeri olmayan olay verilerini göndermek için yapılandırılmış içerikle JSON biçimini kullanabilirsiniz. Bu amaçla aşağıdaki adımları uygulayın:

  1. Verilerin kodlandığı medya türüne sahip bir datacontenttype öznitelik ekleyin.
  2. Medya türü , text/csvveya application/xmlgibi text/plainbir metin biçiminde kodlanmışsa, değer olarak ilettiğiniz içeriği içeren bir JSON dizesine sahip bir data öznitelik kullanmalısınız.
  3. Medya türü bir ikili kodlamayı temsil ediyorsa, değeri BASE64 kodlanmış ikili değerini içeren bir JSON dizesi olan bir öznitelik kullanmalısınızdata_base64.

Örneğin, bu CloudEvent, Protobuf iletilerini değiştirmek için içinde application/protobuf kodlanmış olay verilerini taşır.

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

veya data_base64 özniteliklerinin data kullanımı hakkında daha fazla bilgi için bkz. Verilerin işlenmesi.

Bu con çadır modu hakkında daha fazla bilgi için bkz. CloudEvents HTTP yapılandırılmış con çadır modu belirtimleri .

Toplu con çadır modu

Event Grid şu anda CloudEvents'i Event Grid'de yayımlarkenJSON toplu con çadır modu destekler. Bu con çadır modu yapılandırılmış con çadır modu içinde CloudEvents ile dolu bir JSON dizisi kullanır. Örneğin, uygulamanız aşağıdaki gibi bir dizi kullanarak iki olay yayımlayabilir. Benzer şekilde, Event Grid'in veri düzlemi SDK'sını kullanıyorsanız, bu yük de gönderilen yük olur:

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

Daha fazla bilgi için bkz. CloudEvents Toplu İçerik Modu belirtimleri.

İşlem grubu oluşturma

Uygulamanızın tek bir yayımlama isteğiyle daha fazla verimlilik ve daha yüksek aktarım hızı elde etmek için bir dizide birkaç olayı birlikte toplu olarak işlemesi gerekir. Toplu işlemler 1 MB'a kadar olabilir ve bir olayın boyutu üst sınırı 1 MB'tır.

İkili con çadır modu

İkili con çadır modu içindeki CloudEvent'in bağlam öznitelikleri HTTP üst bilgileri olarak tanımlanır. HTTP üst bilgilerinin adları, ön ekli ce-bağlam özniteliğinin adıdır. Üst bilgi, Content-Type olay verilerinin kodlandığı medya türünü yansıtır.

Önemli

İkili con kullanılırken çadır modu ce-datacontenttype HTTP üst bilgisi de BULUNMAMALIDIR.

Önemli

İkili con çadır modu kullanırken kendi özniteliklerinizi (uzantı öznitelikleri) eklemeyi planlıyorsanız, adlarının ASCII karakterinden küçük harflerden ('a' 'z') veya rakamlardan ('0' ile '9' arasında) oluştuğundan ve 20 karakteri aşmadığından emin olun. Diğer bir ifadeyle, CloudEvents bağlam özniteliklerini adlandırmaya yönelik adlandırma kuralı geçerli HTTP üst bilgi adlarından daha kısıtlayıcıdır. Her geçerli HTTP üst bilgi adı geçerli bir uzantı öznitelik adı değildir.

HTTP yükü, içindeki medya türüne Content-Typegöre kodlanmış olay verileridir.

CloudEvent'i içerik ikili modunda yayımlamak için kullanılan http isteği şu örneğe benzer olabilir:

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.

CloudEvents ikili veya yapılandırılmış con ne zaman kullanılır çadır modu

CloudEvents'i atlamalar ve protokoller arasında iletmek için basit bir yaklaşım istiyorsanız yapılandırılmış con çadır modu kullanabilirsiniz. Yapılandırılmış con'da CloudEvent çadır modu iletiyi meta verileriyle birlikte içerdiğinden, istemcilerin bunu bir bütün olarak kullanmaları ve diğer sistemlere iletmeleri kolaydır.

Aşağı akış uygulamalarının ek bilgi olmadan yalnızca iletiye (bağlam öznitelikleri) ihtiyaç duymasını biliyorsanız ikili con çadır modu kullanabilirsiniz. Yapılandırılmış con ile çadır modu cloudEvent'den olay verilerini (ileti) almaya devam edebilirsiniz ancak tüketici uygulamasının yalnızca HTTP yükünde olması daha kolaydır. Örneğin, diğer uygulamalar diğer protokolleri kullanabilir ve meta verileriyle değil yalnızca temel iletinizle ilgilenebilir. Aslında meta veriler yalnızca ilk atlama için uygun olabilir. Bu durumda, meta verilerinden farklı olarak değiştirmek istediğiniz verilerin olması, daha kolay işleme ve iletmeye yardımcı olur.

Yayımcılar

Yayımcı, Event Grid'e olay gönderen uygulamadır. Olayların kaynağı olan olay kaynağıyla aynı uygulama olabilir. Ad alanı konularını kullanırken kendi uygulamanızdan olayları yayımlayabilirsiniz.

Olay kaynakları

Olay kaynağı, olayın gerçekleştiği yerdir. Her olay kaynağı bir veya daha fazla olay türünü destekler. Örneğin, uygulamanız sisteminizin tanımladığı özel olaylar için olay kaynağıdır. Ad alanı konularını kullanırken desteklenen olay kaynakları kendi uygulamalarınızdır.

Ad alanları

Event Grid ad alanı, aşağıdaki kaynaklar için bir yönetim kapsayıcısıdır:

Kaynak Desteklenen protokol
Ad alanı konuları HTTP
Konu Alanları MQTT
Müşteriler MQTT
İstemci Grupları MQTT
CA Sertifikaları MQTT
İzin bağlamaları MQTT

Azure Event Grid ad alanıyla ilgili kaynakları gruplandırabilir ve Bunları Azure aboneliğinizde tek bir birim olarak yönetebilirsiniz. Size benzersiz bir tam etki alanı adı (FQDN) verir.

Ad Alanı iki uç noktayı kullanıma sunar:

  • Ad alanı konularını kullanarak genel mesajlaşma gereksinimlerini destekleyen bir HTTP uç noktası.
  • IoT mesajlaşması veya MQTT kullanan çözümler için bir MQTT uç noktası.

Ad alanı, DNS ile tümleşik ağ uç noktaları da sağlar. Ayrıca genel IP girişi filtreleme ve özel bağlantılar gibi bir dizi erişim denetimi ve ağ tümleştirme yönetimi özelliği sağlar. Ayrıca, ad alanında kapsanan kaynaklar için kullanılan yönetilen kimliklerin kapsayıcısıdır.

Ad alanları hakkında birkaç nokta daha aşağıdadır:

  • Ad alanı ve location özelliklerine sahip tags izlenen bir kaynaktır ve oluşturulduktan sonra üzerinde resources.azure.combulunabilir.
  • Ad alanının adı 3-50 karakter uzunluğunda olabilir. Alfasayısal ve kısa çizgi (-) içerebilir ve boşluk içermez.
  • Adın bölge başına benzersiz olması gerekir.

İşleme birimleri

Aktarım hızı birimleri (TU) ad alanları içindeki giriş ve çıkış olay hızı kapasitesini tanımlar. Daha fazla bilgi için bkz . Azure Event Grid kotaları ve sınırları.

Konu başlıkları

Konu başlığında Event Grid'de yayımlanan olaylar yer alır. Genellikle ilgili olaylar koleksiyonu için bir konu kaynağı kullanırsınız. Ad alanı içindeki konulara genellikle ad alanı konuları olarak değindik.

Ad alanı konuları

Ad alanı konuları, Event Grid ad alanı içinde oluşturulan konulardır. Uygulamanız, yayımlanan olayların mantıksal olarak yer aldığı bir ad alanı konusu belirten bir HTTP ad alanı uç noktasında olayları yayımlar. Uygulamanızı tasarlarken, kaç konu başlığı oluşturacağınız konusunda karar vermeniz gerekir. Nispeten büyük çözümler için, ilgili olayların her kategorisi için bir ad alanı konusu oluşturun. Örneğin, kullanıcı hesaplarını yöneten bir uygulamayı ve müşteri siparişleri hakkında başka bir uygulamayı düşünün. Tüm olay abonelerinin her iki uygulamadan da olay isteme olasılığı düşüktür. Endişeleri ayrıştırmak için iki ad alanı konusu oluşturun: her uygulama için bir ad alanı. Olay tüketicilerinin gereksinimlerine göre konuya abone olmasına izin verin. Küçük çözümler için tüm olayları tek bir konuya göndermeyi tercih edebilirsiniz.

Ad alanı konuları çekme teslimi ve anında iletme teslimi destekler. Gereksinimleriniz doğrultusunda çekme tesliminin doğru yaklaşım olup olmadığını belirlemenize yardımcı olması için çekme veya gönderme tesliminin ne zaman kullanılacağına bakın.

Olay abonelikleri

Olay aboneliği, tek bir konu başlığıyla ilişkilendirilmiş bir yapılandırma kaynağıdır. Diğer şeylerin yanı üzere, bir konu başlığında bulunan toplam olay kümesi dışında abonenin kullanabileceği olay koleksiyonunu tanımlamak üzere olay seçim ölçütlerini ayarlamak için bir olay aboneliği kullanırsınız. Olayları abonenin gereksinimlerine göre filtreleyebilirsiniz. Örneğin, olayları olay türlerine göre filtreleyebilirsiniz. Ayrıca, veri özelliğinin değeri olarak bir JSON nesnesi kullanıyorsanız olay veri özelliklerinde filtre ölçütleri tanımlayabilirsiniz. Kaynak özellikleri hakkında daha fazla bilgi için Event Grid REST API'sinde denetim düzlemi işlemlerini arayın.

Konu başlığını ve ilişkili olay aboneliklerini gösteren diyagram.

Ad alanı konuları için abonelik oluşturma örneği için bkz . CLI kullanarak ad alanı konularını kullanarak iletileri yayımlama ve kullanma.

Not

Ad alanı konu başlığı altındaki olay abonelikleri, özel, etki alanı, iş ortağı ve sistem konuları (Event Grid Basic) için kullanılanla karşılaştırıldığında basitleştirilmiş bir kaynak modeli içerir. Daha fazla bilgi için bkz. Olay abonelikleri oluşturma, görüntüleme ve yönetme.

Çekme teslimi

Çekme teslimi ile uygulamanız, kuyruk benzeri semantiği kullanarak iletileri okumak için Event Grid'e bağlanır. Uygulamalar olayları kullanmak için Event Grid'e bağlandıkça, olay tüketim oranı ve zamanlaması onlar tarafından denetlenir. Tüketici uygulamaları, özel IP alanı kullanarak olayları okumak için Event Grid'e bağlanırken özel uç noktaları da kullanabilir.

Çekme teslimi, iletileri okumak ve ileti durumunu denetlemek için aşağıdaki işlemleri destekler: alma, onaylama, bırakma, reddetme ve kilidi yenileme. Daha fazla bilgi için bkz . Çekme teslimlerine genel bakış.

Çekme teslimi kullanılarak olaylar alınırken veri şekli

Event Grid, çekme teslimi kullanarak olayları teslim ederken olay ve brokerProperties nesnelerini içeren bir nesne dizisi içerir. Olay özelliğinin değeri, yapılandırılmış con çadır modu olarak sunulan CloudEvent değeridir. brokerProperties nesnesi, teslim edilen CloudEvent ile ilişkili kilit belirtecini içerir. Aşağıdaki json nesnesi, iki olay döndüren bir alma işleminden alınan örnek bir yanıttır:

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

Anında iletme teslimi

Event Grid, anında iletme teslimi ile olayları anında iletme (teslim modunda) olay aboneliğinde yapılandırılmış bir hedefe gönderir. Hedefin olayları alamaması durumunda sağlam bir yeniden deneme mantığı sağlar.

Önemli

Event Grid ad alanlarının anında iletme teslimi şu anda hedef olarak Azure Event Hubs'ı desteklemektedir. Gelecekte Event Grid ad alanları, Event Grid Basic tarafından desteklenen tüm hedefler de dahil olmak üzere daha fazla hedefi destekleyecektir.

Event Hubs olay teslimi

Event Grid, AMQP kullanarak Event Hubs'a olay göndermek için Event Hubs SDK'sını kullanır. Olaylar, dizideki her öğe cloudEvent içeren bir bayt dizisi olarak gönderilir.

Gönderme ve çekme teslimi

Event Grid, HTTP kullanarak gönderme ve çekme olayı teslimi destekler. Anında iletme ile event grid'in olayları gönderdiği bir olay aboneliğinde, web kancasında veya Azure hizmetinde bir hedef tanımlarsınız. Çekme teslimi ile abone uygulamaları olayları kullanmak için Event Grid'e bağlanır. Çekme teslimi, Event Grid ad alanındaki konular için desteklenir.

Önemli

Event Hubs, ad alanı konularına yönelik abonelikler için bir hedef olarak desteklenir. Gelecek sürümlerde Event Grid Ad Alanları, Event Grid Basic'te mevcut olan tüm hedefleri ve ek hedefleri destekleyecektir.

İlgili kaynak türlerini içeren gönderim teslimi ve çekme teslimini gösteren üst düzey diyagram.

Gönderme teslimi ve çekme teslimi ne zaman kullanılır?

Çekme veya gönderme teslimini ne zaman kullanacağınıza karar vermenize yardımcı olacak genel yönergeler aşağıdadır.

Çekme teslimi

  • Olayları ne zaman alacağınız ile ilgili tam denetime ihtiyacınız vardır. Örneğin, uygulamanız her zaman çalışır durumda olmayabilir, yeterince kararlı olmayabilir veya verileri belirli zamanlarda işleyebilirsiniz.
  • Olay tüketimi üzerinde tam denetime sahip olmanız gerekir. Örneğin, tüketici uygulamanızdaki bir aşağı akış hizmeti veya katmanında olayları işlemenizi engelleyen bir sorun vardır. Bu durumda, çekme teslim API'si tüketici uygulamasının daha sonra teslim edilebilmesi için zaten okunan bir olayı aracıya geri göndermesine olanak tanır.
  • Olayları alırken özel bağlantılar kullanmak istiyorsunuz. Bu, gönderme teslimiyle değil yalnızca çekme teslimiyle mümkündür.
  • Bir uç noktayı kullanıma sunma ve anında iletme teslimini kullanma olanağınız yoktur, ancak olayları kullanmak için Event Grid'e bağlanabilirsiniz.

Anında iletme teslimi

  • Sistem durumu değişikliğinin oluştuğuna karar vermek için sürekli yoklama yapmaktan kaçınmak istiyorsunuz. Durum değişiklikleri gerçekleştiğinde olayları size göndermek için Event Grid'i kullanmayı tercih edebilirsiniz.
  • Giden çağrı yapabilen bir uygulamanız var. Örneğin, kuruluşunuz veri sızdırma konusunda endişeli olabilir. Ancak, uygulamanız olayları genel uç nokta üzerinden alabilir.

Sonraki adımlar