Wer liebt Sport nicht? Jedes Jahr, wenn die Sportsaison beginnt, fangen wir alle an, unsere Lieblingsmannschaften zu unterstützen. Wie oft haben Sie aufgrund eines vollen Terminkalenders oder eines Notfalls bei der Arbeit ein Spiel verpasst, auch wenn Ihre Lieblingsmannschaft spielt? Ich bin mir ziemlich sicher, dass wir alle dort waren. Dies bringt uns zum Konzept der Bestenliste – einer Anzeigetafel, die die Rangfolge oder Datenpunkte auf gut berechnete Weise anzeigt, um mit dem zurechtzukommen, was Sie verpasst haben. Was NCache Machen Sie Ihre Leaderboard-Anwendung mit einer verteilten Caching-Lösung viel effizienter, um eine hervorragende Leistung zu erzielen. Lassen Sie uns besprechen, wie.
Was wollen wir hier erreichen?
Nehmen wir also an, Sie möchten eine Anwendung erstellen, die Updates von den Spielorten live aufnimmt und sie allen Benutzern anzeigt, die die Updates abonniert haben. Für ein bereits beendetes Spiel erhält der Benutzer einen detaillierten Punktestand und die Ergebnisse des Spiels. Ebenso wird der abonnierte Benutzer benachrichtigt, wenn ein neues Spiel beginnt.
Es gibt unzählige Systeme, die Ihnen diese Funktionalität bieten. Bei einer Live-Scoring-Anwendung sind jedoch Netzwerkstörungen und Verzögerungen ein großer Rückschlag. Nun, die gute Nachricht ist, dass NCache Der Vorteil liegt darin, dass Sie sich darüber keine Sorgen machen müssen NCache.
NCache nutzt verteiltes In-Memory-Computing, um Ihnen die schnellste und optimale Ausgabe für Hunderte und Tausende von Benutzern zu bieten, unabhängig davon, ob sie alt sind oder gerade erst beitreten. Es bewältigt starken Datenverkehr, ohne dass Leistungsengpässe dazu führen, dass es langsamer wird oder abstürzt. Darüber hinaus handelt es sich um einen verteilten und linear skalierbaren In-Memory-Datenspeicher, der eine beliebige Anzahl von Client-Anfragen verarbeiten und eine zuverlässige Verbindung mit dem Cache-Client gewährleisten kann. Wir haben eine lauffähige Beispielanwendung für Sie erstellt und auf bereitgestellt Github als Demonstration.
NCache Leaderboard-Anwendung: Ein Überblick
Beginnen wir mit einem Überblick über die Funktionen der Anwendung. Die Grundfunktionalität gliedert sich in zwei Teile:
- Abonnierter Benutzer: Ein Benutzer hat sich angemeldet, um den Live-Score anzusehen.
- Ergebnisaktualisierungsteam: Ein Benutzer aktualisiert den Live-Score für den abonnierten Benutzer.
Sobald das Spiel beginnt, beginnt das Ergebnisaktualisierungsteam mit der Aktualisierung des Spiels auf seinen APIs, die Aktualisierungen für jeden bereitstellen, der über die Lizenz zum Empfang dieser Aktualisierungen verfügt. Eine Gesamtansicht der Anwendungsarchitektur ist unten dargestellt:
In unserem System unterstützt durch NCache, die Live-Benachrichtigungen werden im veröffentlicht NCache Cluster-Server verwenden Cache-Publish-Subscribe-Modell Dabei veröffentlicht ein Herausgeber eine Nachricht mit einem Link zu einem bestimmten Thema und der Abonnent, der das Thema abonniert hat, erhält eine Aktualisierung, wenn an diesem Thema eine Änderung vorgenommen wird. In unserem Fall wird jedes Spielupdate veröffentlicht, und alle Benutzer, die das Spiel abonniert haben, erhalten dies als Aktualisierung des Spielstands.
Alle Abonnenten des Spiels erhalten sofortige Updates über NCache SignalR Backplane. SignalR Backplane ist ein NCache Verlängerung der ASP.NET SignalR das eine effiziente Nutzung ermöglicht ASP.NET SignalR in einer Webfarm und sorgt gleichzeitig für einen reibungslosen Fluss relevanter Daten zu jedem Benutzer von mehreren Servern. Der Match-Handler verwendet NCache Hintergrundquelle um die Cache-Daten von und in die Datenbank zu lesen und zu schreiben. Sehen Sie sich die folgende Abbildung an, um die Funktionsweise der Anwendung zu verstehen:
Verwenden von Pub/Sub zum Veröffentlichen und Abonnieren mit Match-Updates
Die richtigen NCache Pub/Subs Modell: Der Benutzer abonniert das Thema für Spielaktualisierungen. Immer wenn das Score-Update-Team den Score aktualisiert, wird eine Nachricht veröffentlicht und der abonnierte Benutzer wird über die Aktualisierung benachrichtigt. Der abonnierte Benutzer trainiert somit jedes Mal neu aktualisierte Daten neu, daher die aktualisierte Punktzahl.
Der unten angegebene Code beschreibt, wie eine Nachricht zu einem bestimmten Thema veröffentlicht wird.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
ICache cache = CacheManager.GetCache("myPartitionedCache"); // create pub/sub topic on match start cache.MessagingService.CreateTopic(matchName); // create start update MatchUpdate start = new MatchUpdate(datetime, "match_start", "stadium", "Match has Started"); // create new Message packet with the match update Message message = new Message(start); // fetch topic handler from cache ITopic topic = _cache.MessagingService.GetTopic(matchName); // publish Message on topic topic.Publish(message, DeliveryOption.All); |
Der folgende Code zeigt, wie ein Benutzer ein bestimmtes Thema abonnieren kann
1 2 3 4 5 6 7 8 |
ITopicSubscription matchSubscription = cache.MessagingService.GetTopic(matchName).CreateSubscription(MatchUpdates); ... // Creating Callback public void MatchUpdates(object sender, MessageEventArgs args) { hub.Clients.All.SendAsync("MatchUpdate", new JsonResult((MatchUpdate)args.Message.Payload)); } |
Die richtigen SignalR Backplane um Updates zum Spiel zu erhalten
NCache SignalR Backplane ist eine Erweiterung von NCache um dauerhafte Verbindungen mit allen Benutzern aufrechtzuerhalten, die ständige Updates abonniert haben. Das Beste daran, dies anzubieten, besteht darin, die ständigen Verzögerungen zu minimieren und Ihrer Anwendung Echtzeitfunktionen hinzuzufügen, sodass keine frustrierenden Verzögerungen auftreten.
Schauen Sie sich den Code unten an, um es Ihnen zu zeigen NCache SignalR Backplane können in Ihrer Bewerbung eingetragen werden:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// Get cache name and event key from appsettings.json string cacheName = Configuration.GetValue("CacheName"); string eventKey = Configuration.GetValue("EventKey"); GlobalHost.DependencyResolver.UseNCache(cacheName, eventKey); app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseCookiePolicy(); app.UseSignalR(routes => { routes.MapHub("/signalr"); }); app.UseMvc(); |
Sicherungsquelle zum Lesen/Schreiben von Daten aus der Datenquelle
Ihre Anwendung muss mit Ihrer Datenbank synchronisiert bleiben, damit die Übereinstimmungswerte auch in der Datenquelle aktualisiert werden. NCache bietet Datum Quellenanbieter, darunter:
- Read-Through-Anbieter: Für alle Aktualisierungen, die nicht zwischengespeichert sind, wird direkt auf die Datenbank geschaut, um die aktualisierten Daten abzurufen.
- Über den Anbieter schreiben: Um die Datenquelle mit der Datenquelle synchron zu halten, werden die Daten sowohl in den Cache als auch in die Datenquelle geschrieben, sodass keine Inkonsistenz auftritt.
Unter Berücksichtigung der beiden oben genannten Faktoren sehen Sie sich den folgenden Code an, um die Datenquelle mit Ihrem Cache synchron zu halten.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
public ScoreUpdateController(IConfiguration configuration) { // get cache name from appsettings.json string cacheName = configuration.GetValue("CacheName"); // get read/write thru provider name from appsettings.json string readThruProviderName = configuration.GetValue("ReadThruProviderName"); string writeThruProviderName = configuration.GetValue("WriteThruProviderName"); // initialize store match handler if not initialized before if (storeHandler == null) storeHandler = new StoreHandler(cacheName, readThruProviderName, writeThruProviderName); // acquire cache handler cache = CacheManager.GetCache(configuration.GetValue("CacheName")); } |
Der folgende Code zeigt das Abrufen von Aktualisierungen bei aktiviertem Durchlesen und das Schreiben der aktualisierten Daten in den Cache und den Datenspeicher.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
public void SaveUpdates(string matchName, MatchUpdate matchUpdate) { // fetch list handler from cache IDistributedList distributedList = cache.DataTypeManager.GetList(matchName, readThruOptions); // if there is no list initialized, create new list with writethru enabled if (distributedList == null) { distributedList = cache.DataTypeManager.CreateList(matchName, null, writeThruOptions); } // add new update to list distributedList.Add(matchUpdate); |
Um es zusammenzufassen …
Wir haben gerade gelernt, wie man mit eine Live-Scoreboard-Anwendung erstellt NCache Dadurch kann eine große Anzahl von Benutzern das Spiel live streamen, ohne dass es zu Störungen oder Inkonsistenzen kommt. Wie cool ist das? Vorbei sind die Zeiten, in denen ein Tor nur wenige Minuten nach seinem tatsächlichen Treffer angezeigt wurde. Jetzt können Sie Ihr Lieblingsspiel auch unterwegs genießen!
Also, für welches Team feuern Sie Ihre Daumen? Auch! Vergessen Sie nicht, sich unsere anderen sehr interessanten Funktionen und Anwendungsfälle anzusehen. NCache Nie enttäuscht.
Digitale Anzeigetafeln spielen eine entscheidende Rolle bei der Bereitstellung von Echtzeit-Updates und -Informationen für Sportfans. Im Zusammenhang mit einer Live-Scoring-Anwendung ist ein effizientes und zuverlässiges System von größter Bedeutung. NCache bietet eine verteilte Caching-Lösung, die optimale Leistung und Skalierbarkeit für die Bearbeitung einer großen Anzahl von Benutzern und deren Anfragen gewährleistet. Durch die Nutzung verteilter In-Memory-Computing, NCache Minimiert Netzwerkstörungen und Verzögerungen und bietet Benutzern ein nahtloses Erlebnis. Die Bedeutung einer gut funktionierenden digitalen Anzeigetafel kann nicht genug betont werden, und Lösungen wie NCache tragen dazu bei, das Gesamterlebnis von Sportbegeisterten zu verbessern.