Koledzy programiści, jak byście zaimplementowali mechanizm piorunowania (plusowania) taki jak na Hejto/Wykopie? Wiadomo, pesimistic (albo lepiej optimistic) locking, ale tak, żeby to było maksymalnie wydajne. Zmiany nie muszą być od razu widoczne (powiedzmy max 5 sekund), ale nie można zgubic żadnego pioruna ani zapisać go podwójnie. Zapraszam do dyskusji
#programowanie
114cd054-5ad7-4b0d-8481-a3e3a963e564
LM7812

@roxton o nie z nami te numery. Nie będzie hejto 2,0 xD

roxton

@LM7812 Wiadomo, jak już ogarnę piorunowanie to reszta pójdzie z górki xD

patolog

@roxton zamiast zapisywać do bazy to niech takie zdarzenie zaplusowania idzie na kolejkę i jakieś oddzielny mikroserwis niech to sobie ściąga w swoim tempie

satrix321

@patolog no dobra, a teraz powiedzmy dam komuś pioruna i odświeżę stronę; kolejka została już przetworzona? Jeżeli nie to potencjalnie mógłbym dać drugiego pioruna do tego samego wpisu? Jak rozwiązać taki case?

patolog

@satrix321 jeśli została już przetworzona to oczywiscie stan na bazie odzwierciedla przydzielenie pioruna więc oczywiście blokujesz to na gui. Jeżeli twój event na kolejce nie został przetworzony to rzeczywiście ja bazie nie ma ciebie w piorunujących więc gui ci na to pozwoli z tym wyjątkiem że serwis ściągający z kolejki powinien posiadać logikę niepozwalające na zapiorunowanie więcej niż raz danego wpisu

Solidly

@satrix321 prosta deduplikacja na poziomie eventów, która może się odbywać w serwisie ściągającym eventy z kolejki albo nawet w samej kolejce. Nie problem wymyślić stabilne id pioruna

badfunkydog

@roxton Najlepiej zrobić osobny mikrofrontend w którym byłby komponent z piorunem. Do microfrontend shell dajesz serwis do którego subskrybujesz każdym mikrofrontendem i filtrujesz każde kliknięcie przez rx.js


Na backendzie robisz osobny mikroserwis do liczenia błyskawic, podłączasz go do MongoDB z którego potem dane są przepisywane do MySQL każdego dnia o północy.


Do niczego nie piszesz testów, bo to tylko pioruny.


Na koniec wystawiasz fakturę za miesiąc ciężkiej pracy i bierzesz chorobowe.

gribos

@roxton tak jak pisał @patolog dobrym rozwiązaniem jest po kliknięciu na piorun podbicie go na froncie i zablokowanie przez js a od strony backendu wrzucić żądanie na kolejke nie wiem czym dysponujecie czy to kafka czy rabbit czy inne cuda. jeden mikroserwisik podpina subscribera na dany topic w kolejce i wszystko powinno śmigać. Pozwoli to też łatwiej skalować przez odpalenie większej ilości subscriberów jeśli jeden nie będzie wyrabiać z ilością danych w kolejce.

Zaloguj się aby komentować