0 Daumen
341 Aufrufe

Aufgabe:


Gegeben sei ein Circuit Breaker mit den folgenden Eigenschaften:

- Bei einer einzigen fehlgeschlagenen Anfrage wird aus Closed nach Open gewechselt.
- Nach 30 Sekunden im Zustand Open wird nach HalfOpen gewechselt.
- Nach drei aufeinanderfolgenden erfolgreichen Anfragen wird aus HalfOpen nach Closed
gewechselt.
- Bei jeder fehlgeschlagenen Anfrage wird aus HalfOpen nach Open gewechselt
Ab einem Zeitpunkt T gehen Anfragen an den Circuit Breaker mit einer konstanten Rate von
einer Anfrage pro Sekunde ein. Zum Zeitpunkt T befindet sich der Circuit Breaker im Zustand
Closed.
Gehen Sie davon aus, dass der hinter dem Circuit Breaker liegende Backend-Service zum Zeit-
punkt T + 10 Sekunden (nach exakt 10 erfolgreichen Anfragen) ausfällt, und für exakt 10 Sekun-
den nicht verfügbar ist. Ab dem Zeitpunkt T + 20 Sekunden läuft der Backend-Service wieder
stabil.



a) Zu welchem Zeitpunkt (wie viele Sekunden nach T ) befindet sich der Circuit Breaker erst-
mals im Zustand HalfOpen?
b) Zu welchem Zeitpunkt (wie viele Sekunden nach T ) befindet sich der Circuit Breaker zum
zweiten mal im Zustand Closed?
c) Betrachten Sie die Zeitspanne vom Zeitpunkt T bis T + 60 Sekunden. Wie viele Anfragen
(von externen Clients) wurden in diesem Zeitraum vom Circuit Breaker abgewiesen?

Kann mir jemand bei dieser Aufgabe bitte weiterhelfen? Ich komme nicht voran.

Avatar von

1 Antwort

0 Daumen
 
Beste Antwort

Spiel das Ganze doch mal durch. T ist am Anfang 0 was passiert jetzt genau und warum?

Dann machst du das für T = 1, T = 2 ...

Du kannst auch einzelne Zeitpunkte T überspringen, wenn klar ist was dort passiert.

Auf https://de.wikipedia.org/wiki/Sicherung_(Entwurfsmuster) findest du ein Zustandsdiagramm. Achtung es weicht etwas von deinem Circut Breaker ab. Es dient aber recht gut der Veranschaulichung.

Avatar von 477 k 🚀

Müsste bei a) dann 30 Sekunden rauskommen?

Müsste bei a) dann 30 Sekunden rauskommen?

Du sollst nicht raten, sondern es durchspielen.

Der Circuit Breaker befindet sich ja anfangs in Zustand Closed. Dann gibt es eine fehlgeschlagene Anfrage und er wechselt in den Zustand Open, wo es dann eine Verzögerung von 30 Sekunden gibt. Dann wechselt er in den Zustand Half-Open.

Also müsste er sich dann nach 30 Sekunden zum ersten mal im Zustand Half-Open befinden.

Wo liegt das Problem in der Interpretation des Textes?

Gehen Sie davon aus, dass der hinter dem Circuit Breaker liegende Backend-Service zum Zeitpunkt T + 10 Sekunden (nach exakt 10  erfolgreichen Anfragen) ausfällt, und für exakt 10 Sekunden nicht verfügbar ist.

Es gibt also in T = 0 keine fehlgeschlagene Anfrage, sondern erst in T = 10.

Jetzt verstehe ich es.

vielen Dank!

Bedeutet es also dann, dass der Circuit Breaker nach 50 Sekunden im Zustand Half open befindet oder liege ich da falsch?

Bedeutet es also dann, dass der Circuit Breaker nach 50 Sekunden im Zustand Half open befindet oder liege ich da falsch?

Könntest du noch genau schildern wie du darauf kommst, damit ich nicht den Eindruck habe es war geraten?

Die erste fehlgeschlagene Anfrage ist ja in T=10. Also nach T+10 Sekunden. Dann fällt der Backend Service weitere 10 Sekunden aus. Dann wird in den Zustand open gewechselt, wo es dann eine Verzögerung von 30 Sekunden gibt (also sind es dann insgesamt 50 Sekunden). Dann wird in den Zustand Half-Open gewechselt.

Die erste fehlgeschlagene Anfrage ist ja in T=10. Also nach T+10 Sekunden.

Also wird dann von CLOSED nach OPEN gewechselt oder ?

Ab diesem Zeitpunkt besteht keine Verbindung mehr und zwar für 30 Sekunden.

Nach 30 Sekunden im Zustand Open wird nach HalfOpen gewechselt.

D.h. es wird nach 40 Sekunden in den Zustand HalfOpen gewechselt oder nicht?

Ah ich dachte die ersten 10 Sekunden werden auch miteinberechnet.

Nein. Wenn keine Verbindung zum Device besteht, dann bekommt man ja nicht mit ob es arbeitet oder nicht. Dann blockt man erstmal alle eingehenden Anfragen ab und wartet erstmal 30 Sekunden.

Wie genau berechne ich die Anzahl der Abfragen, die in dem Zeitraum abgewiesen wurden?

Also Aufgabenteil c)

Für mich ist nicht ganz genau klar, was mit abgewiesen gemeint ist.

Ich würde vermuten, jede Anfrage, die im offenen Zustand gesendet wird, wird abgewiesen.

Also wäre das einfach die Anzahl der Sekunden, in denen der Circuit Breaker offen ist.

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Mathelounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community