Kredyty: Wektor technologii stworzony przez pikisuperstar — www.freepik.com

Jako programi?ci cz?sto znajdowaliby?my si? w sytuacjach, w których mamy co? zbudowa?, ale nie mamy wystarczaj?cego czasu, aby rozwija? si? w sposób, który by?my chcieli. I nie zawsze mo?emy przesuwa? terminy, poniewa? ? czas na rynek ” czasami odgrywa kluczow? rol? w sukcesie produktu. Wi?c co robimy? Idziemy na skróty, podejmujemy wykalkulowane ryzyko, odpuszczamy w tobie puryst? (najlepsze praktyki, zasi?g testów jednostkowych i bla bla bla). My?l?, ?e dla wi?kszo?ci z was by?oby to strasznie podobne.

Dzisiejsza historia jest o tym, jak zbudowali?my wysok? skal? , odporny na uszkodzenia , Distributed System Liderów / Scoring, w oko?o jednego tygodnia czasu w zespole trzyosobowym.

Na tym blogu b?d? przede wszystkim te wiadra nauki

  1. Techniczne : Jak faktycznie zbudowa? taki system, nale?y omówi? takie tematy, jak projektowanie systemu rozproszonego, skalowalno??, odporno??, dost?pno??.
  2. Praca z czasem : jak dostarczasz produkty w krótkim czasie, jakiego rodzaju kompromis dokonujesz, jak szybciej podejmowa? decyzje.
  3. Cykl ?ycia rozwoju : mo?esz równie? zajrze? do cyklu ?ycia rozwoju produktu, jak wygl?da tworzenie dobrego oprogramowania.

Rozdzia? 1: Wymagania

Wszystko zacz??o si?, gdy nasz zespó? produktowy og?osi?, ?e nadchodzi sezon pucharu ?wiata T20 i chcemy stworzy? system quizów dla naszych u?ytkowników, aby przewidywa? krótkoterminowe.

Przypadek u?ycia polega? na tym, ?e na pocz?tku przekroczenia u?ytkownicy byli proszeni o przewidzenie scenariusza, na który mieliby 20/30 sekund. A na koniec moderator przeka?e, co si? w?a?ciwie wydarzy?o w?ród wszystkich przewidywanych scenariuszy. A punktacja b?dzie dzia?a? w oparciu o to, kto odpowiedzia? poprawnie i ile czasu zaj??o udzielenie odpowiedzi.

Tak wi?c natychmiast po otrzymaniu wymagania oszacowali?my nak?ad pracy, który wyra?nie nie pasowa? do naszego bud?etu, wi?c wyci?li?my funkcje, które mogliby?my pomin?? w wersji 0. Jest to wa?ne, poniewa? w krótkim terminie mo?esz chcie? udost?pni? mniej funkcji ni? rozdawanie niedopracowanych funkcji.

B?dzie to przede wszystkim blog skoncentrowany na backendzie, przepraszam, ?e nie b?d? w stanie wyja?ni?, jak powsta?y te pi?kne interfejsy u?ytkownika.

Rozdzia? 2: Projekt

Nast?pnym krokiem by?o oczywi?cie zaprojektowanie systemu, który jest popularnie znany jako projekt wysokiego poziomu. To by?a dla mnie najtrudniejsza cz???, a tak?e najzabawniejsza. Nie zajmowali?my si? rozbudowanym projektowaniem niskopoziomowym i wykonywali?my wszystkie zadania zwi?zane z modelowaniem na bie??co podczas wdra?ania.

Krok 1: Oszacowanie skali

Przed rozpocz?ciem czegokolwiek oszacowali?my, jaki rodzaj ruchu na nas uderzy. Bior?c pod uwag? skal? naszego systemu, oszacowali?my, ?e w quizie zaanga?uje si? oko?o 50 tys. osób. Postawili?my wi?c na kompilacj? dla 100 tys . u?ytkowników. Ale wi?kszo?? ludzi prawdopodobnie odpowiedzia?aby w ci?gu pierwszych 10 sekund w 30-sekundowym oknie. Co w przybli?eniu daje nam docelowy qps na poziomie 20 tys.

Moja zasada jest taka, ?e ??dla nowego systemu zawsze projektuj system dla dwukrotnie wi?kszej liczby oczekiwanych u?ytkowników. Tak wi?c w przypadku, gdy masz wi?cej u?ytkowników, Twój system nie przestaje si? skalowa?. A u?ytkownicy zazwyczaj rosn? z czasem, wi?c nie musisz ci?gle zmienia? systemu. Ale to nie znaczy, ?e umieszczasz infrastruktur? dwukrotnie wi?ksz? ni? faktycznie wymagana. Przewa?nie mia?bym w??czone autoskalowanie w moich systemach, wi?c za ka?dym razem, gdy wyst?puj? skoki ruchu, system skaluje si? sam.

