Как сделать API с медленными зависимостями быстрее? - PullRequest
0 голосов
/ 19 октября 2018

Недавно я посетил два разных собеседования, и один из заданных ими вопросов был примерно таким:

1 - вам нужно создать API, который будет использовать некоторые микросервисы, которые работают очень медленно.Некоторые из них отвечают менее чем за несколько секунд (скажем, 2 секунды).Мы должны сделать все возможное, чтобы наш API был очень надежным с точки зрения задержки.Что бы вы сделали, чтобы заставить эту систему работать быстро?

2 - Это привело меня к другим вопросам, таким как, если я решу кешировать некоторые данные, что мне нужно делать, чтобы избежать старого кеша?Например, если я кешировал личную информацию пользователя, а он только обновил свой профиль?

3- Наконец, если это не была операция чтения, что мы должны сделать, чтобы использовать службы, которые занимают много времени и не влияют на работу пользователя?В этом случае представьте, что это операция записи

Как бы вы ответили на эти вопросы?

1 Ответ

0 голосов
/ 19 октября 2018

Вопрос немного расплывчатый, но я попытаюсь выкинуть пару решений.

Прежде чем прыгать в кеш, я сначала задам вопросы о наборе данных.Например, насколько велик этот набор данных и как часто меняется набор данных?Если набор данных невелик, вы, вероятно, можете хранить его в памяти неограниченное время, а при обновлении вы можете обновлять отдельные записи в кэше.

Конечно, когда мы говорим, что храним его в кэше, мыТакже нужно иметь в виду поиск данных.Если для извлечения данных требуется захват данных различными способами, а объем данных большой, кэширование может оказаться не таким уж хорошим решением.Этот вид отвечает на первый и второй вопрос, который вы разместили без дополнительной информации от интервьюера.Это, в свою очередь, действительно, где вам нужно выявить требования интервьюера, чтобы убедиться, что вы на правильном пути.

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

...