7

Jeśli używasz szyn 3 app z wieloma hamowni internetowych na Heroku,Czy sesje działają z wieloma dynamami internetowymi na Heroku?

  1. Za każdym razem trafisz na aplikację, czy typowo połączyć z innym hamowni internetowej?
  2. Czy sesje działają w różnych hamowni internetowych?
  3. Czy to działa na różnych sklepów Rails sesji (ActionDispatch :: Session :: CookieStore, ActiveRecord :: SessionStore i ActionDispatch :: Session :: CacheStore)

Odpowiedz

15

W skrócie tak - sesje będą działać w wielu internetowych dyszach.

Sesje działają w trybie dynamo w Internecie - ponieważ pozwala na to obsługa sesji w systemie Rail. Jeśli tak, to internetowy model dyna jest dokładnie taki, jak Rail ma być skalowany poziomo.

1. Za każdym razem, gdy uruchamiasz aplikację, zazwyczaj łączysz się z innym internetowym dyno?

podstawie dokumentacji Heroku:

Siatka routing jest odpowiedzialny za ustalenie lokalizacji internetowych hamowni swojej aplikacji w kolektorze dyno i spedycja żądania HTTP do jednego z tych hamowni. Selekcja dyno odbywa się za pomocą losowego algorytmu selekcji.

Wybór dyno jest losowy ... ale to dyno musi mieć zainstalowaną aplikację. Więc jeśli masz więcej niż jedno hamowanie, możesz połączyć się z inną dyno (co jest ważne, ponieważ ułatwia to równoważenie obciążenia i wysoką dostępność).

2. Czy sesje mogą działać w różnych dynamach internetowych?

Tak.Większość internetowych stosy sesje wsparcia, wykonując następujące czynności:

  1. Przypisywanie identyfikatora sesji - co to unikatowy identyfikator, a to jest zazwyczaj w postaci pliku cookie sesji tak, że przeglądarka będzie zawsze wysyłać identyfikator z każdą prośbą HTTP gospodarz pochodzących
  2. Zapewnienie składowania, które odwzorowuje identyfikator sesji do rzeczywistych danych sesyjnych

Więc przez ten proces, sesje mogą być obsługiwane za każde żądanie HTTP przychodzących ma identyfikator sesji, który jest dostępny przez hamowni internetowej kiedy obsługuje twoją prośbę.

3. Czy to działa na różnych sklepów Rails sesja (ActionDispatch :: Session :: CookieStore, ActiveRecord :: SessionStore i ActionDispatch :: Session :: CacheStore)

ActionDispatch :: Session :: CookieStore Tak. Magazyn plików cookie przechowuje zaszyfrowane dane sesji jako plik cookie. Tak więc przeglądarka wysyła wszystkie dane sesji (zaszyfrowane) z powrotem do hosta, który jest następnie odszyfrowywany do użytku w twojej aplikacji.

ActiveRecord :: SessionStore Tak. Magazyn plików cookie przechowuje zaszyfrowane dane sesji w tabeli bazy danych. Identyfikator jest następnie przypisywany jako plik cookie. Twoja przeglądarka wysyła identyfikator do hosta, który jest następnie używany do ładowania danych sesji z bazy danych. Ponieważ wszystkie dynamo sieciowe mają połączenie z bazą danych, oznacza to, że jest ona również obsługiwana.

ActionDispatch :: Session :: CacheStore Tak, ale potrzebujesz usługi sklepu z pamięci podręcznej (np. Dodatek MemCache). Magazyn plików cookie przechowuje zaszyfrowane dane sesji w pamięci podręcznej (memcache), która jest usługą współdzieloną we wszystkich dynamach internetowych. Identyfikator jest następnie przypisywany jako plik cookie. Twoja przeglądarka wysyła identyfikator do hosta, który jest następnie używany do ładowania danych sesji ze składnicy pamięci podręcznej (memcache).

5

Nie wierzę Heroku czyni żadnego wysiłku, aby wysyłaj kolejne prośby do tej samej dyno sieci. Może się mylę i robią trochę wysiłku, ale nawet jeśli tak, to nie może być coś podobnego na tyle wiarygodne, aby liczyć na zarządzaniu sesji.

Jednak ActionDispatch :: Session :: CookieStore będzie zdecydowanie działać, ponieważ dane są przechowywane w postaci zaszyfrowanej po stronie klienta cookie. ActiveRecord :: SessionStore zadziała, ponieważ dane są przechowywane w bazie danych, która jest prawdopodobnie udostępniana przez wszystkie dynamo sieciowe. ActiveDispatch :: Session :: CacheStore powinien działać, jeśli używasz serwera memcached współdzielony pomiędzy wszystkimi klientami lub podobny cache udostępniane.

Jedyną rzeczą, która nie zadziałałaby, jest jakaś sesyjna sesja oparta na plikach w lokalnym systemie plików, a sytuacje takie jak wielokrotne hamowanie Heroku są właśnie powodem tego, że ten typ przechowywania sesji nie jest powszechny w nowoczesnych aplikacjach internetowych.

Powiązane problemy