Введение в APISIX
Введение в APISIX

Что такое АПИСИКС

Apache APISIXдаApacheОблачное решение в рамках Software FoundationAPIшлюз,Он обладает характеристиками динамичности, работы в реальном времени и высокой производительности.,Он обеспечивает богатые функции управления потоками, такие как балансировка нагрузки, динамический восходящий поток, выпуск оттенков серого (канареечный выпуск), автоматический выключатель Служить, аутентификация личности и наблюдаемость. Apach может использовать APISIX, обрабатывающий данные трафика север-юг, а также трафик. Восток-Запад между службами. в то же время,Он также поддерживает какK8s Ingress Controllerиспользовать。 Схема архитектуры развертывания APISIX показана ниже и включает 3 части: API. Шлюз отвечает за пересылку трафика, etcd отвечает за хранение конфигурации, API Gateway Администратор — это консоль администратора, и все три части полностью поддерживают высокую доступность.

РазвертываниеAPISIX

Следующие операции основаны на последней стабильной ветке APISIX 3.4.1.

APISIX поддерживает несколько способов установки, но наиболее удобным является развертывание с помощью Docker. Поэтому при установкеAPISIXДо,Сначала нужно убедиться, что он установленDockerиDocker Compose。 Официальные шаги установки следующие:

Язык кода:javascript
копировать
# Апач Загрузите образ APISIX Docker локально.
# Здесь вы можете выбрать загрузку указанной версии APISIX, просто выберите указанную ветку.
# Например: вы можете выбрать ветку Release/apisix-3.4.1.
# Загрузка из основной ветки по умолчанию
git clone https://github.com/apache/apisix-docker.git
# Вы также можете скачать его из указанной ветки
git clone -b release/apisix-3.4.1 https://github.com/apache/apisix-docker.git

# Измените текущий каталог на путь apisix-docker/example.
cd apisix-docker/example

# Запустите команду docker-compose, чтобы запустить Apache. APISIX
docker-compose -p docker-apisix up -d
# Соответствующие файлы конфигурации: ./dashboard_conf/conf.yaml и ./apisix_conf/config.yaml.

После завершения установки выполните следующую команду, чтобы убедиться в успешном развертывании APISIX:

Язык кода:javascript
копировать
curl "http://127.0.0.1:9080" --head | grep Server

Если возвращаются данные в следующем формате, APISIX успешно развернут и запущен:

Язык кода:javascript
копировать
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
Server: APISIX/3.4.1  # Выводится информация о версии APISIX.

Полный сервис APISIX будет работать на нескольких портах, из которых наиболее часто используются три:

  • 9000: Рабочий порт фона управления.
  • 9080: порт, используемый клиентом для доступа к маршрутизации.
  • 9180: Порт для выполнения таких операций, как добавление маршрутизации через API управления.

Как упоминалось выше,APISIXОпыт управления работает в9000порт,Адрес доступаhttp://HOST:9000/можно получить доступAPISIXизDashboardстраница,Учетная запись администратора по умолчанию: amdin/admin.

основные понятия

Upstream

Upstreamтакже называется восходящим потоком,Upstream — это абстракция виртуальных хостов.,то есть прикладной уровень Служитьилиузелизабстрактный。 Роль восходящего канала заключается в балансировке нагрузки на сервисные узлы в соответствии с правилами конфигурации, а его адресную информацию можно напрямую настроить на маршрутах или сервисах. Если несколько маршрутов или служб ссылаются на один и тот же восходящий поток, вы можете создать восходящий объект и использовать идентификатор восходящего потока (т. е. upstream_id) в маршруте или услуге для ссылки на восходящий поток, чтобы снизить нагрузку на обслуживание.

Route

Routeтакже известный какмаршрутизация,Это самый простой и основной объект ресурса в APISIX. APISIX может определять правила для соответствия запросам клиентов путем маршрутизации.,Загрузите и выполните соответствующийизплагин,Наконец, запрос перенаправляется в указанную вышестоящую Служить. Маршрутизация в основном состоит из трех частей: правил сопоставления, конфигурации плагина и восходящей информации.

Service

Serviceтакже известный как Служить,Это абстракция определенного типа API (его также можно понимать как абстракцию набора Маршрутов). Обычно он имеет однозначное соответствие с вышестоящей абстракцией Служить.,Между маршрутом и сервисом,в целомдаN:1изсвязь。

Почти все управленческие операции APISIX осуществляются вокруг этих трех.

Практика АПИСИКС

