Создание динамического шлюза API с помощью OpenResty

Nginx
apigateway.jpg

Во-первых, что такое шлюз API?

Как показано выше, шлюз API действует как единая точка входа для всех клиентов.

Преимущества использования API-шлюза:

  • Убедитесь, что клиент не знает, как приложение разделено на несколько микросервисов.
  • Убедитесь, что на клиента не влияет расположение экземпляра службы.
  • Предоставляем оптимальный API для каждого клиента.
  • Сократите количество запросов/обратных передач. Например, шлюз API гарантирует, что клиент извлекает данные из нескольких служб за один цикл. Меньшее количество запросов означает, что рабочая нагрузка ниже, а пользовательский опыт лучше. Шлюз API необходим для мобильных приложений.
  • Преобразование логики вызова нескольких служб от клиента к вызову из шлюза API упрощает весь клиент.

Что такое OpenResty?

"OpenResty is not an Nginx fork. It is just a software bundle"
То есть Openresty — это программный пакет на основе Nginx, который содержит различные доступные библиотеки, перейдите по ссылкеawesome-resty
OpenResty

Как сделать его динамичным?

При обнаружении службы используется следующееConsul

NININX NORMAL Использование в качестве шлюза API требует конфигурации, когда задний конец экземпляра плюс, о перезагрузке Nginx, чтобы вступить в силу

upstream test {
    server 192.168.0.1;
    server 192.168.0.2;
}

Тогда все в порядке, пока восходящий поток становится динамически программируемым.При добавлении экземпляра бэкэнда он вступит в силу автоматически без перезагрузки.

Код ссылки

  1. Слардар, который снова стреляет в облака, ps: Tucao о названии "Сларда"... Не слишком ли много играет эта Дота?
  2. Модуль Weibo nginx-upsync

В следующем модуле nginx-upsync можно установить каждые n секунд синхронизацию kv или Service в Consul

http {
    upstream test {
        # fake server otherwise ngx_http_upstream will report error when startup
        server 127.0.0.1:11111;

        # all backend server will pull from consul when startup and will delete fake server
        upsync 127.0.0.1:8500/v1/kv/upstreams/test upsync_timeout=6m upsync_interval=500ms upsync_type=consul strong_dependency=off;
        upsync_dump_path /usr/local/nginx/conf/servers/servers_test.conf;
    }

    upstream bar {
        server 127.0.0.1:8090 weight=1 fail_timeout=10 max_fails=3;
    }

    server {
        listen 8080;

        location = /proxy_test {
            proxy_pass http://test;
        }

        location = /bar {
            proxy_pass http://bar;
        }

        location = /upstream_show {
            upstream_show;
        }

    }
}

Наконец, разработка OpenResty основана на lua или C, и с помощью lua относительно легко разрабатывать высокопроизводительные сервисы.Фрагменты кода, включенные в следующие ссылки, используют openresty для объединения нескольких серверных запросов на получение/отправку.
Используйте openresty для объединения нескольких внутренних запросов API.