Я разрабатываю веб-сервис, который прослушивает HTTP-запросы. Этот сервис должен реагировать очень быстро и обрабатывать максимально возможное количество одновременных запросов.
Эта служба имеет одну конечную точку с 2 параметрами запроса (param1
и param2
), которые используются для проверки некоторой информации и последующей отправки ответа.
У меня есть некоторая предопределенная информация, которую я буду использовать для проверки параметров запроса. Например:
Я знаю, что param1
назначен на assign1
и имеет свойство prop1
. Param1
также присваивается assign3
, который имеет свойство prop3
.
И это param2
присваивается assign2
и имеет свойство prop2
.
С этой информацией, когда я получаю HTTP-запрос, мне нужно проверить, что param1
назначено с assign1
или assign2
, в противном случае я должен вернуть пустой ответ.
Очевидно, что идея состоит в том, чтобы избежать жесткого кодирования, и было бы неплохо, если бы я мог изменить эту информацию во время работы сервера.
Чтобы достичь этого, я знаю два существующих решения (возможно, есть и другие):
Используйте spring boot
и задайте эту информацию в файле .yml, чтобы читать их через пружинный компонент с использованием заполнителей, таких как @Value(${param1})
и т. Д. Проблема в том, что мне потребуется перезагрузить приложение если я хочу увидеть изменения, внесенные в этот файл .yml, то технически я не могу изменить кэшированную информацию, пока сервер работает.
Используйте встроенную базу данных, такую как H2
, и получайте информацию для каждого запроса, используя выбор. Проблема в том, что мне нужно сделать выбор для каждого запроса (и если мне нужно будет выполнить какое-либо соединение, это увеличит время ответа). Но я могу изменить информацию, пока сервер работает.
Я хотел бы знать, какой вариант лучше всего "кэшировать" эту информацию и позволить службе работать очень быстро, поскольку каждый запрос блокируется.
Я также использую Spring Boot для создания этого сервиса, но если вы знаете какой-нибудь лучший веб-контейнер, я готов его попробовать.