2011-09-07 7 views
5

Czy można tworzyć/przechowywać konta użytkowników w magazynie danych, który wykazuje ostateczną spójność?Możliwe jest zarządzanie użytkownikami/tożsamościami w magazynie danych, który wykazuje ostateczną spójność?

Wydaje się niemożliwe, aby zarządzać tworzeniem kont bez zbędnej złożoności architektury, aby uniknąć sytuacji, w których mogą występować dwa konta o tym samym identyfikatorze UID (np. Adres e-mail)?

Czy użytkownicy ewentualnych magazynów konsystencji używają oddzielnego spójnego DB jako magazynu tożsamości, czy też istnieją rozwiązania/wzorce, które powinienem zbadać?

Dzięki z góry,

Jamie

Odpowiedz

1

To jest możliwe do zarządzania użytku w końcu konsekwentne magazynu danych. Robimy to. Działa zgodnie z następującymi założeniami:

  1. Konflikty nie powinny się zdarzać, a kiedy to robią, istnieje wyraźna ścieżka rozwiązywania konfliktów. Jeśli identyfikator konta to adres e-mail osoby, to jeśli dwie osobne osoby próbują zarejestrować się pod tym samym adresem e-mail, jest tutaj większy problem. W tym przypadku robimy to, blokując oba nowe konta zaraz po wykryciu konfliktu i wysyłając wiadomość e-mail na adres będący w konflikcie, wyjaśniając użytkownikowi, że istnieje problem (możliwe oszustwo). Możesz poprosić użytkownika o zresetowanie konta lub poproszenie go o skontaktowanie się z pomocą techniczną.

  2. Powtórzony dostęp tego samego użytkownika w terminie, w którym dane są niespójne, powoduje przejście do tej samej repliki. Na przykład, jeśli osoba, która właśnie się zarejestrowała, a następne żądanie jest loginem, musisz zweryfikować to logowanie w replice danych, w której istnieją nowe dane rejestracyjne. Jeśli więc ostateczna spójność wynika z wielu centrów danych w różnych lokalizacjach geograficznych i w normalnych warunkach żądanie jest kierowane do najbliższego centrum danych geograficznie, wszystko jest w porządku.

Istnieją pewne przypadki brzegowe, takie jak, jeśli użytkownik zarejestrowany na jednym centrum danych, a następnie, że centrum rozbił, a teraz użytkownik nie może się zalogować mimo że wciąż można zobaczyć aplikację - podawane z innego centrum danych . Możesz obliczyć oczekiwaną częstotliwość tego przypadku na podstawie liczby nowych użytkowników dziennie i przeciętnego przestoju centrum danych. Następnie zdecyduj, czy warto martwić się o jednego użytkownika w (milion/miliard/jakikolwiek twój numer) mającego problem i prawdopodobnie kontaktującego się ze wsparciem. Niedawno stanąłem przed tą samą decyzją i zdecydowałem, że z perspektywy kosztów i korzyści odpowiedź brzmi "nie".

+0

Dzięki + Elad. To całkiem przydatna odpowiedź. Aby do tego dodać, doszedłem także do wniosku, że zmniejszenie wpływu punktu 2 będzie możliwe poprzez opóźnienie finalizacji konta. Można to zrobić, mówiąc e-mailem o link do weryfikacji adresu e-mail użytkownika. Konto zostanie utworzone, ale nie zostanie aktywowane. W momencie wystąpienia aktywacji, jeśli istnieją dwa konta z tym samym adresem e-mail, może nastąpić rozwiązanie problemu. – JBowen

+1

Co więcej, możesz zminimalizować wpływ ewentualnej spójności na platformach takich jak Cassandra, stosując wyższy poziom spójności dla najważniejszych informacji o konsystencji, takich jak konta, przy jednoczesnym zwiększeniu szybkości ewentualnej spójności w przypadku informacji, w których mniej ważne jest bycie na bieżąco. . Zobacz ConsistencyLevel @ http://wiki.apache.org/cassandra/API –

Powiązane problemy