2015-08-31 13 views
5

Stackoverflow świętuje 10 milionów pytań. Gratulacje!W jaki sposób wykonuje się 10 milionów pytań na stackoverflow?

dostarczając nam w ten link: https://stackoverflow.com/10m

Istnieją 3 liczniki wyświetlane, a liczba każdego licznika jest szybka i nie zwiększając statyczne.

Jednak nie widzę żadnych żądań AJAX dotyczących wyświetlania ostatniego wyniku każdego licznika.

Mam taki licznik na naszym forum, ale, aby uzyskać liczbę ostatnich postów, wykonuję żądanie AJAX co 3 sekundy, wyświetlając zapytanie SELECT MAX(id) AS total_posts FROM forumposts.

Wiem, że to nie jest najlepsze rozwiązanie, które mamy, i nie będzie ono poprawne, jeśli post zostanie usunięty. Używanie polecenia SELECT COUNT(id) jest zbyt wolne, ponieważ mamy także ponad 10 milionów postów.

Tak, w jaki sposób Stackoverflow wyświetla wzrost swoich liczników bez żadnych żądań? Wydaje mi się, że jest to lepsze rozwiązanie dla mnie i chciałbym go również wykorzystać na naszym forum.

+1

bardziej nadaje się do meta tbh –

+0

Jest kilka podobnych pytań na meta, jak ten http://meta.stackoverflow.com/q/302925/1301076 – rjdown

+0

Zwiększa się w zależności od przeciętnych pytań przesyłanych bez potrzeby zapytania ajaxowego, możesz to sprawdzić monitorując tę ​​stronę http://stackoverflow.com/unanswered – Radi

Odpowiedz

7

Używa websockets. Możesz go zobaczyć na karcie sieci. wss://qa.sockets.stackexchange.com/ Z żądania, wygląda na to, że za każdym razem otrzymuje całkowitą liczbę. enter image description here

Ilość SQL jest sposób powolny biedaka poprawy wydajności będzie śledzić Statystyki siebie tworząc thats tabel śledzi liczba wierszy. Będziesz musiał się upewnić, że aktualizujesz tabelę za każdym razem, gdy usuniesz lub dodasz nowe rekordy. Zanim to zrobisz, zrobić rozeznanie w indeksach oraz następujące pytania

+0

Widziałem to. Czytanie teraz o websockets. Jest to protokół komunikacyjny między serwerem a klientem. Jak myślisz, co jest tłem każdego kontuaru? Czy Stackoverflow naprawdę liczy miliony/miliardy pytań, zmian, głosów i innych danych z bazy danych co milisekundę, aby wysłać prawidłową liczbę? – lickmycode

+0

Zakładam, że statystyki są generowane w oparciu o średnią z ostatnich lat. Żądanie wszystkich tych statystyk z bazy danych co sekundę lub dwie spowodowałoby znaczne zużycie zasobów serwera bez większych zysków. – Rehmat

+0

@lickmycode Oni również nie mogą polegać na db, aby policzyć wszystkie rekordy, mogą mieć tabelę, w której trzymają tylko statystyki. Ale tak naprawdę nie wiemy ... –

Powiązane problemy