Smart Placement przyspiesza działanie aplikacji, przenosząc kod w pobliże zaplecza — nie jest wymagana konfiguracja
Ten wpis jest również dostępny w English, Español, 日本語, 한국어, 繁體中文, 简体中文, Português i Русский.

Wszyscy doświadczyliśmy frustracji związanej z wolno ładującymi się witrynami internetowymi lub aplikacjami, które wydają się blokować, gdy muszą wywołać interfejs API w celu pobrania aktualizacji. coś krótszego niż natychmiastowe, a Twój umysł błądzi do czegoś innego...
Jednym ze sposobów na przyspieszenie pracy jest przybliżenie zasobów jak najbliżej użytkownika — to właśnie robi firma Cloudflare w zakresie mocy obliczeniowych, przekraczając milisekundy mniej niż większość populacji na świecie. Jednak, jakkolwiek może się to wydawać sprzeczne z intuicją, czasami zbliżenie mocy obliczeniowej do użytkownika może w rzeczywistości spowolnić aplikacje. Jeśli Twoja aplikacja musi łączyć się z interfejsami API, bazami danych lub innymi zasobami, które nie znajdują się w pobliżu użytkownika końcowego, bardziej wydajne może być uruchomienie aplikacji w pobliżu zasobów zamiast użytkownika.
Dlatego dzisiaj mamy przyjemność ogłosić, że rozwiązania Smart Placement for Workers i Pages Functions przyspieszą każdą interakcję. Dzięki Smart Placement Cloudflare przenosi przetwarzanie bezserwerowe do superchmury, przenosząc zasoby obliczeniowe w optymalne lokalizacje w celu przyspieszenia aplikacji. Najlepsze jest to, że jest całkowicie zautomatyzowana, bez żadnych dodatkowych danych (takich jak budzący grozę „region”).
Usługa Smart Placement jest teraz dostępna, w otwartej wersji beta, dla wszystkich klientów Workers i Pages!
Obejrzyj naszą prezentację, jak działa inteligentne rozmieszczanie!
Zmiana bezserwerowe
Sieć Anycast Cloudflare jest stworzona do natychmiastowego przetwarzania żądań,blisko użytkownika. Dlatego jesteś programistą i dlatego właśnie Cloudflare Workers, nasza oferta bezserwerowe obliczeniowej, jest tak przekonująca. Konkurenci są ograniczeni przez „regiony”, podczas gdy Workers biegną wszędzie — stąd mamy jeden region: Ziemię. Żądania obsługiwane w całości przez Workers mogą być przetwarzane od razu, bez konieczności docierania do serwer pochodzenia.
Chociaż początkowo uważano, że ta koncepcja bezserwerowe działania dotyczy lekkich zadań, w ostatnich latach nastąpiła zmiana. Jest ona wykorzystywana do zastąpienia tradycyjnej architektury, która opiera się na serwerach pochodzenia i infrastrukturze samozarządzającej, zamiast tylko ją rozszerzać. Obserwujemy coraz więcej takich przypadków użycia w przypadku użytkowników Workers i Pages.
Bezserwerowy stan potrzeb
W związku z przechodzeniem do modelu bezserwerowe i budowaniem całych aplikacji na platformie Workers pojawiła się potrzeba danych. Przechowywanie informacji o wcześniejszych działaniach i zdarzeniach umożliwia budowanie spersonalizowanych, interaktywnych aplikacji. Załóżmy, że musisz tworzyć profile użytkowników, zapisywać stronę, którą użytkownik przerwał, które kody SKU użytkownik ma w koszyku – wszystko to jest przypisywane do punktów danych używanych do utrzymywania stanu. Usługi zaplecza, takie jak relacyjne bazy danych, magazyny kluczwartość, magazyny blobów i interfejsy API, umożliwiają tworzenie aplikacji stanowych.
Cloudflare przetwarzanie + pamięć masowa: potężny duet
Mamy nasz własny, rosnący pakiet ofert w zakresie pamięci masowej: Workers KV, Durable Objects, D1, R2. Podczas dojrzewania naszych produktów związanych z danymi starannie zastanawiamy się nad ich interakcjami z Workers , abyś nie musiał tego robić! Na przykład innym podejściem, które w niektórych przypadkach zapewnia lepszą wydajność, jest przenoszenie magazynu zamiast przetwarzania blisko użytkowników. Jeśli używasz Durable Objects do tworzenia gry w czasie rzeczywistym, możemy przenieść Durable Objects , aby zminimalizować opóźnienie dla wszystkich użytkowników.
Chcemy, aby na przyszły stan użytkownik ustawił tryb = "smart",a my ocenimy optymalne rozmieszczenie wszystkich Twoich zasobów bez konieczności dodatkowej konfiguracji.
Cloudflare + {backendService}USD
Obecnie głównym przypadkiem użycia Smart Placement jest korzystanie z usług innych niż Cloudflare, takich jak zewnętrzne bazy danych lub interfejsy API innych firm.
Wiele usług zaplecza, niezależnie od tego, czy są to usługi z własnym hostingiem, czy usługi zarządzane, jest scentralizowanych, co oznacza, że dane są przechowywane i zarządzane w jednym miejscu. Twoi użytkownicy są globalni, a Workers działają globalnie, ale zaplecze jest scentralizowane.
Jeśli Twój kod wysyła wiele żądań do Twoich usług zaplecza, mogą one wiele razy przemierzać świat, mając na uwadze wydajność. Niektóre usługi oferują replikację i zapisywanie w zapisywanie w pamięci podręcznej , co pomaga poprawić wydajność, ale wiąże się również z kompromisami, takimi jak spójność danych i wyższe koszty, które należy rozważyć w odniesieniu do Twojego przypadku użycia.