(Wykonali?my równie? inne szacunki dotycz?ce przechowywania w pami?ci podr?cznej, ale pomin?li?my je, aby artyku? by? krótki)

Krok 2: Identyfikacja API o du?ej skali

Szacowanie po skali szybko zidentyfikowali?my, jakie s? API o du?ej skali i gdzie przetwarzanie mo?e by? wysokie, aby?my mogli selektywnie wykona? dla nich skalowalny projekt. Reszta niskoskalowych interfejsów API, o które nie dbali?my i nie sp?dzali?my du?o czasu.

To s? interfejsy API o du?ej skali, które zidentyfikowali?my

  1. Uzyskaj wynik u?ytkownika i pozycj?
  2. Uzyskaj tabel? wyników
  3. Oblicz tabel? wyników (g?ównie przetwarzanie danych, nie API)
  4. Opublikuj odpowied? u?ytkownika

Krok 3: Rozwa?ania projektowe

Zaraz po obejrzeniu wymagania dwie rzeczy by?y dla mnie bardzo oczywiste.

  1. B?dziemy potrzebowa? przetwarzania asynchronicznego i rozproszonego do obliczania wyników i tabel wyników z najbardziej oczywistych powodów. Je?li planujesz synchroniczne obliczanie wyniku na jednym w??le dla 1 miliona u?ytkowników lub wi?cej, ?ycz? ci szcz??cia ??. Pomys? jest prosty, dzielimy du?e zadanie na mniejsze i uruchamiamy je w ró?nych w?z?ach i pozwalamy im robi? to we w?asnym tempie. A tak?e chcemy, aby ten proces by? odporny na b??dy .
  2. Cache b?dzie naszym przyjacielem, je?li chodzi o odczytywanie rankingów u?ytkowników i rankingów. Przede wszystkim z dwóch powodów, szybko?ci i ?atwo?ci skalowania . Pami?? podr?czna jest znacznie szybsza ni? DB w przypadku prostych operacji odczytu i ogólnie ?atwiej jest skalowa? klaster Redis/Memcached/Hazelcast ni? Postgres .

Krok 4: Zaprojektuj system

Podejmuj?c tym razem decyzje projektowe, zdecydowa?em si? skorzysta? z technologii, które zna?em i nie chcia?em ryzykowa? znalezienia najlepszej technologii dla tego przypadku u?ycia. Na przyk?ad zna?em Redisa , wi?c w przypadku pami?ci podr?cznej by? to oczywisty wybór. Równie? za ka?dym razem, gdy s?ysz? tabel? wyników, automatycznie przek?ada si? ona na posortowane zestawy Redis w moim umy?le. A je?li chodzi o przetwarzanie asynchroniczne, Kafka nadal pozostaje moim wyborem numer jeden. Maj?c odpowiedni czas, prawdopodobnie wykona?bym troch? wi?cej eksploracji, ale tym razem nie zamierza?em w?drowa? po dzikich terenach w poszukiwaniu najlepszej technologii, poniewa? nie mia?em CZASU!!!!

a. API odpowiedzi u?ytkownika na post

Tak wi?c ten interfejs API umo?liwi? naszym u?ytkownikom przesy?anie odpowiedzi do quizu. G?ównym wyzwaniem tutaj by?o wygenerowanie wielu jednoczesnych operacji zapisu , co znacznie zwi?kszy obci??enie naszej bazy danych. Musieli?my wi?c zrobi? dwie rzeczy

  1. Zmniejsz obci??enie DB
  2. Wygeneruj pewnego rodzaju ci?nienie wsteczne lub pozwól operatorom DB pracowa? we w?asnym tempie, aby DB nie by? przyt?oczony

Moim rozwi?zaniem goto do zmniejszania obci??enia zapisu jest wykonywanie operacji wsadowych . Wi?c gdybym mia? wykona? 10 operacji zapisu, wykona?bym je wsadowo, aby uzyska? pojedyncze zapytanie, a nast?pnie uruchomi?bym operacj? zapisu 1 DB.

A ci?nienie wsteczne prawie krzyczy w kolejce wiadomo?ci .

??cz?c oba, rozwi?zanie, które wymy?lili?my, jest takie…

