Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 12431|Ответ: 0

Microservices Gateway Kong использует плагины для настройки возвратов ошибок

[Скопировать ссылку]
Опубликовано 14.02.2019 16:58:19 | | |
Плагин Kong

Плагин Kong поддерживает четыре измерения, порядок выполнения — сверху вниз, и стоит отметить, что если один и тот же плагин настроен в разных измерениях, он будет выполнен только один раз:

  • Применяйте API плюс потребительский микс;
  • Применяется к потребителям;
  • Применяется в API;
  • Применяется по всему миру;

Кроме того, не все плагины поддерживают определение потребителей

Добавьте ещё один API для тестирования
Добавьте новый интерфейс:


{
    "created_at": 1515055457572,
    «strip_uri»: правда,
    "ID": "A99919D1-0770-40A1-81A9-E3C31FD9D282",
    "Имя": "Spring-boot-consul-service2",
    «методы»: [
        "УХОДИ"
    ],
    "http_if_terminated": ложно,
    "preserve_host": ложно,
    "upstream_url": "http://spring-boot-consul-service2.service.dc1.consul:17004",
    "URIS": [
        "/user"
    ],
    "upstream_send_timeout": 60000,
    "upstream_connect_timeout": 60000,
    "upstream_read_timeout": 60000,
    «повторяется»: 5,
    «https_only»: ложь
}


Добавить пары


{
    "created_at": 1515055993113,
    «Список заказов»: [
        41,
        28,
        44,
        14,
        79,
        38,
        30,
        69,
        15,
        88,
        72,
        53,
        89,
        47,
        81,
        43,
        60,
        91,
        92,
        100,
        98,
        55,
        12,
        40,
        9,
        31,
        84,
        24,
        36,
        39,
        96,
        74,
        6,
        8,
        93,
        99,
        78,
        34,
        49,
        37,
        61,
        76,
        33,
        35,
        32,
        77,
        70,
        26,
        52,
        87,
        73,
        23,
        57,
        25,
        17,
        90,
        62,
        82,
        19,
        75,
        50,
        4,
        51,
        42,
        65,
        66,
        63,
        3,
        1,
        68,
        94,
        67,
        20,
        80,
        54,
        7,
        5,
        16,
        85,
        13,
        46,
        10,
        97,
        22,
        48,
        11,
        27,
        86,
        18,
        59,
        83,
        21,
        56,
        95,
        2,
        64,
        58,
        71,
        45,
        29
    ],
    "ID": "6B8BC38A-D449-47BF-8B8C-19B888E282D4",
    "name": "spring-boot-consul-service2.service.dc1.consul",
    «слотов»: 100
}


Добавляйте цели



Информация о Тагете

{
    «всего»: 3,
    «данные»: [
        {
            "created_at": 1515056103599,
            "ID": "994E7886-3E48-45CB-80AD-3F7918ede007",
            "upstream_id": "6b8bc38a-d449-47bf-8b8c-19b88e28d4",
            "Цель": "192.168.0.186:17004",
            «вес»: 15
        },
        {
            "created_at": 1515056109570,
            "ID": "03B477EE-A69D-49EE-9892-276F451C373C",
            "upstream_id": "6b8bc38a-d449-47bf-8b8c-19b88e28d4",
            "цель": "192.168.0.185:17004",
            «вес»: 15
        },
        {
            "created_at": 1515056112730,
            "ID": "8ace8d83-4504-4334-ad04-f0b536963df9",
            "upstream_id": "6b8bc38a-d449-47bf-8b8c-19b88e28d4",
            "Target": "192.168.0.184:17004",
            «вес»: 15
        }
    ]
}


Текущий список API следующий:

{
    "всего": 2,
    «данные»: [
        {
            "created_at": 1515055457572,
            «strip_uri»: правда,
            "ID": "A99919D1-0770-40A1-81A9-E3C31FD9D282",
            "Имя": "Spring-boot-consul-service2",
            «методы»: [
                "УХОДИ"
            ],
            "http_if_terminated": ложно,
            "https_only": ложно,
            "upstream_url": "http://spring-boot-consul-service2.service.dc1.consul:17004",
            "URIS": [
                "/user"
            ],
            "preserve_host": ложно,
            "upstream_connect_timeout": 60000,
            "upstream_read_timeout": 60000,
            "upstream_send_timeout": 60000,
            «повторения»: 5
        },
        {
            "created_at": 1514995615974,
            «strip_uri»: правда,
            "ID": "B8431831-6A77-434E-AC4A-7E379550714F",
            "Имя": "Spring-boot-consul-service",
            «методы»: [
                "УХОДИ"
            ],
            "http_if_terminated": ложно,
            "https_only": ложно,
            "upstream_url": "http://spring-boot-consul-service.service.dc1.consul:17003",
            "URIS": [
                "/service"
            ],
            "preserve_host": ложно,
            "upstream_connect_timeout": 60000,
            "upstream_read_timeout": 60000,
            "upstream_send_timeout": 60000,
            «повторения»: 5
        }
    ]
}