Используйте APISIX следующим образом, чтобы практиковать Опубликовать API, Защитить API, API Диптихи и другие операции.

Опубликовать API

1. Создать апстрим

Язык кода:javascript
копировать
curl "http://127.0.0.1:9180/apisix/admin/upstreams/1" \
-H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1" -X PUT -d '
{
  "type": "roundrobin",
  "nodes": {
    "httpbin.org:80": 1 # Здесь цифра 1 обозначает вес
  }
}'

в пути запросаhttp://127.0.0.1:9180/apisix/admin/upstreams/1серединаизпоследняя часть цифр1Указывает настройкиupstream_idдля1。 Можно найти вnodesУкажите несколько целевых адресов под объектом,Для достижения эффекта балансировки нагрузки.

2.Создать маршрут

Язык кода:javascript
копировать
curl "http://127.0.0.1:9180/apisix/admin/routes/1" \
-H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1" -X PUT -d '
{
  "methods": ["GET"],
  "host": "example.com",
  "uri": "/anything/*",
  "upstream_id": "1" # Укажите upstream_id в маршрутизации
}'

Уведомление: Создайте дополнительные дополнительные шаги выше по течению,Доступно в маршрутизации,добавить вupstreamобъект,Чтобы добиться эффекта сначала создания Upstream, а затем создания Route.

Язык кода:javascript
копировать
curl "http://127.0.0.1:9180/apisix/admin/routes/1" \
-H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1" -X PUT -d '
{
  "methods": ["GET"],
  "host": "example.com",
  "uri": "/anything/*",
  "upstream": {
    "type": "roundrobin",
    "nodes": {
      "httpbin.org:80": 1 
    }
  }
}'

в пути запросаhttp://127.0.0.1:9180/apisix/admin/routes/1серединаизпоследняя часть цифр1Указывает настройкимаршрутизацияidдля1,Используется для уникальной идентификации фрагмента информации о маршрутизации.,Этот идентификатор можно увидеть в фоновом режиме управления.

Конечно, идентификатор маршрутизации также можно указать в теле сообщения запроса:

Язык кода:javascript
копировать
curl -i "http://127.0.0.1:9180/apisix/admin/routes?api_key=edd1c9f034335f136f87ad84b625c8f1" -X PUT -d '
{
  "id": "getting-started-ip", # В теле запроса укажите ID маршрутизации
  "uri": "/ip",
  "upstream": {
    "type": "roundrobin",
    "nodes": {
      "httpbin.org:80": 1
    }
  }
}'

проверять:

Язык кода:javascript
копировать
curl "http://127.0.0.1:9080/ip"

возвращаться:

Язык кода:javascript
копировать
{
  "origin": "172.18.0.1, 124.126.139.14"
}

Кроме того, если при создании маршрута для вышестоящего сервиса указано несколько целевых узлов, клиент будет использовать механизм балансировки нагрузки для доступа к целевому сервису при доступе к API. В следующем примере показано добавление маршрута: при доступе к пути «/headers» механизм опроса будет использоваться для пересылки на «httpbin.org» или «mock.api7.ai».

Язык кода:javascript
копировать
curl -i "http://127.0.0.1:9180/apisix/admin/routes?api_key=edd1c9f034335f136f87ad84b625c8f1" -X PUT -d '
{
  "id": "getting-started-headers", # В теле запроса укажите ID маршрутизации
  "uri": "/headers",
  "upstream" : {
    "type": "roundrobin",
    "nodes": {
      "httpbin.org:443": 1,
      "mock.api7.ai:443": 1
    },
    "pass_host": "node",
    "scheme": "https"
  }
}'

проверять:

Язык кода:javascript
копировать
curl "http://127.0.0.1:9080/headers"

Результаты ответа от «httpbin.org»:

Язык кода:javascript
копировать
{
  "headers": {
    "Accept": "*/*", 
    "Host": "httpbin.org", 
    "User-Agent": "curl/7.61.1", 
    "X-Amzn-Trace-Id": "Root=1-64cf349d-5d3ca35e246ed48c0e7e2b49", 
    "X-Forwarded-Host": "127.0.0.1"
  }
}

Результаты ответа от «mock.api7.ai»:

