Size: a a a

Clojure — русскоговорящее сообщество

2020 January 30

MA

Mike Ananev in Clojure — русскоговорящее сообщество
Mikhail Kuzmin
Вопрос не про кложу. Вот есть (микро)сервис, он шлет в шину сообщения: создали документ, поменяли документ и т.п. Event sourcing, message bus.
И другие сервисы подписываются на эти события.
Вопрос. Все это работает год и нужно добавить новый сервис, но так, чтобы у него были нужные данные. Т.е. что бы он как бы уже год получал эти сообщения. Накатывать лог событий за год? Вручную делать экспорты/импорты?
Видимо я не так гуглил. Подскажите, пожалуйста, ключевые слова.
1. Просто лог хорошо. Ежемесячные/еженедельные/квартальные снэпшоты еще лучше. То есть, если есть просто лог, то надо по нему бежать за целый год, чтобы получить актуальную картину, что очень не продуктивно. Если лог начали делать, то наверняка хотели, чтобы его кто-то читал? ну вот поставьте службу, которая периодически бежит по логу и делает снэпшоты. Снэпшот это снимок системы на какую-то точку времени. Тогда бежать по логу нужно не с начала, а от последнего снэпшота.

2. Лог должен иметь длину. Как по времени, так и по размеру. Создание бесконечных очередей, логов, файлов - плохая инженерная история. Нужно определеить скользящее окно для лога.

3. Тщательно продумать, что попадет в лог, а что нет. Какие сущности реально нужны, а без каких можно обойтись.  Прикиньте стоимость хранения. И сопоставьте со стоимостью восстановления с нуля.

4. Лучше восстановить базу сущностей из бэкапа другой системы для нового сервиса. И прогнать дельту сообщений из лога, с момента бэкапа до текущего момента.
источник

MA

Mike Ananev in Clojure — русскоговорящее сообщество
Так, что первое приходит на ум.
источник

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
Mike Ananev
1. Просто лог хорошо. Ежемесячные/еженедельные/квартальные снэпшоты еще лучше. То есть, если есть просто лог, то надо по нему бежать за целый год, чтобы получить актуальную картину, что очень не продуктивно. Если лог начали делать, то наверняка хотели, чтобы его кто-то читал? ну вот поставьте службу, которая периодически бежит по логу и делает снэпшоты. Снэпшот это снимок системы на какую-то точку времени. Тогда бежать по логу нужно не с начала, а от последнего снэпшота.

2. Лог должен иметь длину. Как по времени, так и по размеру. Создание бесконечных очередей, логов, файлов - плохая инженерная история. Нужно определеить скользящее окно для лога.

3. Тщательно продумать, что попадет в лог, а что нет. Какие сущности реально нужны, а без каких можно обойтись.  Прикиньте стоимость хранения. И сопоставьте со стоимостью восстановления с нуля.

4. Лучше восстановить базу сущностей из бэкапа другой системы для нового сервиса. И прогнать дельту сообщений из лога, с момента бэкапа до текущего момента.
Спасибо.
Видимо нужна третья служба, делающая снепшоты.
Просто может быть такая ситуация.
сервис 1 создает событие «создан документ».
Сервис 2 создает событие о создании производного документа.
При этом ни в одном из сервисов нет полных данных(всех полей) этих двух документов.
Вот и получается, что нужен третий сервис.
источник

СС

Сергей Суржик in Clojure — русскоговорящее сообщество
из разговоров :)
@takagiro, Жс — это и есть лисп с другим синтаксисом.
А что ты там выберешь, тихонько программируя себе в стол — никого не волнует, для работы в команде людей нужно выбирать то, что понимает большинство
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Я не понимаю жс :-)
источник

СС

Сергей Суржик in Clojure — русскоговорящее сообщество
а я не понимаю, почему жс это лисп)
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Ну, это сказавшего надо спрашивать
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Может он придерживается такой формулировки для любого языка
источник

СС

Сергей Суржик in Clojure — русскоговорящее сообщество
а вот и узнаем)
источник

СС

Сергей Суржик in Clojure — русскоговорящее сообщество
может ему скучно)
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
AST вроде в основе лежит
источник

СС

Сергей Суржик in Clojure — русскоговорящее сообщество
JavaScript's C-like syntax, including curly braces and the clunky for statement, makes it appear to be an ordinary procedural language. This is misleading because JavaScript has more in common with functional languages like Lisp or Scheme than with C or Java. It has arrays instead of lists and objects instead of property lists. Functions are first class. It has closures. You get lambdas without having to balance all those parens.

https://www.crockford.com/javascript/javascript.html
источник

СС

Сергей Суржик in Clojure — русскоговорящее сообщество
)))
источник

СС

Сергей Суржик in Clojure — русскоговорящее сообщество
посмеялись и хватит
источник

СС

Сергей Суржик in Clojure — русскоговорящее сообщество
сейчас бы еще выяснять а лисповый ли яваскрипт
источник

KR

Kostyantin Randomname in Clojure — русскоговорящее сообщество
Ну его хотели сделать лиспом изначально
источник

KR

Kostyantin Randomname in Clojure — русскоговорящее сообщество
Наверное единственная связь:)
источник

T

The2lb3oz4dr10½grOfHedgehogs in Clojure — русскоговорящее сообщество
> You get lambdas without having to balance all those parens.

:^\
источник

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
Лисп это лист процессинг. И синтаксис можно сделать любой, хоть вообще без скобок, двумерный с отступами как в Питоне
источник

СС

Сергей Суржик in Clojure — русскоговорящее сообщество
Цитата дня
Приложение в ебалион строк
источник