Nie panikuj, pozwól, ?e wyja?ni?, co si? dzieje

  1. Odpowiedzi u?ytkownika s? odbierane przez odbiornik odpowiedzi i zwracany jest kod stanu 202 HTTP. To tak, jakby powiedzie?, ?e dosta?em twoj? pro?b? i zamierzam j? przetworzy?, ale ty id? dalej i rób to, co robi?e?. Jest to pierwszy krok w przetwarzaniu asynchronicznym, w którym nie blokujemy dzwoni?cego.
  2. Odbiornik odpowiedzi umieszcza odpowied? u?ytkownika w kolejce komunikatów, która jest ponownie podzielona na partycje w celu skalowalno?ci/dost?pno?ci/nadmiarowo?ci . Partycjonowanie mo?na ?atwo zrozumie?, je?li znasz ju? Kafk?. Je?li tego nie zrobisz, po prostu rozwa? to jako sposób na dystrybucj? wiadomo?ci z kolejki do wielu mniejszych, odizolowanych kolejek, które technicznie mog? znajdowa? si? w ró?nych w?z?ach. Je?li znasz sharding DB, to jest to to samo, ale g?ównie dla kolejek wiadomo?ci. Zapraszam do przeczytania wi?cej o Kafce tutaj .
  3. Teraz te nieprzetworzone odpowiedzi s? odbierane przez system wsadowy. Nast?pnie tworzy partie 10 wiadomo?ci i przekazuje je do nast?pnego etapu przetwarzania.
  4. Zapisuj?cy bazy danych pobiera partie i tworzy zapytania wstawiania do bazy danych. Przeciwci?nienie jest wprowadzane g?ównie przez autora DB, który odbiera wiadomo?ci we w?asnym tempie, poniewa? konsument wiadomo?ci by? oparty na ?ci?ganiu . W ten sposób zapobiegamy przeci??eniu DB. A poniewa? dzia?a na partiach, zamiast uruchamia? 100 zapytań DB, uruchomili?my tylko 10 zapytań DB.

To rozwi?zuje 30% naszego problemu, przejd?my do nast?pnego.

b. Obliczanie wyniku i tablicy wyników

Teraz s?oń w pokoju, g?ówny problem, obliczanie tabeli liderów. Je?li widzisz ten system, nie przypomina on tradycyjnego systemu quizów, w którym wcze?niej znamy prawid?ow? odpowied?. Wi?c tak naprawd? nie mo?emy obliczy? wyników i tabeli liderów, gdy tylko kto? odpowie. Po przes?aniu poprawnych odpowiedzi przez moderatora musimy obliczy? wynik i pozycj? wszystkich u?ytkowników. A wi?c kawa? pracy za jednym zamachem. Do?? oczywiste, ?e ani nasze w?z?y, ani nasz serwer bazy danych nie s? w stanie obs?u?y? tego prawid?owo podczas synchronizacjimoda. Wi?c co robimy? Wracamy do naszych zaprzyja?nionych kolejek wiadomo?ci w celu ponownego przetwarzania asynchronicznego. Fajnie, wi?c mo?emy obliczy? wyniki asynchronicznie, ale co z tabel? liderów? To musi by? dost?pne przez ca?y czas, prawda? A co z rang?? Dopóki i dopóki nie zostan? obliczone wyniki dla wszystkich u?ytkowników, tak naprawd? nie mo?na umieszcza? rang, prawda? A konkretnie obliczenie rangi mo?e by? trudnym problemem.

Kto nas od tego uratuje? Nie martw si?, przyjacielu, pami?tasz, ?e wspomnia?em krótko o Redis, mówi?c o pami?ci podr?cznej? Maj? pi?kn? rzecz o nazwie posortowany zestaw (co za niesamowita kreacja, dzi?kuj? Redis Labs ??). W posortowanym zestawie mo?esz doda? klucze z punktacj?, a Redis uporz?dkuje je odpowiednio w O(log(N)) . To rozwi??e nasz problem z rankingiem ??. Pozwala nam równie? na uruchamianie zapytań zakresowych, takich jak danie mi top 5 lub uzyskanie mi rangi dla okre?lonego klucza, a wszystko to dzieje si? w O(log(N)). To jest dok?adnie to, czego tutaj potrzebujemy.

Elementy s? dodawane do tablicy mieszaj?cej mapuj?cej obiekty Redis na wyniki. W tym samym czasie elementy s? dodawane do listy pomijania mapuj?cej wyniki do obiektów Redis (wi?c obiekty s? sortowane wed?ug wyników w tym ?widoku”) — Posortowane elementy wewn?trzne zestawu

