Korzystanie z wtyczek

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:

  1. Zatrzymaj Edge Microgateway.
  2. Otwórz plik konfiguracji Edge Microgateway. Szczegółowe informacje znajdziesz w artykule Wprowadzanie zmian w konfiguracji opcji.
  3. Dodaj wtyczkę do elementu plugins:sequence w 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
  1. 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
  1. Zapisz plik.
  2. 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ń.

  1. Zaloguj się na konto organizacji Apigee Edge.
  2. W interfejsie Edge otwórz usługę powiązaną z serwerem proxy obsługującym mikrobramę, do którego chcesz zastosować limit.
    1. W interfejsie wybierz Usługi w menu Publikuj.
    2. Otwórz usługę zawierającą interfejs API, do którego chcesz zastosować limit.
    3. Kliknij Edytuj.
    4. W polu Limit określ interwał limitu. Na przykład 100 żądań co minutę. Lub 50 000 żądań co 2 godziny.

  1. Kliknij Zapisz.
  2. 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.