[RASSUS] 2. laboratorijska vježba - 2021/2022
tata
štae ovo brt
ruza0001
NISAM ASISTENT izivljavanje nakon MI da pozelimo ispite opet da se odmorimo od labosa 😆
PiqueBlinders
je li itko skuzio kako se na windowsu + spring mogu brisati poruke na nekom topicu kada recimo ponovno pokrenem aplikaciju. Znaci prvi put pokrenem imam 4 START poruke koje pošalje kooordinator i onda kad ponovno pokrenem apk te poruke ostanu, a ja bi htio da se izbrisu. uspjeva mi kada odem preko terminala izbrisati direktno u kafki/zookeeper ali bi htio nekako iz springa
netko_tamo
zisku obrises direktorij koji si definirao u zookeeper.properties(dataDir) i pokrenes sve ispocetka i trebali bi topici biti cisti, al ak bas oces direkt kroz aplikaciju to ne znam i mislim da cak i nije moguce jer to jednostavno nije smisao kafke, ona je dizajnirana da šalje stream poruka, a ne da svako može brisat podatke ko ima informacije o nazivu topica, tak da ostaje ovo brisanje direktorija i tjt 😃
burek
Jel može netko tko je shvatio kaj treba objasniti logiku ovoga? Ne znam jesam skroz skužila kaj se treba, kolko sam ja shvatila imamo upravljački čvor koji je zapravo samo kafka producer, i imamo čvorove za senzore koji su istovremeno consumeri i produceri i u pozadini razmjenjuju očitanja, jel to ispravno?
RogerRoger
burek tako sam ja skužio. Što meni ne ide u glavu je kako ovo organizirati, u smislu što ide u zasebni thread?
burek
RogerRoger pa ja sam mislila u mainu pozvati producera čisto da se registrira, consumera za topic register i dohvatiti sve info o čvorovima, pokrenuti u zasebnom threadu taj udp dio razmjene i onda samo imati u mainu petlju koja poll-a topic command i ako dođe stop ugasiti worker thread, nez jel to ok kak su oni zamislili
RogerRoger
burek tako sam i ja zasad napravio. Mislila si stvoriti jedan thread koji šalje i jedan koji prima očitanja, uprosječuje ih i ispisuje, ili sve u isti?
burek
RogerRoger yep svaki zasebno za server,client i uprosjecivanje bi trebalo
laranotreallycroft
Možemo mijenjati ovaj njihov stupidUDPClient? Ne vidim kako bi mogli dobro očitati podatke ako se šalju jedan po jedan byte unordered. Kako bi onda uopće mogli slati i skalarne i vektorske oznake vremena?
ruza0001
laranotreallycroft ma mozemo sigurno to je samo predlozak da nam pomognu malo vj
WickyWinslow
laranotreallycroft Ja nisam imao problem sa slanjem podataka ako sam serializirao objekt koji zelim slati. Kod deserijalizacije jedino treba paziti lenght koji vrati udp paket jer se ne napuni cijeli buffer byte[] koji mu predas i velicinu tog buffera da stane cijeli serijalizirani objekt.
Serializiranjem mozes gurnuti sve u neku klasu uljucujuci te nesretne oznake vremena.
WickyWinslow
Zna li netko kako integrirati oba tipa vremenskih oznaka u ovaj labos? Pretpostavljam da je bitno jedino da se koriste kod ispisa ocitanja u zadnjih 5 min ali na koji način to napraviti?
Kako koristiti sortirati očitanja za ovaj problem?
laranotreallycroft
WickyWinslow
na kraju sam samo promjenila da ne šalje jedan byte nego da koliko ih treba pošalje odjednom. Mislim da je to skroz ok po ovom kaj sam pročitala na netu jer nisu veliki paketi.
WickyWinslow
Ja sam to vjerojatno zakomplicirala al ovak:
SortedMap<Long, Integer> scalarTime; – <vrijeme,vrijednost>
SortedMap<Map<Integer, Integer>, Integer> vectorTime; – <skup parova <id,count>,vrijednost>
Onda sam to kroz milijun raznih threadova i referenci držala u glavnoj klasi senzora i dodavala u njih svaki put kad je nešto poslano/stiglo.
Za vectorTime SortedMap sam napisala Comparator pa da se automatski sortira odma kod unosa.
WickyWinslow
Karlovsky120 Ne znam ništa za treći labos osim da su spomenuli docker da će kao biti ali za ovaj sada trebaš se spojiti na kafka broker port (default je 9092) osim ako nisi drugacije naveo u server.properties. Tradicionalno se za administraciju kafke koriste komandno linijski alati kao sto je vjerojatno navedeno u quickstartu ili neki GUI koji se ili placa ili neka free verzija koju treba nadodati. UDP se koristi za komunikaciju između nodeova (gdje kafke nije bitna). Za oznake vremena nemam blage.
RogerRoger
Vjerojatno glupo pitanje, ali kako implementirati primanje potvrde?
socket.receive() je blokirajuća metoda i ako nakon slanja paketa server ostavim da čeka potvrdu, a potvrda se izgubi negdje u mreži, neće li on čekati beskonačno dugo?
laranotreallycroft
RogerRoger
ja sam stavila i za primanje i slanje potvrde da se pokreće u novom threadu pa ne blokira
RogerRoger
laranotreallycroft da, ali blokira thread, što ne?
Imaš thread za slanje svog očitanja ostalim senzorima, kad pošalje paket s očitanjem, stvori novi thread koji čeka potvrdu (jesam dobro shvatio?), ali taj novi thread može zapeti beskonačno dugo ako se potvrda izgubila u mreži.
Metoda receive() nema nikakav timeout parametar, a po defaultu je na socketu postavljeno na inf (blokiranje bez timeouta).
ruza0001
Karlovsky120 ja ni pokrenut nemogu jer ne koristim windows, a ofc da su upute samo za to napisali…
in1
rozy Možeš preko dockera, installiraš docker i pratiš ovo: https://developer.confluent.io/quickstart/kafka-docker/. Prva 3 koraka su bitna.
ruza0001
imam vec docker tako da jako najs, hvala tii