Bammmmmm problem z tabel? liderów równie? zosta? rozwi?zany.

W porz?dku, to nie jest ?atwe, po prostu cieszy?em si?, ?e szybko uda?o mi si? znale?? praktyczne rozwi?zanie. Wró?my teraz do naszej deski kre?larskiej.

Wygl?da troch? onie?mielaj?co, nie? Pozwól mi wyja?ni?

  1. Gdy tylko moderator prze?le poprawn? odpowied?, zostanie wys?any komunikat wyzwalaj?cy obliczanie wyniku, który ma uruchomi? ca?y potok przetwarzania .
  2. System wsadowy otrzymuje komunikat wyzwalaj?cy i generuje par? obiektów przesuni?cia DB i limitu w zale?no?ci od tego, ile osób odpowiedzia?o poprawnie. Na przyk?ad, je?li 10 osób odpowiedzia?o poprawnie, a wielko?? partii to 5, to wygenerowa?yby dwa obiekty (partie). Partia 1 {przesuni?cie: 0, ograniczenie: 5}, partia 2 {przesuni?cie: 5, ograniczenie 5}. Dlaczego to robimy? Aby?my mogli uruchomi? przetwarzanie wsadowe lub uruchomi? zapytania do bazy danych podzielone na strony i nie wywo?ywa? bazy danych bez ?adnych ograniczeń. Wi?c gdybym mia? zdoby? milion p?yt z DB, a zrobi? to za jednym zamachem, spowodowa?oby to wiele problemów w wielu miejscach. Wi?c dzielimy to na mniejsze cz??ci i uruchamiamy mniejsze, ale wielokrotne zapytania, które zwróc? mniejsz? liczb? wierszy.
  3. Procesor wsadowy u?ytkownika otrzyma teraz te komunikaty wsadowe i b?dzie odpowiednio uruchamia? zapytania bazy danych. Procesor, który otrzyma wiadomo?? {offset: 0, limit: 5}, otrzyma pierwszych 5 identyfikatorów u?ytkowników z bazy danych (wykona równie? inn? operacj? wsadow?, ale jest to troch? trudne do wyja?nienia, wi?c pomijam). A potem po?egnamy si? z przetwarzaniem wsadowym i przechodzimy na przetwarzanie strumieniowe . Poniewa? procesor wsadowy umie?ci teraz 5 identyfikatorów u?ytkowników w kolejce, która zostanie przetworzona przez nast?pny procesor.
  4. Teraz kalkulator punktacji u?ytkowników otrzymuje indywidualne identyfikatory u?ytkowników, uruchamia logik? punktacji w celu obliczenia punktów poszczególnych u?ytkowników. Nast?pnie wykonaj 1 aktualizacj? bazy danych, aby zmodyfikowa? wynik u?ytkownika. Nast?pnie aktualizuje wynik dla tego konkretnego u?ytkownika w posortowanym zestawie, a Redis wewn?trznie przypisuje lub aktualizuje rang?. A po zakończeniu tego etapu b?dziemy mie? wyniki wszystkich u?ytkowników w naszej bazie danych i ranking + wynik wszystkich u?ytkowników w naszym Redisie. A poniewa? mamy rang? wszystkich w posortowanym zestawie, mo?emy po prostu uruchomi? na nim zapytanie o zakres, aby uzyska? ranking z niesamowit? szybko?ci? .

Wi?kszo?? naszego problemu zosta?a ju? rozwi?zana, poniewa? aby uzyska? wynik u?ytkownika i pozycj?, mogliby?my po prostu wykona? zapytanie Redis i nie dotrze? do bazy danych. A to sprawia, ?e ??nasze czasy reakcji równie? s? szybkie .

Na tym kończy si? g?ówna faza projektowania. By?y te? DB, projektowanie API i inne rzeczy, które tutaj pomijam.

Rozdzia? 4: Wdro?enie

Ukończenie projektu rozwi?za?o 70% naszych problemów i wiedzieli?my, ?e mo?emy to rozwi?za?, wi?c szybko rzucili?my si? na rozwój.

W idealnym ?wiecie chcia?bym stworzy? now? us?ug?, wypróbowa? nowy j?zyk, taki jak Go , dla lepszego i szybszego przetwarzania równoleg?ego i innych rzeczy. Ale bior?c pod uwag? o? czasu, nie by?o to w?a?ciwe. Pozostali?my przy naszej podstawowej us?udze NodeJS i umie?cili?my tam wszystko. Pury?ci mikroserwisów mog? straci? to po zobaczeniu tego o?wiadczenia, ale w wy?cigu z czasem twoi zleceniodawcy musz? czasami zaj?? tylne miejsce. W?ród wielu kompromisów by?a to jedna z g?ównych rozmów telefonicznych, które odebrali?my.

