Biblioteka do szeregowania zadań w systemie cloud'owym

0

Witam serdecznie forumowiczów.
Mam w tym semestrze przedmiot nazywający się tak samo jak ten dział więc może i mój problem będzie tu pasował.
Otóż ja wraz z kolegą musimy stworzyć: Bibliotekę opartą na wzorcach do szeregowania zadań w środowiskach cloud'owych. Temat nie jest do końca nawet dla nas zrozumiały, prowadzący ostatnio też miał problem nam wytłumaczyć o co dokładnie chodzi. Link do informacji, które zebraliśmy. Myślimy nad wykorzystaniem Google Cloud Platform albo Amazon Web Services. Jeśli ktoś mniej więcej ogarnia te tematy to może jest w stanie podpowiedzieć z jakiś narzędzi moglibyśmy skorzystać z tych cloudów by dało się tam zrealizować temat naszego projektu.
Z góry dzięki za wszelką pomoc.

0

generalnie z chmury korzystasz głównie po to żeby nie trzeba było szeregować tylko stworzyć na potrzebę wystarczająco mocy obliczeniowej żeby nigdy zadania nie czekały, ale w teorii zawsze są zadania których się nie da policzyć od razu...

ja bym na waszym w celach akademickich zrobił tak:

  • dopytaj o dokładniejsze sformułowanie problemu i powiedziec dlaczego o to prosicie

jak nie uzyskacie odpowiedzi to zrobiłbym coś w tym stylu:

  • wymyślcie jakiś sensowny problem który da się obliczać na wielu komputerach (zawsze możecie minować bitcoiny jak nie macie pomysłu albo crackować jakieś hasła)
  • zamiast myśleć o komputerach w chmurze myśl o jednostkach obliczeniowych, które czekają na zadania (np. pętla, która otwiera połączenie z serwerem i czeka aż serwer coś wyśle)
  • jedna z jednostek obliczeniowych będzie szeregować i przyjmować zadania (jeśli potrzeba może być więcej, ale jeśli problem odpowiednio podzielisz nie powinno być to konieczne)

w common lispie masz do tego biblioteke, dopisujesz do tego szeregowanie zadań i jakiś skrypt bootstrapujący na maszynie i masz gotowe: https://github.com/lmj/lfarm/blob/master/README.md

AWS lambda chyba też coś takiego ma

0

Dzięki za tak szybkie zainteresowanie i rozpisanie się, weźmiemy Twoje podpowiedzi pod uwagę i jutro(w sumie dzisiaj) po zajęciach z tego przedmiotu zwrócę się jeśli coś byłoby jeszcze nie jasne :)

1

W google'u jest już gotoee narzędzie
https://cloud.google.com/dataflow/ + cloud functions.

Jakby Wam zależało na stricte kolejce to tutaj
https://cloud.google.com/appengine/docs/standard/python/taskqueue/

Możecie w łatwy sposób wysłać n zadań I postawić y maszyn do przetwarzania

0
krwq napisał(a):

generalnie z chmury korzystasz głównie po to żeby nie trzeba było szeregować tylko stworzyć na potrzebę wystarczająco mocy obliczeniowej żeby nigdy zadania nie czekały, ale w teorii zawsze są zadania których się nie da policzyć od razu...

ja bym na waszym w celach akademickich zrobił tak:

  • dopytaj o dokładniejsze sformułowanie problemu i powiedziec dlaczego o to prosicie

jak nie uzyskacie odpowiedzi to zrobiłbym coś w tym stylu:

  • wymyślcie jakiś sensowny problem który da się obliczać na wielu komputerach (zawsze możecie minować bitcoiny jak nie macie pomysłu albo crackować jakieś hasła)
  • zamiast myśleć o komputerach w chmurze myśl o jednostkach obliczeniowych, które czekają na zadania (np. pętla, która otwiera połączenie z serwerem i czeka aż serwer coś wyśle)
  • jedna z jednostek obliczeniowych będzie szeregować i przyjmować zadania (jeśli potrzeba może być więcej, ale jeśli problem odpowiednio podzielisz nie powinno być to konieczne)

