Wir verwenden die EventHubSender.Send- und EventHubSender.SendBatch-API-Methoden zum Senden von Datenpaketen auf Azure Event Hub. Jedes Datenpaket hat typischerweise eine Größe von 6 KB und es gibt 13 derartige Datenpakete jede Sekunde von 13 verschiedenen Client-Rechnern (jede Maschine sendet pro Sekunde ein Datenpaket). Wir haben zwei Ereignis-Hubs in einem einzigen Namespace mit jeweils [6 KB * 13] Paketen als Ingress und Egress. Da der gesamte Ein- und Ausgang viel niedriger ist als die Kapazität einer Durchsatzeinheit, wird keine Drosselung beobachtet.Inkonsistente Send- und SendBatch-Latenz für den Ereignishub-Sender
Die Sendelatenz bleibt jedoch für Pakete, die jede Sekunde gesendet werden, nicht konsistent. Manchmal dauert die Sende-Latenz 3 bis 4 Sekunden. Dieses Verhalten wurde sowohl für lokale Clientcomputer als auch für Clientcomputer im Azure-Rechenzentrum getestet (nur zu Testzwecken).
Client-Initialisierung Code-Schnipsel:
var factory = MessagingFactory.CreateFromConnectionString(EventHubConnectionString);
EventHubClient eventHubClient = this.factory.CreateEventHubClient(EventHubName);
this.eventHubSender = eventHubClient.CreatePartitionedSender(EventHubPartitionId);
Der Absender Code-Schnipsel:
using (EventData eventData = CreateEventDataPacket(data, settings))
{
this.eventHubSender.Send(eventData);
}
Bitte beachten Sie: Die eventHubSender Instanz wird für jeden weiteren Sendeauftrag wiederverwendet werden und die Art Transport in EventHubConnectionString verwendet wird AMQP.
Bitte schlagen Sie vor, ob die Latenz für Send- und SendBatch-Methoden reduziert und konsistent gemacht werden kann.
müssen wir die Reihenfolge der Ereignisse halten, wie die statistische Analyse durchgeführt wird, sobald sie das Ereignis Hub erreichen. Daher können wir den Round-Robin-Ansatz der Partition nicht verwenden, da er die Pakete an eine andere Partition sendet und es daher schwierig macht, die Reihenfolge der Pakete zu verwalten. – bussa
Ich glaube jedoch, dass ich SendAsync oder SendBatchAsycn anstelle von Synchronisierungsversionen verwenden kann, um den Durchsatz zu erhöhen, da sie eine interne Warteschlange aufrechterhalten, bevor die Pakete an den Ereignishub übergeben werden. ref: [link] (https://azure.microsoft.com/de-de/documentation/videos/managing-large-ounts-of-data-threutput-using-azure-event-hub-mit-nicole-berdy/) – bussa