2008-08-28 10 views
1

Ich frage wirklich dies per Stellvertreter, ein anderes Team bei der Arbeit hatte eine Änderungsanfrage von unserem Kunden.Concurrent Logins in einer Webfarm

Das Problem ist, dass unser Kunde nicht möchte, dass sich seine Mitarbeiter mit einem Benutzer gleichzeitig anmelden. Dass sie ausgesperrt werden und Logins teilen.

Da dies auf einer Webfarm ist, was wäre der beste Weg, um dieses Problem anzugehen?

Würde die Zwischenspeicherung in der Datenbank nicht zu Leistungsproblemen führen?

Antwort

7

Sie bei Verwendung einer verteilten Cache-System wie memcached

Es dieses Problem ziemlich gut lösen würde aussehen könnte (es ist viel schneller als eine Datenbank), und eignet sich auch hervorragend für so ziemlich alles, was das Caching sonst zu

6

Es ist nur eine Kosten für Geschäfte.

Ja, das Zwischenspeichern in eine Datenbank ist langsamer als das Zwischenspeichern auf Ihrem Webserver. Aber Sie müssen diese Statusinformationen an einem zentralen Ort speichern, sonst wird ein Webserver nicht wissen, welche Benutzer in einem anderen angemeldet sind.

Annahme: Sie versuchen, mehrere gleichzeitige Anmeldungen durch einen einzelnen Benutzer zu verhindern.

1

Es hängt davon ab, wie die Authentifizierung durchgeführt wird. Wenn Sie die letzte erfolgreiche Anmeldedatumszeit (unabhängig vom Backend) speichern, können Sie das Schema möglicherweise so ändern, dass das Flag "logged_in" gespeichert wird und keine zusätzlichen Leistungskosten entstehen. (ok, es ist überhaupt nicht sauber)

3

Eine Datenbankoperation beim An- und Abmelden verursacht kein Leistungsproblem.

  • Wenn Sie einen Caching-Proxy verwenden, das wird ein Problem verursachen:
  • ein Benutzer sich abmelden, aber nicht in der Lage sein, sich wieder anzumelden, bis der Abmelde den Cache
erreicht

Ihr größtes Potenzial Problem sein könnte:

  • , wenn die app/Box Abstürze ohne eine Chance für die Benutzer abzumelden, wird der Zustand des Benutzers in der Datenbank bleiben „angemeldet“.