Wyświetlasz dokumentację Apigee Edge.
Przejdź do
dokumentacji Apigee X. info
Edge Microgateway w wersji 2.4.x
Odbiorcy
Ten temat jest przeznaczony dla operatorów Edge Microgateway, którzy chcą korzystać z istniejących wtyczek, które są zainstalowane razem z mikrobramą. Omówiono w nim też szczegółowo wtyczki do ograniczania nagłych wzrostów ruchu i limitów (obie są dostępne w ramach instalacji). Jeśli jesteś deweloperem, który chce tworzyć nowe wtyczki, zapoznaj się z artykułem Tworzenie wtyczek niestandardowych.
Co to jest wtyczka Edge Microgateway?
Wtyczka to moduł Node.js, który dodaje funkcje do Edge Microgateway. Moduły wtyczek mają spójny wzorzec i są przechowywane w lokalizacji znanej Edge Microgateway, co umożliwia mikrobramie automatyczne wykrywanie i wczytywanie tych modułów. Edge Microgateway zawiera kilka istniejących wtyczek. Możesz też tworzyć wtyczki niestandardowe, jak opisano w artykule Tworzenie wtyczek niestandardowych.
Istniejące wtyczki dołączone do Edge Microgateway
Podczas instalacji Edge Microgateway jest dostarczanych kilka istniejących wtyczek. Obejmują one:
| Wtyczka | Ta opcja jest domyślnie włączona. | Opis |
|---|---|---|
| Analytics | Tak | Wysyła dane Analytics z Edge Microgateway do Apigee Edge. |
| OAuth | Tak | Dodaje do Edge Microgateway weryfikację tokena OAuth i klucza interfejsu API. Zobacz Konfigurowanie Edge Microgateway. |
| Limit | Nie | Wymusza limity żądań do Edge Microgateway. Do przechowywania limitów i zarządzania nimi używa Apigee Edge the quotas. Zobacz Korzystanie z wtyczki limitu. |
| Ograniczanie nagłych wzrostów ruchu | Nie | Chroni przed nagłymi wzrostami ruchu i atakami DoS. Zobacz Korzystanie z wtyczki ograniczania nagłych wzrostów ruchu. |
| Nagłówek-wielkie litery | Nie | Przykładowy serwer proxy z komentarzami, który ma pomóc deweloperom w pisaniu wtyczek niestandardowych. Zobacz Edge Microgateway sample plugin. |
| Gromadzenie żądań | Nie | Gromadzi dane żądań w jednym obiekcie przed przekazaniem ich do następnego modułu obsługi w łańcuchu wtyczek. Przydatne do pisania wtyczek przekształcających, które muszą działać na jednym, zgromadzonym obiekcie treści żądania. |
| Gromadzenie odpowiedzi | Nie | Gromadzi dane odpowiedzi w jednym obiekcie przed przekazaniem ich do następnego modułu obsługi w łańcuchu wtyczek. Przydatne do pisania wtyczek przekształcających, które muszą działać na jednym, zgromadzonym obiekcie treści odpowiedzi. |
| Przekształcanie-wielkie litery | Nie | Przekształca dane żądania lub odpowiedzi. Ta wtyczka stanowi przykład najlepszej praktyki implementacji wtyczki przekształcającej. Przykładowa wtyczka wykonuje proste przekształcenie (konwertuje dane żądania lub odpowiedzi na wielkie litery), ale można ją łatwo dostosować do wykonywania innych rodzajów przekształceń, np. XML na JSON. |
| JSON2XML | Nie | Przekształca dane żądania lub odpowiedzi na podstawie nagłówków Accept lub Content-Type. Szczegółowe informacje znajdziesz w dokumentacji wtyczki na GitHubie. |
| Limit-pamięć | Nie | Wymusza limity żądań do Edge Microgateway. Przechowuje limity i zarządza nimi w pamięci lokalnej. |
| Healthcheck | Nie | Zwraca informacje o procesie Edge Microgateway – wykorzystaniu pamięci, wykorzystaniu procesora itp. Aby użyć wtyczki, wywołaj adres URL /healthcheck w instancji Edge Microgateway. Ta wtyczka ma być przykładem, którego możesz użyć do zaimplementowania własnej wtyczki sprawdzającej stan. |
Gdzie znaleźć istniejące wtyczki
Istniejące wtyczki dołączone do Edge Microgateway znajdują się tutaj,
gdzie [prefix] to katalog prefiksu npm.
Zobacz Gdzie
jest zainstalowana Edge Microgateway.
[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins
Dodawanie i konfigurowanie wtyczek
Aby dodać i skonfigurować wtyczki, wykonaj te czynności:
- Zatrzymaj Edge Microgateway.
- Otwórz plik konfiguracji Edge Microgateway. Szczegółowe informacje znajdziesz w artykule Wprowadzanie zmian w konfiguracji opcji.
- Dodaj wtyczkę do elementu
plugins:sequencew pliku konfiguracji, w ten sposób. Wtyczki są wykonywane w kolejności, w jakiej występują na tej liście.
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: info dir: /var/tmp stats_log_interval: 60 plugins: dir: ../plugins sequence: - oauth - plugin-name
- Skonfiguruj wtyczkę. Niektóre wtyczki mają opcjonalne parametry, które możesz skonfigurować w pliku konfiguracji. Możesz na przykład dodać ten fragment, aby skonfigurować wtyczkę ograniczania nagłych wzrostów ruchu. Więcej informacji znajdziesz w artykule Korzystanie z wtyczki ograniczania nagłych wzrostów ruchu.
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: info dir: /var/tmp stats_log_interval: 60 plugins: dir: ../plugins sequence: - oauth - spikearrest spikearrest: timeUnit: minute allow: 10
- Zapisz plik.
- Uruchom ponownie lub przeładuj Edge Microgateway w zależności od tego, który plik konfiguracji został edytowany, jak opisano w Wprowadzanie zmian w konfiguracji.
Konfiguracja specyficzna dla wtyczki
Możesz zastąpić parametry wtyczki określone w pliku konfiguracji, tworząc konfigurację specyficzną dla wtyczki w tym katalogu:
[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins/config
gdzie [prefix] to katalog prefiksu npm.
Zobacz Gdzie
jest zainstalowana Edge Microgateway.
plugins/<plugin_name>/config/default.yaml. Możesz na przykład umieścić ten
blok w plugins/spikearrest/config/default.yaml, a zastąpi on wszystkie inne ustawienia konfiguracji.
spikearrest: timeUnit: hour allow: 10000 buffersize: 0
Korzystanie z wtyczki ograniczania nagłych wzrostów ruchu
W tej sekcji omówimy wtyczkę ograniczania nagłych wzrostów ruchu.
O ograniczaniu nagłych wzrostów ruchu
Ograniczanie nagłych wzrostów ruchu chroni przed nagłymi wzrostami ruchu. Ogranicza liczbę żądań przetwarzanych przez instancję Edge Microgateway. Więcej informacji znajdziesz w artykule Jak działa ograniczanie nagłych wzrostów ruchu?. Zobacz też Jaka jest różnica między ograniczaniem nagłych wzrostów ruchu a limitami?.
Dodawanie wtyczki ograniczania nagłych wzrostów ruchu
Podstawowe czynności, które należy wykonać w przypadku każdej wtyczki, znajdziesz w artykule Dodawanie i konfigurowanie wtyczek.
Przykładowa konfiguracja ograniczania nagłych wzrostów ruchu
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: info dir: /var/tmp stats_log_interval: 60 plugins: dir: ../plugins sequence: - oauth - spikearrest spikearrest: timeUnit: minute allow: 10 bufferSize: 5
Opcje konfiguracji ograniczania nagłych wzrostów ruchu
- timeUnit: jak często resetuje się okno wykonywania ograniczania nagłych wzrostów ruchu. Prawidłowe wartości to second lub minute.
- allow: maksymalna liczba żądań dozwolonych w czasie timeUnit.
- bufferSize: (opcjonalnie, domyślnie = 0) jeśli bufferSize > 0, ograniczanie nagłych wzrostów ruchu przechowuje tę liczbę żądań w buforze. Gdy tylko pojawi się następne „okno” wykonywania, żądania w buforze zostaną przetworzone w pierwszej kolejności. Zobacz też Dodawanie a bufora.
Jak działa ograniczanie nagłych wzrostów ruchu?
Ograniczanie nagłych wzrostów ruchu to sposób na ogólną ochronę przed nagłymi wzrostami ruchu, a nie na sposób na ograniczenie ruchu do określonej liczby żądań. Twoje interfejsy API i backend mogą obsługiwać określoną ilość ruchu, a zasada ograniczania nagłych wzrostów ruchu pomaga w wygładzaniu ruchu do ogólnych ilości które chcesz osiągnąć.
Działanie ograniczania nagłych wzrostów ruchu w czasie działania różni się od tego, co można by się spodziewać po dosłownych wartościach na minutę lub na sekundę.
Załóżmy na przykład, że określisz limit 30 żądań na minutę w ten sposób:
spikearrest: timeUnit: minute allow: 30
Podczas testowania możesz sądzić, że możesz wysłać 30 żądań w ciągu 1 sekundy, o ile zostaną one wysłane w ciągu minuty. Jednak zasada nie wymusza tego ustawienia w ten sposób. Jeśli się nad tym zastanowisz, 30 żądań w ciągu 1 sekundy można w niektórych środowiskach uznać za mini-wzrost.
Co się wtedy dzieje? Aby zapobiec nagłym wzrostom ruchu, ograniczanie nagłych wzrostów ruchu wygładza dozwolony ruch, dzieląc ustawienia na mniejsze przedziały:
Limity na minutę
Limity na minutę są wygładzane do przedziałów dozwolonych żądań w sekundach. Na przykład 30 żądań na minutę jest wygładzane w ten sposób:
60 sekund (1 minuta) / 30 = 2-sekundowe przedziały, czyli około 1 żądanie dozwolone co 2 sekundy. A Drugie żądanie w ciągu 2 sekund zakończy się niepowodzeniem. Nie powiedzie się też 31. żądanie w ciągu minuty.
Limity na sekundę
Limity na sekundę są wygładzane do przedziałów dozwolonych żądań w milisekundach. Na przykład, 10 żądań na sekundę jest wygładzane w ten sposób:
1000 milisekund (1 sekunda) / 10 = 100-milisekundowe przedziały, czyli około 1 żądanie dozwolone co 100 milisekund . Drugie żądanie w ciągu 100 ms zakończy się niepowodzeniem. Nie powiedzie się też 11. żądanie w ciągu sekundy.
Gdy limit zostanie przekroczony
Jeśli liczba żądań przekroczy limit w określonym przedziale czasu, ograniczanie nagłych wzrostów ruchu zwróci ten komunikat o błędzie ze stanem HTTP 503:
{"error": "spike arrest policy violated"}Dodawanie bufora
Możesz dodać do zasady bufor. Załóżmy, że ustawisz bufor na 10. Zobaczysz, że interfejs API nie zwraca od razu błędu, gdy przekroczysz limit ograniczania nagłych wzrostów ruchu. Zamiast tego żądania są buforowane (do określonej liczby), a żądania w buforze są przetwarzane, gdy tylko będzie dostępne następne odpowiednie okno wykonywania. Domyślna wartość bufferSize to 0.
Korzystanie z wtyczki limitu
W tej sekcji omówimy wtyczkę limitu.
Informacje o wtyczce limitu
Limit określa liczbę wiadomości z żądaniami, które aplikacja może wysłać do interfejsu API w ciągu godziny, dnia, tygodnia lub miesiąca. Gdy aplikacja osiągnie limit, kolejne wywołania interfejsu API zostaną odrzucone. Zobacz też Jaka jest różnica między ograniczaniem nagłych wzrostów ruchu a limitami?.
Dodawanie wtyczki limitu
Podstawowe czynności, które należy wykonać w przypadku każdej wtyczki, znajdziesz w artykule Dodawanie i konfigurowanie wtyczek.
Konfiguracja usługi w Apigee Edge
Limity konfigurujesz w interfejsie Apigee Edge, w którym konfigurujesz usługi API. Musisz wiedzieć która usługa zawiera serwer proxy obsługujący mikrobramę, który chcesz ograniczyć limitem. Tę usługę należy dodać do aplikacji dewelopera. Gdy wykonujesz wywołania interfejsu API uwierzytelniane za pomocą kluczy w aplikacji dewelopera, limit zostanie zastosowany do tych wywołań.
- Zaloguj się na konto organizacji Apigee Edge.
- W interfejsie Edge otwórz usługę powiązaną z serwerem proxy obsługującym mikrobramę, do którego
chcesz zastosować limit.
- W interfejsie wybierz Usługi w menu Publikuj.
- Otwórz usługę zawierającą interfejs API, do którego chcesz zastosować limit.
- Kliknij Edytuj.
- W polu Limit określ interwał limitu. Na przykład 100 żądań co
minutę. Lub 50 000 żądań co 2 godziny.

- Kliknij Zapisz.
- Upewnij się, że usługa jest dodana do aplikacji dewelopera. Będziesz potrzebować kluczy z tej aplikacji, aby wykonywać uwierzytelnione wywołania interfejsu API.
Przykładowa konfiguracja limitu
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: info dir: /var/tmp stats_log_interval: 60 plugins: dir: ../plugins sequence: - oauth - quota
Opcje konfiguracji limitu
W przypadku wtyczki limitu nie ma dodatkowych opcji konfiguracji.
Testowanie wtyczki limitu
Gdy limit zostanie przekroczony, do klienta zostanie zwrócony stan HTTP 403 wraz z tym komunikatem:
{"error": "exceeded quota"}Jaka jest różnica między ograniczaniem nagłych wzrostów ruchu a limitami?
Ważne jest, aby wybrać odpowiednie narzędzie do danego zadania. Zasady limitów konfigurują liczbę wiadomości z żądaniami, które aplikacja kliencka może wysłać do interfejsu API w ciągu godziny, dnia, tygodnia lub miesiąca. Zasada limitów wymusza limity wykorzystania w aplikacjach klienckich, utrzymując rozproszony licznik, który zlicza przychodzące żądania.
Zasady limitów używaj do egzekwowania umów handlowych lub umów SLA z deweloperami i partnerami, a nie do operacyjnego zarządzania ruchem. Limit może być na przykład używany do ograniczania ruchu w przypadku bezpłatnej usługi, a jednocześnie do zapewniania pełnego dostępu płacącym klientom. Zobacz też Korzystanie z wtyczki limitu.
Ograniczanie nagłych wzrostów ruchu służy do ochrony przed nagłymi wzrostami ruchu w interfejsie API. Ograniczanie nagłych wzrostów ruchu jest zwykle używane do zapobiegania możliwym atakom DDoS lub innym złośliwym atakom.