Jeśli przyjdzie 1000 równoczesnych żądań, czy powstanie 1000 wątków systemu operacyjnego? Co się stanie z usługą w tym przypadku?
Golang
Istnieje fasada, która agreguje dane z 10 usług, każda odpowiada w 100 ms, co daje około sekundy. Jak rozwiązałbyś ten problem, aby endpoint zwracał dane szybciej?
Czy nadal będziesz korzystać z pozostałych usług po otrzymaniu błędu od pierwszej z 11 usług?
Czy Redis był w jednym centrum danych, i wszyscy się do niego odwoływali?
Na jakiej zasadzie wybierałeś architekturę i granice usług?
Jak rozwiązać problem wyścigu danych, o którym rozmawialiśmy?
Czy Redis był we wszystkich trzech centrach danych?
Jakie mogą być skutki uboczne używania goroutine do przetwarzania pliku, na co trzeba być przygotowanym?
Miałeś trzy centra danych — jak zorganizowano schemat replikacji/awaryjności między nimi?
Czy centra danych były pełnymi kopiami siebie nawzajem, czy się uzupełniały? Po prostu kierowałeś ruch między nimi?
A co jeśli goroutines będą pisać w ten sam wiersz/buffer, czy to jest możliwy problem?
O które pole blokady ci chodzi (doprecyzowanie dotyczące denormalizacji, flaga is_blocked)?
Jak goroutines mogą 'uciec' (wyciek)?
Wydarzenie dociera do pierwszego centrum danych z Kafka, łapiemy je i zapisujemy w Redis. Jak te dane trafiły do wszystkich trzech centrów danych?
Czy istnieją inne sposoby, oprócz kanałów, na organizację pracy z gorutinami?
Napisałeś w CV, że optymalizowałeś zapytania SQL. Jak twoim zdaniem wyglądałby plan wykonania zapytania wybierającego nieblokowanych sprzedawców (EXPLAIN)?
Czy możesz opowiedzieć o algorytmie audytu (weryfikacji danych)? Czy brałeś w nim udział? Jak to przebiegało?
W twoim CV podano 50-80 tysięcy RPS. Jaka to była usługa i co robiła?
Czy mówiłeś o modelu odczytu z Redis? Czy Redis był replikowany między centrami danych?
Jeśli jeden z serwisów, z którego korzystasz, zwróci błąd, co zrobisz i jak to obsłużysz, mając kanał?