Итак, я пытаюсь оптимизировать кодирование / декодирование между микросервисами
Если я отправляю несколько обновлений с сервера A на серверы B, C и D, но B, C и D не нужны все обновления с сервера A
Я пишу это в Node.js и в настоящее время сериализуюсь с JSON.stringify () и JSON.parse (), но собираюсь использовать msgpack и для некоторых вещей.
Было бы лучше сделать что-то вроде
for each UPDATE in server A
for each receiving_server (B, C, D)
if receiving_server needs UPDATE from A
receiving_server.updates.push(UPDATE)
затем вы снова проходите через принимающие серверы, кодируете и отправляете
for each receiving_server (B, C, D)
receiving_server.send(encode(receiving_server.updates))
Так что проблема в том, что вы дважды перекодируете одни и те же данные. Теперь мне интересно, будет ли следующее оптимизация производительности или снижение
имеет обновления, каждый из которых закодирован ОДИН РАЗ, затем добавляет их в массив и затем кодирует массив
for each UPDATE in server A
ENCODED_UPDATE = encode(UPDATE)
for each receiving_server (B, C, D)
if receiving_server needs UPDATE from A
receiving_server.encoded_updates.push(ENCODED_UPDATE)
теперь вы делаете то же самое, что и раньше, но на этот раз вы кодируете
массив уже закодированных обновлений .. Я не совсем уверен, что эффект низкого уровня того, что здесь происходит. Поскольку элементы в массиве уже закодированы, это экономит время кодирования при кодировании всего массива? или это вообще не имеет никакого эффекта, и его кодирование так же, как если бы оно было исходной строкой?
for each receiving_server (B, C, D)
receiving_server.send(encoded_updates(receiving_server.updates))
Тогда мне также любопытно, насколько сильно это влияет на декодирование, меня это не так беспокоит, так как я скорее оптимизирую сторону кодирования, чем декодирование