Интерфейсы доступа возвращают следующее:

{
    "msg": "ок",
    "date": {
        "счёт": 42,
        «имя»: «дерево»,
        "id": 1,
        «возраст»: 12,
        "nowTime": 1515060166929,
        "info": "/checkUser, host:192.168.0.186, service_id:application-1700417004"
    },
    «код»: 200
}
{
    "msg": "ок",
    "date": {
        «Счёт»: 505,
        «имя»: «дерево»,
        "id": 1,
        «возраст»: 12,
        "nowTime": 1515060402392,
        "info": "/checkUser, host:192.168.0.184, service_id:application-1700317003"
    },
    «код»: 200
}

Добавить плагин Key-Auth

Откройте плагин аутентификации ключа


{
        "created_at": 1515066239000,
        "config": {
                "key_in_body": ложно,
                "run_on_preflight": правда,
                "анонимный": "",
                "hide_credentials": ложно,
                "key_names": [
                        «Апики»
                ]
        },
        "ID": "78C519D3-11F7-4CDF-B038-9F17F1A83427",
        «enabled»: верно,
        "api_id": "a99919d1-0770-40a1-81a9-e3c31fd9d282",
        "Имя": "Key-auth"
}

Затем получите доступ к интерфейсу с такой ошибкой:

ПОЛУЧИТЬВход по гиперссылке виден.
#输出
{
    "message": "В запросе не найдено ключ API"
}

Удалите плагин аутентификации ключа



Посмотрите плагин для привязки API

ПОЛУЧИТЬВход по гиперссылке виден.
# Выход:
{
    "всего": 0,
    «данные»: []
}

Добавьте плагин с ограничением скорости


Выход

{
    "created_at": 1515068825000,
    "config": {
        «минута»: 10,
        «policy»: «cluster»,
        "redis_timeout": 2000,
        "hide_client_headers": ложно,
        «второй»: 2,
        "limit_by": "потребитель",
        "redis_port": 6379,
        "redis_database": 0,
        «fault_tolerant»: правда
    },
    "ID": "482C627F-4041-4320-9B2F-0cc7722B92EA",
    "name": "ограничивающий скорость",
    "api_id": "a99919d1-0770-40a1-81a9-e3c31fd9d282",
    «enabled»: верно
}

Когда интерфейс доступа превышает лимит, будут получены следующие результаты:


Возвращение

{
    "message": "Превышен лимит скорости API"
}

Однако некоторые проблемы всё ещё существуют: формат сообщения фиксирован, выходной формат не совпадает с бэкенд-сервисом, и необходимо поддерживать пользовательские форматы сообщений.

Kong изменяет значение возврата исключения
Например, унифицированный формат сообщения сервиса выглядит следующим образом:

{
    "код": 200,
    "msg": "ок",
        "data": {xxx}
}

Мы также хотим, чтобы возврат исключений по конгу оставался в том же формате, что и выше. Тогда мы можем напрямую изменить исходный код Kong, что на самом деле очень просто.

Начните с скачивания исходного кода

#下载kong插件源码

git клонgit@github.com:Kong/kong.git

Найдите выходной код для изменения

Выходной код находится в kong/kong/tools/responses.lua, откройте его для редактирования.



Сохраните, затем скомпилируйте

[root@tree81 Конг]# Луароки делают
kong 0.11.2-0 теперь установлен в /usr/local (лицензия: MIT)

Запуск, попробуй ещё раз

Быстро обновляйте адрес несколько раз подряд:Вход по гиперссылке виден.Получите сообщение об ошибке:

{
    "код": 429,
    "msg": "Лимит скорости API превышен"
}

Готово, идеальный :)




Предыдущий:jQuery загружает текст через AJAX
Следующий:init: function () jquery对象的构造函数
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com