Poza tym musieli?my te? ograniczy? testy jednostkowe i integracyjne , których wina wci?? nas prze?laduje. Ale stopniowo wycofujemy testy po premierze.

My?l?, ?e po obejrzeniu szczegó?owego projektu zamieszczonego powy?ej powiniene? by? w stanie zaimplementowa? w?asny, dlatego tym razem nie b?d? robi? g??bokiego nurkowania ??

Rozdzia? 5: Wdra?anie i monitorowanie

Po kilku poprawkach b??dów i podpisaniu kontroli jako?ci byli?my gotowi do pracy. Dobrze wykonana praca? Nie, mój przyjacielu, wci?? musieli?my ustawi? ci??ki monitoring dla tego kawa?ka. Poniewa? zosta? opracowany w bardzo krótkim czasie, przynajmniej by?em troch? niepewny siebie. Domy?lnie w??czyli?my ?ledzenie w tej us?udze za po?rednictwem LightStep . Wi?c oprócz ?ladów skonfigurowa?em dedykowane monitorowanie ruchu, wska?niki b??dów, panele kontrolne opó?nień, alerty dla wszystkich interfejsów API. Po uruchomieniu, ja i moi koledzy z zespo?u, otrzymali?my telefon i monitorowali?my system przez co najmniej godzin?, od wykorzystania pami?ci RAM i procesora po dzienniki b??dów . Dlatego zawsze przypisuj równ? wag? obserwowalno?cia tak?e monitorowanie. Wyst?pi?y drobne problemy w systemie produkcyjnym i mogli?my je wykry? wcze?nie tylko dzi?ki monitoringowi.

Rozdzia? 6: Retrospektywa

System dzia?a, ale po chwili wytchnienia wa?ne jest, aby zrobi? retrospekcj? i zidentyfikowa? rzeczy, które przegapili?my, i nad nimi popracowa?. Jestem pewien, ?e przegapili?my mnóstwo rzeczy, poszli?my na skróty i uzyskali?my ogromny zakres ulepszeń. Na przyk?ad oto kilka…

Rzeczy, które mogliby?my zrobi? lepiej

  1. Wykorzystali?my do tego istniej?c? ju? baz? Postgres DB, poniewa? sterownik, ORM i infrastruktura wspieraj?ca ju? tam by?y. Ale prawdopodobnie zg??bi?bym nieco rozwi?zania bazodanowe.
  2. NodeJS jest niesamowity, ale my?l?, ?e Go by?oby do tego lepszym rozwi?zaniem. Mogli?my to zbada?.
  3. Próbowa?em napisa? zapytanie, aby obliczy? wynik tylko w DB, i nie powiod?em si?. Prawdopodobnie móg?bym to napisa? i móg?bym równie? wykona? przetwarzanie wsadowe do obliczania wyników, jeszcze bardziej redukuj?c operacje DB.
  4. Nie mogli?my przeprowadzi? rozbudowanych testów obci??enia i wydajno?ci, co jest konieczno?ci?.
  5. Mogliby?my napisa? dwa ró?ne etapy aktualizacji wyniku DB i aktualizacji posortowanego zestawu Redis, co by?oby czystsz? implementacj?.

Notatki po?egnalne

W tak krótkim czasie zrobili?my wszystko, co w naszej mocy. Nawet realizacja nieco odbiega?a od pierwotnego projektu. Ale wszystko w porz?dku, kompromisy b?d? stale istnie?. Mimo ?e ukończyli?my podstawow? funkcjonalno?? w oko?o tydzień, by?y ma?e poprawki, które musieli?my opublikowa?.

Mam nadziej?, ?e uda?o Ci si? dzisiaj dowiedzie? czego? o projektowaniu systemów i tworzeniu oprogramowania ??

Kredyty

Pozdrowienia dla moich wspania?ych kolegów z dru?yny, Akash Raj i Aashirwad Kashyap , wszyscy pracowali?my razem, aby zbudowa? to w oko?o tydzień.

Dzi?kuje za przeczytanie!

Jestem Aritra Das, jestem programist? i bardzo lubi? budowa? z?o?one systemy rozproszone. Zapraszam do kontaktu ze mn? na Linkedin lub Twitterze w sprawach zwi?zanych z technologi?.

