Du bist nicht angemeldet. [Anmelden]
Optionen
Thema bewerten
Knuddels-ARCHITEKTUR - #2848924 - 05.06.2017, 19:02:14
knotenpunkt2
Nicht registriert


moin moin,

Könnt ihr ruhig ins Entwicklerforum oder Mülltone verschieben!

ich hätte da mal ein paar Fragen,

Erster Teil

und zwar wie bei euch so ne Command-pipeline aussieht:
Mir Sind die Fragen anhand zwei von euch umgesetzten UseCases gekommen!

Ein UseCase wäre folgender: (1) http://developer.knuddels.de/docs/classes/App.html#method_mayJoinChannel
der andere UseCase (2) sind allgemein "TimeoutableFunctions"-Object-Szenarien! (also ein bspw. ne angefangene Channelumfrage, die nach X-Zeiteinheiten timeouted)

Warum interessiert mich das ganze?.... Naja es gibt verschiedene Lösungsansätze für solch Dinge, aber ich vermute mal Ihr habt da ne recht gute Lösung gefunden, die für ca. 5000 gleichzeitige online User skalieren!
Naja mir würden auch Lösungen einfallen, die für solch Userzahlen skalieren, aber man muss ja schließlich das Rad ja nicht jedes mal neu erfinden, wenn es bereits etablierte Lösungen gibt?!^^


zu (1): Denkbar wäre ein Async-Call der User App Funktionalitäten und ein Eintrag in einer Art registry, dass ein solcher Call abgefeuert worden ist!
Ein Worker-Thread (bzw. der MainEventLoop-Thread) rattert diese Registry endlos von oben nach unten ab und signalisiert im Falle des Timeouts ein (weiteres async?) Signal nach außen.

Oder ihr verwendet einfach Java-eigene Timer und/oder Thread-Scheduled-Executoren?
Oder etwas komplett anderes?


zu (2): analog zu (1)

Aber noch allgemein die Frage eurer Pipeline:

Eigenen Messungen zu Folge hat sich ergeben dass folgendes Szenario am Wahrscheinlichsten gilt:

ClientCommands werden auf eurem Server gecached. Worker-Threads entnehmen aus dem Cache die Commands und arbeiten diese ab. -> abgesendete commands werden also nicht geordet abgearbeitet, was zur Folge hat, dass bspw. Chatnachrichten vertauscht ankommen können.

Wieviel WorkerThreads habt ihr dann?. Wenn man IO-Operationen vernachlässigt macht es ja eigentlich nicht viel Sinn viel mehr Threads, wie Kerne oder virtuelle Prozessor-Threads zu haben.

Aber das sind jetzt nur Szenarien, die ich mir gedacht habe, wäre toll, wenn Ihr schreiben würdet, wie Ihr es umgesetzt habt und vor allem auch WARUM so?!
Das warum ist mir sogar noch wichtiger wie das wie^^



Zweiter Teil

Dann noch ne zweite Frage allgemein zur Architektur:


Hier einfach die Frage, wie Ihr eure Software intern strukturiert habt.
Welche Patterns, Architekturpatterns verwendet ihr hauptsächlich, nach welchen Prinzipien programmiert ihr?
Domain-Driven, viele POI/DAO-Objects, eher ein Anemic-Domain-Model?
Wie kommunizieren eure einzelnen Module/Komponenten untereinander, mit leichtgewichtigen Objecten/eventuell sogar nur IDs oder aber wirklich mit den schwer-gewichtigen Objecten.
Verwendet ihr irgendein bestimmtes Framework? Und wie sieht eure Infrastruktur mit den persistenten Daten(Datenzugriffen aus?)


Wäre toll wenn Ihr mir zumindest den ersten Teil beantworten könnt, wenn Ihr zweiten nicht beantworten wollt, dann kann ich das verstehen, aber vllt. könnt ihr dazu auch ein klein wenig was sagen, wäre echt toll von euch.




lg knotenpunkt


PS: Der Thread zerstört sich vermutlich in knapp weniger als 2 Monaten von selbst! (Insider^^)










[zum Seitenanfang]  
Re: Knuddels-ARCHITEKTUR [Re: ] - #2849088 - 06.06.2017, 17:08:26
Biermudadreieck

Registriert: 29.08.2016
Beiträge: 1.865
Hey,
ich verstehe den Sinn deines Threads offen gesagt nicht so wirklich, aber das was ich da entwirren kann sind eher Firmengeheimnisse, auf die du sowieso keine Antwort erhalten wirst. Dazu kommt, dass du mit diesem Nick den du hier verwendest eh nicht mehr online bist, d.h. man könnte dir auch keine Nachricht hinterlassen.
Da ich hier also nicht wirklich einen Sinn für eine Diskussion o.ä. sehe geschlossen.

[zum Seitenanfang]  


Moderator(en):  Plueschzombie