Косяк с блокнотом, но неплохо бы проговорить следующие моменты: 1) закрытие каналов, и как в итоге не записать в закрытый канал 2) удаление из второй мапы когда ответ сохранили в первую 3) синхронизация мап, между операциям в разных мапах могут встроится новые запросы
По факту Вроде они договорились делать broadcast ответа чтобы не делать лишние одинаковык запросы, но написали простой кеш без инвалидации, а потом только начали делать broadcast, и его не успели. имхо в реальном собесе это no hire.
Как упражнение для мозга наверное ок, но в нормальных системах обычно не делают кэш мапами. Для этого есть редис. Плюс юзают месадж брокеры. Вся эта конструкция не будет работать в случае когда много инстансов микросервиса.
Вот бы всегда собесы проводились так, как будто есть ещё зрители, для которых неотвеченный вопрос раскрывается. А то интервьюверы любят просто пойти дальше, типа не знаешь ну и не знай дальше.
Почему бы не рассмотреть вариант с возвратом результата в виде некоторого промиса с каналом Done()? Внутри кеша, если надо, в отдельной горутинке идем во внешний сервис, а горутины хендлеров получают промис и сами решают подождам им готовности результата или сразу вернуть результат клиенту. зы Рекспект Виталию, кейс классный.
вместо броадкастера и мапы с каналами, который Виталий предложил, можно же было использовать один канал и закрытие канала в качестве сигнала. Потом из кэш-мапы забирать данные
Осень полезно смотреть такой контент . Иногда можно на перед знать как решить задачу. Спасибо!
Косяк с блокнотом, но неплохо бы проговорить следующие моменты:
1) закрытие каналов, и как в итоге не записать в закрытый канал
2) удаление из второй мапы когда ответ сохранили в первую
3) синхронизация мап, между операциям в разных мапах могут встроится новые запросы
По факту Вроде они договорились делать broadcast ответа чтобы не делать лишние одинаковык запросы, но написали простой кеш без инвалидации,
а потом только начали делать broadcast, и его не успели.
имхо в реальном собесе это no hire.
Как упражнение для мозга наверное ок, но в нормальных системах обычно не делают кэш мапами. Для этого есть редис. Плюс юзают месадж брокеры. Вся эта конструкция не будет работать в случае когда много инстансов микросервиса.
Вот бы всегда собесы проводились так, как будто есть ещё зрители, для которых неотвеченный вопрос раскрывается. А то интервьюверы любят просто пойти дальше, типа не знаешь ну и не знай дальше.
Return то забыл на 20 строчке
Почему бы не рассмотреть вариант с возвратом результата в виде некоторого промиса с каналом Done()? Внутри кеша, если надо, в отдельной горутинке идем во внешний сервис, а горутины хендлеров получают промис и сами решают подождам им готовности результата или сразу вернуть результат клиенту.
зы
Рекспект Виталию, кейс классный.
вместо броадкастера и мапы с каналами, который Виталий предложил, можно же было использовать один канал и закрытие канала в качестве сигнала. Потом из кэш-мапы забирать данные
Не палите в следующий раз урл кодшера и код не будет исчезать
А может зрителям надо быть добропорядочными, а не клоунами?
На это ты не можешь повлиять
Отличная задача, кмк, даже крепкий мидл ее вполне может запилить
Норм норм.