Sieć sieć Cloudflare ~50 ms, docierając do 95% światowej populacji połączonej z Internetem. Stawiamy na głowie, ale jesteśmy również bardzo bliscy komunikowania się z Twoimi usługami zaplecza.
Wydajność aplikacji zależy od doświadczenie użytkownika
Aby zrozumieć, jak przeniesienie mocy obliczeniowej do usług zaplecza mogłoby zmniejszyć opóźnienie aplikacji, zapoznajmy się z przykładem:
Załóżmy, że masz użytkownika w Sydney w Australii, który uzyskuje dostęp do aplikacji działającej na platformie Workers. Ta aplikacja wykonuje trzy podróże w obie strony do bazy danych znajdującej się we Frankfurcie w Niemczech, aby obsłużyć żądanie użytkownika.

Intuicyjnie można odgadnąć, że wąskim gardłem będzie czas, przez który pracownik wykonuje wielokrotne podróże po sieci do Twojej bazy danych. Zamiast tego, że proces Worker jest wywoływany blisko użytkownika, co by było, gdyby był wywoływany w centrum danych znajdującym się najbliżej bazy danych?
Wystawmy to na próbę.
Zmierzyliśmy czas trwania żądania dla pracownika Worker bez Smart Placement i porównaliśmy go z żądaniem z włączoną opcją Smart Placement. W przypadku obu testów wysłaliśmy 3500 żądań z Sydney do platformy Worker, która wykonuje trzy podróże w obie strony do instancji Upstash (warstwa bezpłatna) znajdującej się w eu-central-1 (Frankfurt).

Rezultaty są jasne! W tym przykładzie przeniesienie procesu roboczego do zaplecza poprawiłowydajność aplikacji o 4-8 razy.
Decyzje dotyczące sieci nie powinny być decyzjami ludzkimi
Jako programista powinieneś skupić się na tym, co robisz najlepiej – na budowaniu aplikacji – nie martwiąc się o decyzje sieciowe, które przyspieszą Twoje aplikacje.
Cloudflare ma wyjątkowy uprzywilejowany punkt: nasza sieć gromadzi informacje na temat optymalnych ścieżek między użytkownikami, centrami danych Cloudflare i serwerami zaplecza – mamy w tym zakresie duże doświadczenie z usługą Argo Smart Routing. Smart Placement bierze te czynniki pod uwagę, aby automatycznie umieścić Twoją platformę Worker w najlepszym miejscu, aby zminimalizować całkowity czas trwania żądań.
Jak więc działa Inteligentne rozmieszczanie?
Smart Placement można włączyć dla każdego pracownika na karcie Ustawienia lub w pliku wrangler.toml:
[placement]
mode = "smart"Gdy włączysz funkcję Smart Placement w rozwiązaniu Worker lub Pages Function, algorytm Smart Placement analizuje żądania fetch (znane również jako żądania podrzędne), które wysyłany jest przez platformę Worker w czasie rzeczywistym. Następnie porównuje je z danymi o opóźnienie agregowanymi przez naszą sieć. Jeśli wykryjemy, że Twoja platforma Worker wykonuje średnio więcej niż jedno podżądanie do zasobu zaplecza, zostanie ona automatycznie wywoływana z poziomu optymalnego centrum danych!
Istnieje kilka usług zaplecza, które nie bez powodu nie są uwzględniane przez algorytm Smart Placement:
- Usługi rozproszone globalnie: jeśli usługi, z którymi komunikuje się platforma Worker, są rozproszone geograficznie w wielu regionach, Smart Placement nie jest dobrym rozwiązaniem. Automatycznie wykluczamy je z optymalizacji inteligentnego rozmieszczania.
- Usługi analizy i rejestrowania żądań do usług analizy lub rejestrowania nie muszą znajdować się ścieżką krytyczną Twojej aplikacji. Powinna być używana, aby odpowiedź zwrotna do użytkowników nie była blokowana podczas instrumentacji kodu. Ponieważ
waitUntil()nie wpływa na czas trwania żądania z perspektywy użytkownika, automatycznie wykluczamy usługi analizy/rejestrowania poza optymalizacją Inteligentne rozmieszczenie.
Listę usług nieuwzględnionych w algorytmie Smart Placement można znaleźć w naszej dokumentacji.
Po uruchomieniu inteligentnego rozmieszczania w narzędziu Worker będzie widoczna nowa zakładka Czas trwania żądania. 1% żądań przekierowujemy bez włączonego inteligentnego rozmieszczania, dzięki czemu można sprawdzić jego wpływ na czas trwania żądania.

I owszem, to naprawdę takie proste!
Wypróbuj Smart Placement, zapoznając się z naszą wersją demonstracyjną (to świetna zabawa!). Aby dowiedzieć się więcej, zapoznaj się z naszą dokumentacją dla programistów.
Co dalej z inteligentnym rozmieszczaniem?
Dopiero zaczynamy! Mamy wiele pomysłów, jak możemy ulepszyć Smart Placement:
- pomoc w obliczaniu optymalnej lokalizacji w przypadku, gdy aplikacja korzysta z wielu zapleczy
- Rozmieszczenie precyzyjne (np. jeśli platforma Worker korzysta z wielu zapleczy w zależności od ścieżki. Obliczamy optymalne rozmieszczenie na ścieżkę zamiast na pracowników)
- Wsparcie dla połączeń TCP
Skontaktuj się z nami! Jeśli masz uwagi lub prośby o dodanie funkcji, skontaktuj się z Discord z deweloperami Cloudflare.