Mi?ej nauki…

Suggested posts

6 g?ównych atutów deweloperów z Europy Wschodniej

6 g?ównych atutów deweloperów z Europy Wschodniej

Zrozumie?, dlaczego zagraniczne firmy poszukuj? programistów z Rosji, Ukrainy i Bia?orusi Od ponad 6 lat zarz?dzam Rocketech Software Development z partnerem z siedzib? w Singapurze i w pe?ni rozproszonym zespo?em. Rozwijamy produkty IT oraz rozwijamy dwa formaty us?ug: outstaff i Dedicated Team.

Ksi??ki Pythona w sprzeda?y 25 listopada

Wczesne oferty na Czarny pi?tek z pragmatycznej pó?ki na ksi??ki

Ksi??ki Pythona w sprzeda?y 25 listopada

Pisz lepszy, intuicyjny i bardziej niezawodny kod w Pythonie. Od praktycznych projektów sprz?towych po analityk? danych, Pragmatic Bookshelf zapewnia Ci 40% zni?ki na wszystkie tytu?y Pythona podczas naszego wydarzenia Black Friday Early Bird! Kup nast?puj?ce e-booki, aby odebra? swoje oszcz?dno?ci: Uwaga: kod promocyjny turkeysale2021 jest wa?ny do 29 listopada 2021 r. w przypadku e-booków na stronie Pragmatic Bookshelf.

Related posts

Jak wyostrzy? kiepsk? pami??

I zachowaj wszystko, co przeczyta?e?.

Jak wyostrzy? kiepsk? pami??

Wyobra? sobie, ?e nastoletni ch?opak przychodzi na rowerze do sklepu spo?ywczego, parkuje rower przed sklepem, wchodzi, kupuje to, czego potrzebuje, a potem wraca do domu zupe?nie zapominaj?c o swoim rowerze. Nie tylko to, ale te? nie przychodzi mu do g?owy, ?e zostawi? swój rower przed sklepem a? do nast?pnego dnia.

Moc GPT-3

Kompleksowy raport tymczasowy z moich dotychczasowych badań GPT-3. B?dzie na bie??co aktualizowany.

Moc GPT-3

Wreszcie! GPT-3 bez listy oczekuj?cych. Tak, dobrze przeczyta?e?.

Uwagi na temat wellness

Wellness jest dla mojego pokolenia tym, czym dieta by?a w latach 90-tych, a kokaina w latach 80-tych, pe?na wszelkiego rodzaju nowych i szczerze mówi?c wyczerpuj?cych sposobów na to. Jako osoba, która dorasta?a w tym samym czasie, co media spo?eczno?ciowe, prze?y?em wiele jego faz.

?led? swoje kroki dziecka — jakie inspiruj?ce dzia?ania podejmujesz dzisiaj?

?led? swoje kroki dziecka — jakie inspiruj?ce dzia?ania podejmujesz dzisiaj?

?led? swoje ma?e kroki Zdanie utkwi?o w hipnotyzuj?cej otch?ani mojego umys?u: ?Je?li nie zapisujesz wyniku, sk?d wiesz, ?e wygrywasz?” Kiedy to us?ysza?em, moja ?wiadomo??, pod?wiadomo?? i pod?wiadomo?? tańczy?y i imprezowa?y, jakby ?wiat w?a?nie mi si? ukaza?. Je?li NIE zachowam wyniku, sk?d do cholery mam wiedzie?, ?e przynajmniej robi? post?py? Odpowied? brzmi NIE.

MORE COOL STUFF

Czy trener koszykówki Duke Blue Devils Mike Krzyzewski jest ?onaty?

Czy trener koszykówki Duke Blue Devils Mike Krzyzewski jest ?onaty?

Odej?cie Mike'a Krzy?ewskiego z koszykówki Duke'a pod koniec bie??cego sezonu da mu wi?cej czasu z ?on? i rodzin?.

Jak wysoki jest Nicholas Braun z ?Sukcesji”?

Jak wysoki jest Nicholas Braun z ?Sukcesji”?

Fani ?Sukcesji” nie mog? nie zauwa?y? niezwykle wysokiego wzrostu Grega, znanego równie? jako Nicholas Braun. Czy naprawd? góruje nad cz?onkami obsady?

?Kobieta-pionierka” Ree Drummond Przystawki na ?wi?to Dzi?kczynienia na sezon ?wi?teczny 2021

?Kobieta-pionierka” Ree Drummond Przystawki na ?wi?to Dzi?kczynienia na sezon ?wi?teczny 2021