Язык кода:javascript
копировать
{
  "headers": {
    "accept": "*/*",
    "accept-encoding": "gzip",
    "cf-connecting-ip": "124.126.139.14",
    "cf-ipcountry": "CN",
    "cf-ray": "7f25017fdb898873",
    "cf-visitor": "{\"scheme\":\"https\"}",
    "connection": "Keep-Alive",
    "content-type": "application/json",
    "host": "mock.api7.ai",
    "user-agent": "curl/7.61.1",
    "x-application-owner": "API7.ai",
    "x-forwarded-for": "172.18.0.1",
    "x-forwarded-host": "127.0.0.1",
    "x-forwarded-port": "9080",
    "x-forwarded-proto": "https",
    "x-real-ip": "124.126.139.14",
    "X-Application-Owner": "API7.ai",
    "Content-Type": "application/json"
  }
}

Сгенерируйте 10 запросов для проверки эффекта балансировки нагрузки:

Язык кода:javascript
копировать
hc=$(seq 10 | xargs -i curl "http://127.0.0.1:9080/headers" -sL | grep "httpbin" | wc -l); echo httpbin.org: $hc, mock.api7.ai: $((10 - $hc))

Выход:

Язык кода:javascript
копировать
httpbin.org: 6, mock.api7.ai: 4

3. Тестовый маршрут

После создания маршрута вы можете проверить, является ли маршрут нормальным, выполнив следующую команду:

Язык кода:javascript
копировать
curl -i -X GET "http://127.0.0.1:9080/anything/get?foo1=bar1&foo2=bar2" -H "Host: example.com"

возвращаться:

Язык кода:javascript
копировать
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 462
Connection: keep-alive
Date: Mon, 07 Aug 2023 02:22:28 GMT
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
Server: APISIX/3.4.1

{
  "args": {
    "foo1": "bar1", 
    "foo2": "bar2"
  }, 
  "data": "", 
  "files": {}, 
  "form": {}, 
  "headers": {
    "Accept": "*/*", 
    "Host": "example.com", 
    "User-Agent": "curl/7.61.1", 
    "X-Amzn-Trace-Id": "Root=1-64d05564-2f4a04cc40f5806822c53bb6", 
    "X-Forwarded-Host": "example.com"
  }, 
  "json": null, 
  "method": "GET", 
  "origin": "172.18.0.1, 124.126.139.14", 
  "url": "http://example.com/anything/get?foo1=bar1&foo2=bar2"
}

Защитить API

существоватьAPISIXпроходитьплагиносознатьAPIЗащищать,существовать Что касается конкретной реализациидапроходить Ограничение тока и скоростии безопасностьплагин Защитить API Служить ограничивает нештатные запросы доступа и обеспечивает стабильную работу API Служить. APISIX предлагает несколько ограничений тока и скоростиизплагин,включатьlimit-connlimit-reqиlimit-count

  • limit-connплагин В основном используется для ограничения доступа клиентов к Служитьиз Количество одновременных запросов。
  • limit-reqплагин Используйте алгоритм дырявого ведра, чтобы ограничить пользователя Служитьиз Запросить ставку。
  • limit-countплагин В основном используется длясуществоватьобозначениеизв пределах временного диапазона,Ограничьте общее количество запросов на одного клиента.

В дополнение к плагину Ограничение тока и скорости APISIX также предоставляет плагин многих других потоков для удовлетворения потребностей реальных сценариев:

  • proxy-cache:Долженплагин Предоставление кэшированных данных ответа серверной частиизспособность,Его можно использовать с другим плагином. Плагин поддерживает кэширование на диске и в памяти.
  • request-validation:Долженплагиндля ранней проверки вверх по течению Служить Впередизпросить.
  • proxy-mirror:Долженплагин Зеркальные клиентские запросы предоставленыизспособность。поток Зеркалода Воля Онлайн реальностьпотокскопировать на зеркало Служитьсередина,Чтобы не влиять на онлайн Служить,Проведите подробный анализ онлайн-контента или запросите контент.
  • api-breaker:Долженплагин Осуществленный API функция автоматического выключателя, что помогает нам защитить наш добывающий бизнес.
  • traffic-split:Долженплагиниспользовать Пользователи могут постепенно направлять каждый восходящий поток междуизпотокпроцент。,Вы можете использовать этот плагин для реализации сине-зеленой публикации.,Выпуск в оттенках серого.
  • request-id:Долженплагинпроходить APISIX Для каждого запроса прокси добавьте unique ID для отслеживания API просить.
  • proxy-control:Долженплагин Возможность динамического управления NGINX Поведение, связанное с агентом.
  • client-control:Долженплагинможетпроходить Установить размер тела запроса клиентаизверхний предел для динамического управления NGINX Обработка на стороне клиента просить.

