Chciałbym zbudować odporną na uszkodzenia, miękką aplikację internetową do przechowywania pizzy w czasie rzeczywistym. Powinno to ułatwić sklepowi pizzerię akceptowanie połączeń telefonicznych od klientów, składanie ich jako zamówień do systemu (za pośrednictwem klienta internetowego CRM) i pomoc dyspozytorom w przydzielaniu kierowców do dostarczania zamówień.Budowanie odpornej na uszkodzenia, miękkiej aplikacji internetowej w czasie rzeczywistym z Erlang/OTP
Cele te nie są niczym niezwykłym, ale chciałbym, aby usługa była dostępna 24 godziny na dobę, 7 dni w tygodniu, aby była odporna na uszkodzenia. Ponadto chciałbym, aby działało bardzo szybko i było bardzo elastyczne.
Poniżej znajduje się bardzo prosty widok architektury dla takiej aplikacji.
Problem polega na tym, że nie wiem, jak korzystać ze wszystkich dobroci Erlang/OTP, aby aplikacja bardzo czuły i odporne na uszkodzenia.
Oto moje pytania:
- Które elementy systemu powinny być replikowane w celu zapewnienia odporności na uszkodzenia i jak należy to zrobić? Wiem, że mogę przechowywać status każdego pojazdu (współrzędne, przypisane zamówienia itp.) W zreplikowanej bazie danych Mnesia. Czy to właściwa droga?
- Które usługi przechowywania danych powinny być konwencjonalne oparte na języku SQL (np. Na podstawie boss_db), a które należy wykonać w systemie Mnesia, aby zapewnić bardzo szybką reakcję? Czy można używać konwencjonalnej bazy danych SQL do przechowywania rekordów klientów i historii w tak odpornej na błędy i wysoce responsywnej aplikacji?
- Czy muszę próbować przechowywać wszystkie dane dotyczące wszystkich usług (klientów, stanu pojazdów itp.) W pamięci RAM, aby aplikacja była szybko reagująca?
- Czy powinienem przechowywać trwałe dane pojazdu (identyfikator, pojemność itp.) W konwencjonalnej bazie danych SQL i przechowywać dane w czasie rzeczywistym (współrzędne, przypisane zamówienia, zamówienia w bagażniku itd.) W bazie danych Mnesia, aby aplikacja bardziej responsywna w czasie rzeczywistym?
Jeśli nie zreplikujesz całej logiki aplikacji i danych, w jaki sposób wykonasz usługę 24/7 w przypadku np. awaria serwera bazy danych;) –
Czy możesz podać odniesienie do sposobu replikowania danych w systemie Erlang/OTP, który ma 2 węzły zajmujące się logiką? – skanatek
grupa procesowa, wyślij do wszystkich, rozwiń konflikt lub po prostu użyj polecenia riak/couchdb. Albo patrzysz na mnesię. Ale zrobienie tego przez własne będzie naprawdę bardzo trudnym zadaniem. –