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ł?
Golang
Jak zorganizowano miękką rezerwację sald (soft hold) z końcową weryfikacją przy potwierdzeniu rezerwacji?
Fasada korzysta z 10 usług wewnętrznych (każda 100-300 ms) oraz z globalnej usługi w Chinach (500 ms), łączny czas odpowiedzi wynosi około 3,5 sekundy. Jak rozwiązałbyś ten problem, aby przyspieszyć przetwarzanie?
Czy na wejściu miałeś jeden serwis-gateway, z którym komunikowali się wszyscy partnerzy (B2B)? W ilu instancjach on działał?
Czy masz pytania do kolegi?
Jak zrobić, żeby w ogóle nie iść do serwisu, który na pewno się zawali lub będzie niedostępny?
Czy Redis przechowywał dane wyłącznie w pamięci, czy był fallback na dysk? Co się stanie, jeśli Redis się zawiesi?
Czy boisz się śledzenia czasu? Dlaczego?
Jeśli masz duże zadanie, na przykład plik o rozmiarze 10 GB z ustawieniami linia po linii, i musisz przetworzyć każdą linię (np. postawić kropkę na końcu), czy goroutines pomogłyby przyspieszyć tę pracę?
Ile centrów danych miałeś: jedno czy kilka?
Ile kanałów byłoby potrzebnych do zorganizowania tego mechanizmu, jeśli używa się kanałów do zbierania wyników od usług?
W języku Go istnieją goroutines — lekkie wątki. Czy możesz wyjaśnić, jak rozumiesz, kiedy należy używać goroutine, a kiedy nie?
Jak obliczano RPS — po prostu sumowałeś obciążenie wszystkich dźwigni, czy jak?
Jak zaimplementowałeś atomowość zapisu w Redis? Jakiego algorytmu użyłeś (skrypt Lua)?
Jeśli wykonujesz synchroniczne zapytanie do bazy danych lub sąsiedniej usługi, a zapytanie trwa 5 sekund, co się stanie z wątkiem systemu operacyjnego, na którym uruchomiona jest usługa, podczas gdy zapytanie jest wykonywane?
Jak zidentyfikować wąskie gardło podczas przetwarzania pliku — jeśli przetwarzanie linia po linii wydaje się wolne, a goroutines przetwarzają w pętli?
Co byś przesłał w tym kanale (jaką strukturę danych)?
Czy usługa po prostu udostępniała dane z pamięci podręcznej, czy wykonywała jeszcze jakąś logikę?
Może warto zacząć używać goroutine, aby zwiększyć prędkość, na przykład dziesięciokrotnie przy użyciu dziesięciu goroutine?
Mówiłeś, że masz usługę, która słucha Kafka i aktualizuje cache w Redis, prawda?