1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/aiyuntang-zuul-redislimiter-spring-boot

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

@RestController @RequestMapping("/demo2") public class Controller2 { @GetMapping("/test21") public String test1() { return "test21!"; }

@GetMapping("/test22")
public String test2() {
    return "test22!";
}

}

yaml

server: port: 8002 spring: application: name: service2

eureka: client: serviceUrl: defaultZone: http://localhost:8761/eureka/ instance: prefer-ip-address: true

java

package com.tay.eurekaserver;

import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@EnableEurekaServer @SpringBootApplication public class EurekaserverApplication {

public static void main(String[] args) {
    SpringApplication.run(EurekaserverApplication.class, args);
}

}

yaml

server: port: 8761

eureka: client: register-with-eureka: false fetch-registry: false

bash

sudo docker run -d -p 6379:6379 redis

spring: redis-limiter:

redis-host: 127.0.0.1 # redis server IP default:127.0.0.1 redis-port: 6379 # redis service port default:6379
redis-password: test # redis password default:null redis-connection-timeout: 2000 # redis connection timeout default:2000 redis-pool-max-idle: 50 # redis pool max idle default: 50 redis-pool-min-idle: 10 # redis pool mim idle default:10 redis-pool-max-wait-millis: -1 # max wait time for get connection default:-1 redis-pool-max-total: 200 # max total connection default:200 redis-key-prefix: #RL # key prefix for visit footprint default: #RL check-action-timeout: 100 # check action execution timeout default: 100 channel: #RLConfigChannel # conf change event pub/sub channel default: #RLConfigChannel policy-map: # rate limiting policies api-a: # unique service id order: -1 # order baseExp: Headers['userid'] # value to base on, Spel expression without "#", supports Headers['xxx'] or Cookies['xxx']
pathRegExp: /s1/.* # URI path pattern, a Regular expression timeUnit: MINUTES # timeUnit supports SECONDS, MINUTES, HOURS,DAYS permits: 2 # Number of visits allowed per a timeUnit api-a1:
order: 0 baseExp: Headers['userid'] pathRegExp: /s1.* timeUnit: MINUTES permits: 3 ...

Dynamic configuration

We can change the limiting policy by internal RESTful API.


@RequestMapping("/zuullimiterpolicy")
public class LimitingPolicyResource {
    ...

    @PostMapping
    public void add(@RequestBody LimitingPolicy limitingPolicy, HttpServletResponse response) throws IOException{
        ...
    }

    @PutMapping
    public void update(@RequestBody LimitingPolicy limitingPolicy, HttpServletResponse response) throws IOException {

        ...
    } В запросе представлен текст технической направленности из области разработки и тестирования программного обеспечения. Основной язык текста запроса  английский.

Вот перевод текста на русский язык:

В настоящее время этот фреймворк поддерживает четыре действия (добавление, обновление, запрос, удаление).

Например (как в проекте zuulapp):

Результат GET-запроса к http://localhost:8000/zuullimiterpolicy/api-a будет выглядеть следующим образом:
```json
{
  "serviceId": "api-a",
  "order": -1,
  "baseExp": "Headers['userid']",
  "pathRegExp": "/s1/.*",
  "timeUnit": "MINUTES",
  "permits": 2,
  "delete": false
}

Если мы хотим обновить конфигурацию, назначим Content-Type как application/json, а затем выполним PUT-запрос к http://localhost:8000/zuullimiterpolicy, то тело запроса будет таким:

{
  "serviceId": "api-a",
  "order": -1,
  "baseExp": "Headers['userid']",
  "pathRegExp": "/s1/.*",
  "timeUnit": "MINUTES",
  "permits": 10,
  "delete": false
}

Тогда ограничительная политика для сервиса с serviceId «api-a» изменится.

Если мы захотим удалить ограничительную политику с serviceId «api-b», выполним DELETE-запрос к http://localhost:8000/zuullimiterpolicy/api-b, тогда ограничительная политика с serviceId «api-b» будет удалена.

Чтобы добавить новую ограничительную политику, назначим Content-Type как application/json и выполним POST-запрос к http://localhost:8000/zuullimiterpolicy. Тело запроса будет следующим:

{
  "serviceId": "api-d",
  "order": -1,
  "baseExp": "Headers['userid']",
  "pathRegEp": "/s3/.*",
  "timeUnit": "MINUTES",
  "permits": 10,
  "delete": false
}

Обратите внимание, что serviceId и pathRegExp не должны конфликтовать с уже существующими ограничительными политиками.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Распределённый механизм ограничения трафика на основе фильтров Zuul-шлюза отличается простотой и понятностью конфигурации, обеспечивает гибкое и мощное ограничение трафика, а также поддерживает динамическое изменение конфигурации ограничения трафика. Это решение особенно полезно для микросервисной архитектуры Spring Cloud. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/aiyuntang-zuul-redislimiter-spring-boot.git
git@api.gitlife.ru:oschina-mirror/aiyuntang-zuul-redislimiter-spring-boot.git
oschina-mirror
aiyuntang-zuul-redislimiter-spring-boot
aiyuntang-zuul-redislimiter-spring-boot
master