w common lispie masz do tego biblioteke, dopisujesz do tego szeregowanie zadań i jakiś skrypt bootstrapujący na maszynie i masz gotowe: https://github.com/lmj/lfarm/blob/master/README.md

AWS lambda chyba też coś takiego ma

A masz jakiś pomysł w jaki sposób te zadania szeregować? Bo po wizycie u prowadzących nic ciekawego się nie dowiedzieliśmy. Nie mamy pojęcia skąd oni wzięli ten temat i zachowują się jakby kompletnie nie wiedzieli co powinniśmy w zakresie tego tematu zrobić

0
somas3k napisał(a):

Witam serdecznie forumowiczów.
Mam w tym semestrze przedmiot nazywający się tak samo jak ten dział więc może i mój problem będzie tu pasował.
Otóż ja wraz z kolegą musimy stworzyć: Bibliotekę opartą na wzorcach do szeregowania zadań w środowiskach cloud'owych. Temat nie jest do końca nawet dla nas zrozumiały, prowadzący ostatnio też miał problem nam wytłumaczyć o co dokładnie chodzi. Link do informacji, które zebraliśmy. Myślimy nad wykorzystaniem Google Cloud Platform albo Amazon Web Services. Jeśli ktoś mniej więcej ogarnia te tematy to może jest w stanie podpowiedzieć z jakiś narzędzi moglibyśmy skorzystać z tych cloudów by dało się tam zrealizować temat naszego projektu.
Z góry dzięki za wszelką pomoc.

Google Cloud Platform albo Amazon Web Services to tylko prowajder na którym chcesz odpalić swoją zabawkę. Z tego co rozumiem to chcecie

  • Zapisywać stan kolejki zadań do wykonania, czy to w pamięci czy to na dysku.
  • W prosty sposób dopiąć workera do takiej kolejki zadań .

Jeżeli tak to zaczął bym od takiego czegoś.

Potrzeba jakiegoś storage do przechowywania zadań, może to być super prosty Redis - jedna instancja i lista jako typ danych gwarantuje wam to że tylko jeden worker jest w stanie pobrać jedno zadanie. Oczywiście są tego założenia wady :

  • single point of failure (klasyka gatunku) - ale z drugiej strony możecie sobie bardzo dużo rzeczy tutaj sami doimplementować jako np: dynamo layer dla redisa ( czy jakiegoś innego storaga).
  • brak tutaj delivery guarantees, czyli wiadomośc może zostać zgubiona (albo jak chcecie taką gwarancje to ACK wiadomości trzeba implementować ręcznie) - ale to chyba ok jak na początek ?

Worker - tutaj wgl czarna magia trochę, bo jakie zadania chcecie szeregować ? co ten worker ma robić, na jakś konfiguracje ma pozwalać ? mogę podać kod takiego workera ?
Taki worker na pewno musi pobierać zadanie z Redis'a, ale to tez na początek może być zwykła pętle while() która od czasu do czasu pyta o zadanie.
Może taki Worker mógłby być definiowany jako kod w javascript a odpalać możecie go w http://www.oracle.com/technetwork/articles/java/jf14-nashorn-2126515.html , to jest super proste do zrobienia.

Chyba że to ma być biblioteka w sensie np: javove maven dependency które includujesz i bach działa, jakoś ?

**P.S co to wgl znaczy to szeregowanie ? to znaczy że A ma zostać pobrane przed B czy A ma się WYKONAĆ przez B ? Bo to definitywnie zmienia postać problemu. Bo nawet jak A zostanie pobrane przed B, to na maszynie A może odpalić się GC, może być networki delay i fizycznie ta wiadomośc dojdzie albo wykona się później **

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