При этом также предусмотрено множество плагинов аутентификации и авторизации пользователей:

  • Key Authentication:привыкшийRouteилиServiceдобавить в Ключ аутентификации(API key),Необходимость иConsumerТолько работая вместе, мы сможем работать,проходитьConsumerВоляего ключдобавить вприезжать Параметры строки запросаилизаголовоксерединачтобы проверить егопросить.
  • Basic Authentication:использоватьbasic-authплагинможет бытьBasic_access_authenticationдобавить вприезжатьRouteилиServiceсередина。
  • JSON Web Token (JWT) Authentication:привыкшийJWTАутентификациядобавить вприезжатьServiceилиRouteсередина,проходитьConsumerВоляего ключдобавить вприезжать Параметры строки запроса、Заголовок запросаилиcookieсерединаиспользуется для проверки егопросить.
  • Keycloak:используется дляпроходитьKeycloak Identity Serverдобавить в Аутентификация。
  • Casdoor:использоватьauthz-casdoorплагин Можетдобавить вCasdoorнаборсередина Сертификация Способ。
  • Wolf RBACwolf-rbacплагиндляrole-based access controlСистема обеспечиваетдобавить вwolfприезжатьRouteилиServiceиз Функция。этотплагин Необходимость иConsumerВместеиспользовать。
  • OpenID ConnectOpenID Connect(OIDC)дана основеOAuth 2.0из Аутентификация личностипротокол,APISIX может быть подключен к аутентификации личности. Служить, поддерживающий этот протокол.,Такие как Окта, Кейклоак, Ори Hydra, Authing и т. д. реализуют аутентификацию личности для клиентских запросов.
  • Central Authentication Service (CAS):использоватьcas-authЗапрос отSP(Служитьпоставщик)изугловой доступCAS(середина央Аутентификация Служить2.0)IdP(личностьпоставщик)аутентифицировать。
  • HMAC:ВоляHMAC authenticationдобавить вприезжатьRouteили ВОЗService,ДолженплагиннуждатьсяиConsumerВместеиспользовать,Потребители API должны добавить секретный ключ в заголовок запроса для аутентификации их использования.
  • Casbinauthz-casbinплагинда一个на основеLua Casbinизконтроль доступаплагин,Долженплагин Поддержка различныхaccess control modelsиз Мощные сценарии авторизации。
  • LDAPldap-authплагин Можно использовать, чтобы датьмаршрутизацияили Служитьдобавить вLDAPАутентификация личности,Долженплагиниспользоватьlua-resty-ldapсоединятьLDAPСлужитьустройство。
  • Open Policy Agent (OPA)opaплагин Может использоваться сOpen Policy AgentИнтегрировать,Реализовать разделение серверной аутентификации и авторизации и доступа к функциям Служить.,Уменьшите сложность системы.
  • Forward Authenticationforward-authплагиниспользоватьиздаклассический экстерьер Сертификация。когда Аутентификация личностипри неудаче,Может以实现自定义错误или ВОЗ重定向приезжать Сертификациястраницаизсцена。forward-authплагинумно Воля Аутентификация личностии Логическая миграция авторизацииприезжатьспециализированныйизвнешний Служитьсередина,APISIX перенаправляет запрос пользователя в службу аутентификации Служить и блокирует исходный запрос.,Затемсуществовать Сертификация Служить Следующая вещь неправильная2xxЗамена результата при ответе на статус。
Ограничение тока и скорости

нравитьсянижеlimit-countплагиндляпример,представлятьнравитьсячтопроходить Ограничение тока и скоростиплагин Защитить APIСлужить。

1. Создайте восходящий поток

Язык кода:javascript
копировать
curl "http://127.0.0.1:9180/apisix/admin/upstreams/1" \
-H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1" -X PUT -d '
{
  "type": "roundrobin",
  "nodes": {
    "httpbin.org:80": 1
  }
}'

2. Создайте маршрут

Язык кода:javascript
копировать
curl -i http://127.0.0.1:9180/apisix/admin/routes/1 \
-H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
    "uri": "/index.html",
    "plugins": {
        "limit-count": { # Используйте плагин limit-count, чтобы ограничить доступ к восходящему каналу до 2 раз в течение 60 секунд. Если используется более 2 раз, будет возвращен код состояния 503.
            "count": 2,
            "time_window": 60,
            "rejected_code": 503,
            "key_type": "var",
            "key": "remote_addr"
        }
    },
  "upstream_id": "1" # указан upstream_id
}'

