Size: a a a

2020 July 23

DM

Dmitry M in Go-go!
сонная википедия
тоже самое, что и если записи в кеше не будет
Пойдете в БД. А там например Master-Slave с лагом репликации)
источник

Н

Никита in Go-go!
Мимо Проходящий
Ни каких проблем не вижу. Прилетел реквест с комментарием, пошёл в мапу, фсё. Когда 10к новых набралось, отправить их в бд асинхронно
Это вообще подход страшный
источник

Н

Никита in Go-go!
Вы храните сначала в приложении, а потом через какой то интервал в базу?
источник

АД

Алексей Долгов... in Go-go!
Никита
Это вообще подход страшный
+
источник

с

сонная википедия... in Go-go!
Dmitry M
Пойдете в БД. А там например Master-Slave с лагом репликации)
как много невероятно вероятных событий за один раз
источник

Н

Никита in Go-go!
Dmitry M
Пойдете в БД. А там например Master-Slave с лагом репликации)
Справедливо, но в случае с базой у вас рано или поздно данные будут консистентны. А вот то, что комментарий, который не записался в кеш, когда то туда попадет, вероятность меньше
источник

DM

Dmitry M in Go-go!
Никита
Справедливо, но в случае с базой у вас рано или поздно данные будут консистентны. А вот то, что комментарий, который не записался в кеш, когда то туда попадет, вероятность меньше
А это как вы реализуете кеширование
источник

Н

Никита in Go-go!
Dmitry M
А это как вы реализуете кеширование
В данном случае я про кейс, когда у вас несколько сущностей в одном месте
источник

Н

Никита in Go-go!
Этот вариант как мне кажется не самый разумный
источник

Н

Никита in Go-go!
Я все равно не вижу смысла кешировать вещи, которые не занимают у вас секунды
источник

Н

Никита in Go-go!
Либо сотни миллисекунд, если уж так
источник

Н

Никита in Go-go!
Но точно не тогда, когда вам пойти в базу 5мс, а в кеш 2
источник

ЛА

Локоть Анатолий... in Go-go!
Никита
Но точно не тогда, когда вам пойти в базу 5мс, а в кеш 2
Обычно порядок сходить в бд это милисек, в локальный кеш микросек, в редис что-то среднее
источник

AK

Anton Kucherov in Go-go!
Dmitry M
Зависит от бизнеса. Обеспечение строгой констистентности в распределенных системах удовольствие не дешевое. Тот же Амазон допускает неконсистентность в некоторые моменты времени
и зачастую бессмысленное. Даже в банках  консистентность соблюдается только в платежных транзакциях. А в клиентских приложениях рассинхрон уже вполне норма. Отправил деньги, деньги ушли, а сумма на счету не обновилась. Ну или деньги пришли а в приложении показывается на счету еще старая сумма в течении нескольких минут. И ни кто не умирает
источник

Н

Никита in Go-go!
Локоть Анатолий
Обычно порядок сходить в бд это милисек, в локальный кеш микросек, в редис что-то среднее
Ну вот так оно и будет
источник

J

Je in Go-go!
Мимо Проходящий
Ни каких проблем не вижу. Прилетел реквест с комментарием, пошёл в мапу, фсё. Когда 10к новых набралось, отправить их в бд асинхронно
Здесь все неплохо, так даже делают, но вместо кэша используют нечто, что имеет некий лог записи (привет, redis). И записывают не асинхронно, а синхронно батчем) А еще используют не кеш, а выше мной упомянутую cassandra db, которые очень быстрые на запись и реплицируются
источник

АД

Алексей Долгов... in Go-go!
так вроде сначала пишут в бд, потом обновляют кэш. наоборот рискованно, кэш ведь потерять можно. опять таки обычный кейс - это масштабирование. Если у вас несколько экземпляров одного приложения и  у всех разная версия кэша получится. А зачем кэш? снизить нагрузку?
решать нагрузку надо сначала масштабированием и ресурсами, потому что это быстро и эффективно. наглухо закешироваться всегда можно успеть.
источник

S

Stepan in Go-go!
Нужна помощь с go модулями
источник

Н

Никита in Go-go!
У меня есть такой кейс. Юзеры могут делать записи по локации, которые живут 24 часа. Также они могут смотреть на карте популярные места исходя из количества постов. И масштаб просмотра не улица, или район, а вплоть до карты мира. То есть нужно показать, что в таком то участке столько такой уровень «оживлённости». Количество записей выводить не надо, оно используется только для определения, какой уровень показать на карте. Так что на консистентность счетчика можно подзабить.

То есть в базе мы храним запись с ее геохешем, чтобы можно было кластеризировать записи по локации.

Если таких записей сотни тысяч, то выборка (представляющая из себя агрегацию) по масштабу страны/мира уже выполняется секунды 3-4. Если записей миллионы, это вплоть до 20 секунд.

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

ЗА

Заур Ашурбеков... in Go-go!
⛪️Поп Гапон⛪️
На фронте в цикле по одному фалу грузил вроде норм
Там фронт мобилы, че-нибудь да придумают локально, если хотят параллельно
источник