их допустим 5000.
приложение типа телеги. храню сообщения на локалхосте
допустим юзер вышел, и когда зашел в базе что-то из этих 5000 итемов удалилось/добавилось
как это засинхронить максимально эффективно, сам принцип?
С помощью вэбсокета синхронь, например. Если не можешь изменить текущее (имхо, не совсем верное) флоу З.ы. почитай https://jerickson.net/four-ways-keep-backend-data-synced-frontend/
а какое верное? вроде у телеги подобное
Ни в коем случае)) У телеги чуть ли на каждый чих твой идет синхронизация) Даже на то, что я сейчас печатаю, каждые н миллисекунд идет запрос на сервер, а всем остальным онлайн участникам группы рассылается апдейты(так называют в самой телеге "запросы сервера на клиент"). А мне (моим остальным устройствам) летит апдейт о новом драфте. Так что телега синхронит практически мгновенно каждое твое действие
Если не веришь, глянь их доку. core.telegram.org/methods И увидишь, что есть методы даже на самые мельчайшие действия. А так быстро, потому что там аля вэбсокет (если говорить более распространенным аналогом) - 2 сокет соединения открываются, в 1м - клиент шлет запросы на получение/изменение данных (считай как хттп запросы), а во 2м - сервер отправляет изменения в активные(подключенные соединения)
понятно что происходит синхра. непонятно как 1. ка кпроисходит синхра? в базе в группе лежит 5000 сообщений юзер долго не заходил, половину сообщений из кучи удалили рандомно и добавили еще 10000. он что перекачивает новую дату?а если сообщений 100.000 ? 2. при обрыве сети у юзера , если юзер все пишет в локалхост сообщения добавляются но не отправляются, когда сеть восстаналивается, приходят сообщения и отправляются его сообщения, как оно синхронится, вставляет сообщения на свои места как в базе?
1. У них есть система апдейтов, в которых вся инфа и хранится, если ты долго не заходил, то есть запрос который говорит "дай мне все что я пропустил". То же самое, как ты ленту вк листаешь (листаешь с места, где в последний раз был) 2. Если был оффлайн, да, если это вэб - то хранит в локалсторе(если прил, то в sqlite каком-то) и после того как соединение появится, отправляешь. Но ни в коем случае не все комом, каждый - отдельно. Это быстро и атомарно
нихера не понятно...
Ну глянь ссыль который кинул тебе, если хочешь изучить как у них устроено
Обсуждают сегодня