3. Протестируйте плагин:

Язык кода:javascript
копировать
curl http://127.0.0.1:9080/index.html

После использования приведенной выше команды для доступа три раза подряд в течение 60 секунд появится следующая ошибка.

Язык кода:javascript
копировать
<html>
<head><title>503 Service Temporarily Unavailable</title></head>
<body>
<center><h1>503 Service Temporarily Unavailable</h1></center>
<hr><center>openresty</center>
<p><em>Powered by <a href="https://apisix.apache.org/">APISIX</a>.</em></p></body>
</html>

Сгенерируйте 100 запросов одновременно, чтобы увидеть эффект от плагина ограничения скорости:

Язык кода:javascript
копировать
count=$(seq 100 | xargs -i curl "http://127.0.0.1:9080/index.html" -I -sL | grep "503" | wc -l); echo \"200\": $((100 - $count)), \"503\": $count

Выход:

Язык кода:javascript
копировать
# Только 2 из 100 запросов могут быть выполнены нормально, а 98 из них терпят неудачу.
"200": 2, "503": 98
Сертификация авторизации

нравитьсянижеkey-authплагиндляпример,Информация для аутентификации необходима при ограничении доступа к назначенной маршрутизации.

1. Добавьте потребителя:

Язык кода:javascript
копировать
curl -i "http://127.0.0.1:9180/apisix/admin/consumers?api_key=edd1c9f034335f136f87ad84b625c8f1"  -X PUT -d '
{
  "username": "tom",
  "plugins": {
    "key-auth": {
      "key": "abcdefghijklmnopqrstuvwxyz"
    }
  }
}'

2.Чтобы указатьмаршрутизациядавать возможностьKeyСертификация:getting-started-ip

Язык кода:javascript
копировать
curl -i "http://127.0.0.1:9180/apisix/admin/routes/getting-started-ip?api_key=edd1c9f034335f136f87ad84b625c8f1" -X PATCH -d '
{
  "plugins": {
    "key-auth": {}
  }
}'

проверять:

Язык кода:javascript
копировать
# Доступ без API-ключа:
curl -i "http://127.0.0.1:9080/ip"
# возвращаться:
HTTP/1.1 401 Unauthorized
Date: Sun, 06 Aug 2023 06:07:47 GMT
Content-Type: text/plain; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Server: APISIX/3.4.1

{"message":"Missing API key found in request"}
Язык кода:javascript
копировать
# Доступ с помощью API-KEY (используйте правильный API-KEY):
curl -i "http://127.0.0.1:9080/ip" -H 'apikey: abcdefghijklmnopqrstuvwxyz'
# возвращаться:
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 45
Connection: keep-alive
Date: Sun, 06 Aug 2023 06:08:52 GMT
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
Server: APISIX/3.4.1

{
  "origin": "172.18.0.1, 124.126.139.14"
}
Язык кода:javascript
копировать
# Доступ с использованием неправильного API-ключа:
curl -i "http://127.0.0.1:9080/ip" -H 'apikey: abcdefghijklmnopqrstuvwxyz123'
# возвращаться:
HTTP/1.1 401 Unauthorized
Date: Sun, 06 Aug 2023 06:09:39 GMT
Content-Type: text/plain; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
Server: APISIX/3.4.1

{"message":"Invalid API key in request"}

API мониторинга

APISIX предоставляет множество плагинов наблюдения с богатыми функциями. Используя и настраивая эти плагины, вы можете понять поведение API и сделать весь бизнес-процесс более понятным. Наблюдаемость API можно разделить на три ключевые части: бревно, индекс, трассировка. ссылок。

бревно

Бревно APISIX можно отправить в указанную бревно Служить через какой-нибудь бревноплатин APISIX. 以下示пример展示了существоватьобозначениемаршрутизация Начатьhttp-loggerиз示пример。

Язык кода:javascript
копировать
curl http://127.0.0.1:9180/apisix/admin/routes/1 \
-H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
  "plugins": {
    "http-logger": {
      "uri": "http://mockbin.org/bin/5451b7cd-af27-41b8-8df1-282ffea13a61"
    }
  },
  "upstream_id": "1",
  "uri": "/get"
}'

Уведомление: Может以проходить Исправлятьuriсвойство,Волявышеhttp-loggerиз Служитьустройство Изменение адресадлядругой Служитьустройствоадрес:

