Zarządzanie obciążeniem serwerów

Odpowiedz Nowy wątek
dfasd
2013-01-30 12:32
dfasd
0

Chcę stworzyć sieć składającą się z jednego serwera głównego, który będzie wpięty na adresie jakas_domena.pl oraz będzie wyświetlać ekran logowania dla użytkowników(strona www napisana w java). Po udanym logowaniu chciałbym żeby ten użytkownik został skierowany do innego serwera, który zostanie mu przydzielony w sposób niewidoczny dla niego. Czyli użytkownik ma widzieć nadal jakas_domena.pl ale działać od momentu zalogowania na innym serwerze. Dodatkowo chce żeby ten pierwszy serwer umożliwiał dynamiczne dodawanie nowych użytkowników.
Problemem jest tutaj, przekierowywanie zalogowanego użytkownika (protokół https) na bazie jego loginu oraz jak z organizować bazę danych tak żeby można było pobrać informacje o wybranym użytkowniku z poziomu każdego serwera? Jeżeli użyje jednej bazy to ryzykuje zwolnienie działania aplikacji. Jeden z moich pomysłów zakłada że na każdym serwerze jest baza danych dla jakiejś puli użytkowników z X wszystkich zarejestrowanych. W tym momencie pierwszy serwer będzie przekierowywać użytkownika do serwera na którym znajdują się informacje o użytkowniku, ale w tym przypadku pytanie jeszcze gdzie trzymać część wspólną bazy danych(każdy serwer musi aktualizować te dane podczas wykonywania requestu)

Pozostało 580 znaków

2013-02-02 02:52

Rejestracja: 13 lat temu

Ostatnio: 17 godzin temu

0

Takie rzeczy to chyba w innej warstwie się obsługuje (klaster, load balancing) - są do tego gotowe rozwiązania. Tyle że to dotyczy serwera aplikacji. Nie ma potrzeby rozdzielania bazy danych na wiele silników. Całe systemy bankowe stoją na jednej bazie i dają radę (tzn. nie dzieli się danych w pojedynczej tabeli na rózne instancje bazy), więc nie będziesz miał z tym problemu (o ile użyjesz odpowiedniej bazy, np. oracle, no i dobrze ją zaprojektujesz).

Pozostało 580 znaków

2013-02-02 09:17

Rejestracja: 8 lat temu

Ostatnio: 49 minut temu

0

Do rozbicia bazy na kilka serwerów możesz użyć "sharding".

Lista baz które to wspierają:
http://en.wikipedia.org/wiki/Shard_%28database_architecture%29

Ale można to zrobić w każdej bazie - bardziej zależy to od serwera aplikacji.
Rozbicie baz można zrobić na dwa sposoby:
a) logicznie - różne tabele na różnych serwerach
b) równomiernie (horyzontalnie) - różne rekordy tej samej tabeli na różnych serwerach

Więcej o tym:
http://social.technet.microso[...]ndows-azure-sql-database.aspx
http://www.codefutures.com/database-sharding/
http://www.scalebase.com/products/database-sharding/

Co do rozbicia serwerów aplikacji to niewiele wiem jeśli chodzi o samą Javę, ale wiem że ogólnie stosuje się Varnish.
Można też użyć "reverse proxy" w celu przyspieszenia aplikacji.

Java po stronie serwera AFAIK może działać w różnych trybach - JSP/JSF, JEE. Od tego pewnie zależy sposób dystrybucji pracy.


Szacuje się, że w Polsce brakuje 50 tys. programistów

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0