Pionierka Ree Drummond jest tutaj, aby przygotowa? Ci? na ?wi?to Dzi?kczynienia. Oto niektóre z jej najlepszych przystawek.

?90-dniowy narzeczony”: aktualizacja statusu zwi?zku Mike’a Youngquista jako oddzielonej ?ony Natalie flirtuje w ??yciu samotnym”

?90-dniowy narzeczony”: aktualizacja statusu zwi?zku Mike’a Youngquista jako oddzielonej ?ony Natalie flirtuje w ??yciu samotnym”

Natalie jest w programie ?90 Day: The Single Life”, ale co robi Mike Youngquist? Oto, co wiemy o obecnym stanie zwi?zku Mike'a.

Wypróbuj nasz? mini krzy?ówk?

Wypróbuj nasz? mini krzy?ówk?

Nasza mini-krzy?ówka, aktualizowana co tydzień, ??czy nasze ulubione teksty HowStuffWorks z pomys?owymi wskazówkami!

Co dzia?a najlepiej: saszetki na pranie, detergenty w proszku czy w p?ynie?

Co dzia?a najlepiej: saszetki na pranie, detergenty w proszku czy w p?ynie?

Robienie prania jest wystarczaj?co z?e, bez martwienia si? o wybór odpowiedniego detergentu. Wi?c co jest najlepsze? Czy to w ogóle ma znaczenie?

Prawdziwa historia niebieskich ludzi z Kentucky

Prawdziwa historia niebieskich ludzi z Kentucky

Rodziny Fugates i Combs w wiejskim stanie Kentucky przegra?y genetyczn? loteri?, obie mia?y rzadk? cech? recesywn?, która sprawia?a, ?e ??ich skóra wygl?da?a na niebiesk? podczas ma??eństw. Jaka by?a tego przyczyna? A co si? sta?o z rodzinami?

Czy ?narodziny dziewicy” kondora kalifornijskiego mog? uratowa? gatunek?

Czy ?narodziny dziewicy” kondora kalifornijskiego mog? uratowa? gatunek?

W ramach programu ratowania kondora kalifornijskiego przed wygini?ciem wychowuje si? dwa piskl?ta p?ci m?skiej bez ojców. Jak mo?liwe s? takie ?dziewicze” narodziny?

Oto encyklopedia wszystkich odniesień do popkultury w tym sezonie Ricka i Morty'ego

Oto encyklopedia wszystkich odniesień do popkultury w tym sezonie Ricka i Morty'ego

Zdj?cie: Rick And Morty Rick And Morty to program, który upaja si? odniesieniami do popkultury. Pomimo tego, ?e rozgrywa si? w multiwersum, w którym mo?e si? zdarzy? jakakolwiek szalona przygoda science-fiction, jest to program, który odmawia udawania, ?e ??inne programy telewizyjne i filmy nie istniej? lub ?e publiczno?? nie jest ich hiper-?wiadoma przez ca?y czas.

Jakie s? szanse, ?e obca megastruktura blokuje ?wiat?o z odleg?ej gwiazdy?

Jakie s? szanse, ?e obca megastruktura blokuje ?wiat?o z odleg?ej gwiazdy?

Dziwna gwiazda znajduj?ca si? 1500 lat ?wietlnych od Ziemi wykazuje dziwne migotanie, co prowadzi niektórych naukowców do spekulacji, ?e obca megastruktura blokuje ?wiat?o. Ale czym dok?adnie by?aby taka struktura i jakie jest prawdopodobieństwo, ?e teleskop kosmiczny Keplera rzeczywi?cie j? zauwa?y?? W tej chwili gwiazda KIC 8462852 jest naprawd? gor?ca - i to nie tylko dlatego, ?e jest gwiazd? typu F - ale dlatego, ?e teleskop odkry?, ?e migocze w bardzo nietypowy sposób, jakby co? go przes?ania?o.

Najdro?szy korytarz ?wiata znajduje si? pod Nowym Jorkiem

Najdro?szy korytarz ?wiata znajduje si? pod Nowym Jorkiem