Язык кода:javascript
копировать
{
   "uri": "http://mockbin.org/bin/5451b7cd-af27-41b8-8df1-282ffea13a61"
}

После успешного создания,Может以проходить Следующая команда переходит кgetКонечная точка отправляет запрос на созданиебревно。

Язык кода:javascript
копировать
curl -i http://127.0.0.1:9080/get

После успешного выполнения запроса,Можно нажатьИмитированная ссылка на серверпросмотреть посещениебревно。 Эффект отображения следующий:

индекс

Индекс — это значение, измеренное за определенный период времени. Отличается от бревно,индекс структурирован по умолчанию,Это делает запроси Оптимизировать хранилище стало проще。 иAPISIXТакже предоставленоPrometheusизплагинполучитьAPIиндекс,исуществоватьPrometheusсерединаразоблачить их。 проходитьиспользоватьAPISIXпоставлятьизGrafanaМетаданные информационной панели,и изPrometheusсерединаполучатьиндекс,Контролировать прощеAPI

проходить Следующая командадавать возможностьprometheusплагин:

Язык кода:javascript
копировать
curl http://127.0.0.1:9180/apisix/admin/routes/1  \
-H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
  "uri": "/get",
  "plugins": {
    "prometheus": {}
  },
  "upstream_id": "1" # Укажите идентификатор потока
}'

После успешной активации,Может以проходить/apisix/prometheus/metricsПриобретение интерфейсаAPISIXизиндекс。

Язык кода:javascript
копировать
curl -i http://127.0.0.1:9091/apisix/prometheus/metrics

还Может以проходитьhttp://localhost:9090/targetsсуществоватьPrometheusПросмотр конечных точек на панели мониторингаизсостояние。

трассировка ссылок

трассировка ссылки предназначены для восстановления запроса на вызывающую ссылку и отображения ситуации вызова запроса топологическим способом, например, показывая время, затраченное на каждый микроузел, через какие серверы прошел запрос, а также статус запроса каждого узла. . и т.п. содержание. проходитьнравиться下示пример,существоватьобозначениемаршрутизациясерединадавать возможностьzipkinплагин:

Язык кода:javascript
копировать
curl http://127.0.0.1:9180/apisix/admin/routes/1  \
-H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
  "methods": [
    "GET"
  ],
  "uri": "/get",
  "plugins": {
    "zipkin": {
      "endpoint": "http://127.0.0.1:9411/api/v2/spans",
      "sample_ratio": 1
    }
  },
  "upstream_id": "1" # Укажите upstream_id
}'

Запросите APISIX с помощью следующей команды:

Язык кода:javascript
копировать
curl -i http://127.0.0.1:9080/get

Как показано ниже,Возврат результатовсерединаизheaderДобавлены некоторые дополненияизидентификатор отслеживания(TraceId、SpanId и ParentId):

Язык кода:javascript
копировать
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 470
Connection: keep-alive
Date: Sun, 06 Aug 2023 10:03:16 GMT
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
Server: APISIX/3.4.1

{
  "args": {}, 
  "headers": {
    "Accept": "*/*", 
    "Host": "127.0.0.1", 
    "User-Agent": "curl/7.61.1", 
    "X-Amzn-Trace-Id": "Root=1-64cf6fe0-09e409de516b26f632946e46", 
    "X-B3-Parentspanid": "1b9b7f3fe43796c2",            // ParentId
    "X-B3-Sampled": "1", 
    "X-B3-Spanid": "0e881fc8b8fe5ec6",                  // SpanId
    "X-B3-Traceid": "267172faeb84010f3c50229afdb851d6", // TraceId
    "X-Forwarded-Host": "127.0.0.1"
  }, 
  "origin": "172.18.0.1, 124.126.139.14", 
  "url": "http://127.0.0.1/get"
}

【ссылка】 Get APISIX Почему Апач APISIX выбирает технологический стек NGINX+Lua? Высокопроизводительный шлюз apisix — документация по разработке на китайском языке Ван Юаньшэн: Апачи APISIX Анализ максимальной производительности архитектуры микросервисного шлюза Давайте поговорим еще раз APISIX практика высокой производительности Анализ архитектуры APISIX: как динамически управлять кластером Nginx? Учебные пособия для няни, которые помогут вам быстро приступить к работе от концепции к практике. Apache APISIX Ingress После года практики vivo как на основе APISIX Развивайте бизнес-инфраструктуру Шлюз APISIX в практике производства снежных комов APISIX+Dubbo+Nacos лучшие практики

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose