Size: a a a

Node.js — русскоговорящее сообщество

2021 April 16

N

Nikita in Node.js — русскоговорящее сообщество
🍿
источник

RP

Roman Piontik in Node.js — русскоговорящее сообщество
Значит, делаю я IoT платформу. Не поверите на JavsScript :)) Так вот, сейчас я реализую задача синхронизации области файловой системы контроллера с облаком. Как она происходит:
1. При изменении на контроллере накапливаются дифы.
2. Одновременно с этим и в облаке могут быть изменения.
Т.е. в АТОМАРНОЙ операции нужно произвести синхронизацию. Атомарной, значит или все или ничего.
Что я делаю:
3. Блокирую файловую область на контроллере и снимаю дамп по дифам.
4. Готовлю POST запрос
5. Отправляю его в облако.
6. Облако принимает, обрабатывает изменения, анализуруя их по приоритету. Если у него есть обновление того же файла, но позже, приоритет имеет облако.
7. В ответа отправляет дамп файловой области с теми изменениями который должен накатить контроллер.
Таким образом, за одну операцию достигается синхронизация с облаком.
источник

RP

Roman Piontik in Node.js — русскоговорящее сообщество
Контроллер весь процесс контролирует без проблем.
источник

RP

Roman Piontik in Node.js — русскоговорящее сообщество
Т.е. он точно знает достиг ли успеха его запрос.
источник

RP

Roman Piontik in Node.js — русскоговорящее сообщество
А вот с облаком есть проблема. Там NodeJS и мне важно понять - достиг ли мой ответ контролера?
источник

RP

Roman Piontik in Node.js — русскоговорящее сообщество
Как план "д" у меня обработка TCP/IP соединений где я контролирую все. Но... не хотелось бы.
источник

N

Nikita in Node.js — русскоговорящее сообщество
если не достиг, то что делать?

считать контроллер мертвым и вызвать инженеров?
источник

RP

Roman Piontik in Node.js — русскоговорящее сообщество
Все остается как есть. На обоих площадках. До следующего синка.
источник

RP

Roman Piontik in Node.js — русскоговорящее сообщество
Дифы удаляются только при выполнении операции.
источник

GS

Grigorii K. Shartsev in Node.js — русскоговорящее сообщество
На самом деле ты просто не рассказал, какая на самом деле задача решается, а дальше пошли противоречия в требованиях)
источник

RP

Roman Piontik in Node.js — русскоговорящее сообщество
Да :) Ну простите. Хотел упростить
источник

N

Nikita in Node.js — русскоговорящее сообщество
насколько большие дифы?
источник

RP

Roman Piontik in Node.js — русскоговорящее сообщество
Максимум самый максимум 1 мегабайт
источник

RP

Roman Piontik in Node.js — русскоговорящее сообщество
Разговор о 10ках и 100 кб
источник

RP

Roman Piontik in Node.js — русскоговорящее сообщество
Это за весь POST запрос.
источник

GS

Grigorii K. Shartsev in Node.js — русскоговорящее сообщество
Просто в таком контексте задачи уже можно искать другие подходы, связанные как с IoT задачами, так и с синхронизацией состояния в распределённой системе.
(гуглить по распределённым транзакциям, например)
источник

RP

Roman Piontik in Node.js — русскоговорящее сообщество
Ну эти практики я как раз промониторил. Из них решение и возникло. Оно всем хорошо. Только нужно в облаке проконтролировать получение пакета клиентом.
источник

N

Nikita in Node.js — русскоговорящее сообщество
так а если ничего не происходит при разрыве соединения, и вы просто ждете некст синка, зачем вам это контролировать?
источник

RP

Roman Piontik in Node.js — русскоговорящее сообщество
Потому, что если все прошло успешно, мне нужно удалить дифы.
источник

RP

Roman Piontik in Node.js — русскоговорящее сообщество
Чтобы в следующий раз не слать лишнюю инфу.
источник