Wyobra? sobie chodzenie po pieni?dzach. (Zdj?cie: Noel Y.

Will Smith, orki i elfy mafii: to drugi zwiastun najwi?kszej produkcji w historii Netflix

Will Smith, orki i elfy mafii: to drugi zwiastun najwi?kszej produkcji w historii Netflix

Kilka miesi?cy temu Netflix wypu?ci? pierwszy zwiastun Bright, najbardziej ambitnej produkcji sieci, której bohaterem by? Will Smith. Teraz mo?emy cz??ciowo potwierdzi? to, co widzieli?my na pierwszym podgl?dzie: fantastyczny film ci?ty jest rzadszy, ni? my?leli?my.

Cardi B i córka Offset Kulture pokazuj? pi?kne nowe warkocze na Instagramie

Cardi B i córka Offset Kulture pokazuj? pi?kne nowe warkocze na Instagramie

Trzyletnia córka Cardi B i Offset, Kulture, pokaza?a swoj? now? fryzur? z warkocza na Instagramie.

Selena Gomez ca?uje Car? Delevingne w policzek za Kiss Cam w Knicks Game

Selena Gomez ca?uje Car? Delevingne w policzek za Kiss Cam w Knicks Game

?Jest taka zabawna i jest po prostu niezwykle ??dna przygód”, powiedzia?a wcze?niej Selena Gomez o kumpel Cara Delevingne.

Madonna pije gin z butelki w swojej si?owni: ?Dzisiejszy trening”

Madonna pije gin z butelki w swojej si?owni: ?Dzisiejszy trening”

Piosenkarka postanowi?a w czwartek zmieni? swoj? rutyn? fitness

Jamie Dornan mówi Henry'emu Cavillowi, ?e straci? rol? Supermana i zwróci? si? do Marvela o rol? superbohatera

Jamie Dornan mówi Henry'emu Cavillowi, ?e straci? rol? Supermana i zwróci? si? do Marvela o rol? superbohatera

Jamie Dornan ujawni?, ?e wzi?? udzia? w przes?uchaniu do roli Supermana, ale przegra? z Henrym Cavillem; i rozmawia? z Marvelem o do??czeniu do MCU.

Languages

野花在线观看免费观看大全-野花视频在线观看免费观看8
国足最新出线概率0.08% 北京冬奥火炬宣传片获金花环奖 速度与激情9 得知母亲出事男子在地铁痛哭 国足战澳大利亚大名单:4归化在列 周冠宇成为中国首位F1车手 安娜贝尔 尚气与十环传奇 胡锡进谈中美元首会晤 红色通缉令 尚气与十环传奇 印度首都准备封城 房价上涨城市创七年新低 拐点来了? 24岁救人牺牲消防员获批为烈士 扫黑风暴 我要我们在一起 意大利错失直接晋级世界杯资格 中美元首会谈重点内容 中国共产党第三个历史决议全文发布 灵媒 意大利错失直接晋级世界杯资格 俄方回应卫星碎片危及国际空间站 中美元首是否达成新共识?中方回应 男子写80页PPT拯救爱情却离婚 动保组织向上饶信州区申请信息公开 许家印为恒大注入超70亿续命资金 动保组织向上饶信州区申请信息公开 千与千寻 意大利错失直接晋级世界杯资格 两个女人 浦发银行回应近3亿存款莫名被质押 罗永浩吐槽苹果文案没文化 大连现超级传播者26人在同一传播链 扫黑风暴 安娜贝尔 中美元首会谈重点内容 长津湖 图兰朵 24岁救人牺牲消防员获批为烈士 房价上涨城市创七年新低 拐点来了? 五个扑水的少年 大连一密接者擅自点外卖聚餐被调查 男子写80页PPT拯救爱情却离婚 #耿直真香哥黑化卖惨# 动保组织向上饶信州区申请信息公开 扫黑风暴 失控玩家 扫黑风暴 许家印为恒大注入超70亿续命资金 外交部回应拜登重申不支持台独 加拿大一枝黄花到底是什么? 中国医生 男子体检血中抽出2升油浆 红色通缉令 大连现超级传播者26人在同一传播链 国际人士热议中共十九届六中全会 俄方回应卫星碎片危及国际空间站 怒火·重案 得知母亲出事男子在地铁痛哭 嘉南传 中美元首是否达成新共识?中方回应 浦发银行回应近3亿存款莫名被质押 斗破苍穹 蜘蛛侠:英雄归来 扫黑风暴 林丹世界排名被正式移除 男子体检血中抽出2升油浆 大连现超级传播者26人在同一传播链 扫黑风暴 林丹世界排名被正式移除 国足战澳大利亚大名单:4归化在列
武川县| 新丰县| 黔西| 遂昌县| 鄂州市| 凉山| 临安市| 社旗县| 鹤山市| 桐柏县| 大化| 乐东| 潜江市| 德州市| 乐东| 肇庆市| 饶河县| 阜平县| 高雄县| 莱西市| 虹口区| 天柱县| 泰宁县| 惠东县|