| 
 | 
| 
 
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI? 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  PetroNotC Sharp andreykaT, Ну дак погоди брать ответственность за запись в бд. Начни с того что пишешь читающий сервис. Так? Вот и опиши проблему дальше. проблему или все же задачу? задача выхватывать обновления из бд по ряду сущностей и перекладывать их в индекс(ы) эластика. детали в общем то не важны. но через бд видится проще в том смысле что не надо шатать текущие сервисы и интегрировать их с кафкой (или отдельными ее топиками). ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 25.09.2020, 12:00 | 
  
  
  
   | 
||
| 
 
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI? 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  andreykaT, >проблему или все же задачу? = я тебе поражаюсь. В школе было Дано:.... Требуется..... И мы тебя тоже самое просим. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.09.2020, 04:53 | 
  
  
  
   | 
||
| 
 
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI? 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  andreykaT, > задача выхватывать обновления из бд по ряду сущностей = Так как БЛ ты скрыл, то решение в лоб это не триггер, а JOB в бд. Сканирует с нужной частотой базу по полю myupdate CREATE OR REPLACE TRIGGER trg_products BEFORE INSERT OR UPDATE ON products FOR EACH ROW BEGIN :new.myupdate := sysdate; END; ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.09.2020, 05:01 | 
  
  
  
   | 
||
| 
 
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI? 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  andreykaT, По этому триггеру бд не встанет под нагрузкой ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.09.2020, 05:03 | 
  
  
  
   | 
||
| 
 
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI? 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  andreykaT, Кроме того, в хибере уже есть счетчик версии сущности int field Можешь добавить в анализ и его. Но основное это новое свое поле метки времени. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.09.2020, 05:06 | 
  
  
  
   | 
||
| 
 
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI? 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  PetroNotC Sharp andreykaT, Кроме того, в хибере уже есть счетчик версии сущности int field Можешь добавить в анализ и его. Но основное это новое свое поле метки времени. в хибере много че есть. и интерцепторы и ивенты например. одна проблема. то место где хибер оно как бы нешатаемо и перебирать пару сотен методов или там сущностей чтоб одни махом (все сломать нахер) вариант не очень. нет хибера. забудь про него. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.09.2020, 10:32 | 
  
  
  
   | 
||
| 
 
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI? 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  PetroNotC Sharp andreykaT, > задача выхватывать обновления из бд по ряду сущностей = Так как БЛ ты скрыл, то решение в лоб это не триггер, а JOB в бд. Сканирует с нужной частотой базу по полю myupdate CREATE OR REPLACE TRIGGER trg_products BEFORE INSERT OR UPDATE ON products FOR EACH ROW BEGIN :new.myupdate := sysdate; END; ты предлагаешь триггером выставлять тихонечко значения в полях на запись вместо того чтоб создать новую запись? выигрыш я тут вижу в том что у нас не будет второй таблицы. ну или только если перформанс этого подхода будет на мульон порядков выше. из минусов.. представь задачу мне апстрим сервиса одного мало. как мне запустить 5 сервисов которые будут поллить базу и чтоб они выхватывали только свою часть данных? плюс еще мне ж надо будет где-то оффсет хранить для одного или икс полл-сервисов. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.09.2020, 10:33 | 
  
  
  
   | 
||
| 
 
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI? 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  andreykaT, >представь задачу мне апстрим сервиса одного мало. как мне запустить 5 сервисов которые будут поллить базу и чтоб они выхватывали только свою часть данных? = мы по кругу пошли? Проблема в каждом сервисе написать (псевдокод) select field from t where myupdate > sysdate - 1 ? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.09.2020, 15:52 | 
  
  
  
   | 
||
| 
 
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI? 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  andreykaT, >плюс еще мне ж надо будет где-то оффсет хранить для одного или икс полл-сервисов. Новое ТЗ в полтора слова на иврите? Переведи. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 26.09.2020, 15:53 | 
  
  
  
   | 
||
| 
 
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI? 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  crutchmasterЭто не очевидно? Ты отправляешь вызов по сети и ждешь, пока придёт ответ. Пакеты тебе могут притди не один  за другим, возможно потребуется повторная передача, по этому же интерфейсу идут пакеты для других приложений и т.д и т.п. Синхронно (a->b->c) работает только процессор и то не всегда. Спасибо, Ссылкой на спеку не поделитесь ? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.09.2020, 08:28 | 
  
  
  
   | 
||
| 
 
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI? 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  kolchanovМожет это оффтопик, но прежде чем обсуждать паттерны и тебования, попробуй сформулировать, почему и когда  бизнес готов платить огромные деньги за микросервисы, не смотря на огромные проблемы с целостностью данных, cross domain отчетностью, большим временем отклика и т.д. И это явно не просто хайп, потому что люди умеют считать деньги. Дай свыше им здоровья ! ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.09.2020, 09:18 | 
  
  
  
   | 
||
| 
 
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI? 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  PetroNotC Sharp andreykaT, >плюс еще мне ж надо будет где-то оффсет хранить для одного или икс полл-сервисов. Новое ТЗ в полтора слова на иврите? Переведи. смотри. сейчас план такой - консамер полит базу, выгребает икс записей, превращает их в мессаджи и пуляет в кафку после успешного пулла (пулл, пулять. ого. надо запомнить), стирает выгребленное из бд. стейта нет. между поллингом упал - всем пофиг. теперь сервис который гребет по таймстампу. откуда и как ему знать между каким и каким таймстампом ему надо выгребать данные? я про этот оффсет. сверху пример - отметка в базе - ноль записей. тут мне где то оффсет хранить надо или как то сами записи помечать как отгруженные. второй вариант не очень ибо требует апдейт+1 ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.09.2020, 11:21 | 
  
  
  
   | 
||
| 
 
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI? 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  andreykaT, Ты сначала ответь утвердительно что понял мой вариант. select field from t where myupdate > sysdate - КОНСТАНТА_МИЛЛИСЕКУНД. Константа в зависимости от железа иинагрузки Например 1000мсек. - это понятно? Теперь расскажи откуда консумер знает когда выгребать? Итого два вопроса. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.09.2020, 12:00 | 
  
  
  
   | 
||
| 
 
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI? 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  PetroNotC Sharp andreykaT, Ты сначала ответь утвердительно что понял мой вариант. select field from t where myupdate > sysdate - КОНСТАНТА_МИЛЛИСЕКУНД. Константа в зависимости от железа иинагрузки Например 1000мсек. - это понятно? Теперь расскажи откуда консумер знает когда выгребать? Итого два вопроса. отличный вариант. а если рассинхрон? ты либо чо нить пропустишь либо задублируешь. а если в какой то момент продюсер упал? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.09.2020, 12:23 | 
  
  
  
   | 
||
| 
 
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI? 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  andreykaT, 1. В моем варианте нет продюсера. Есть сервисА, Б, С, N. 2. Подробнее про рассинхрон сервисаА расскажи. С примерами. Потом уже про "упал" и космические катаклизмы. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.09.2020, 13:47 | 
  
  
  
   | 
||
| 
 
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI? 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  andreykaT, Если мой триггер заменить на твой, то как раз будет рассихрон и дублирование вероятность. Ваш кеп. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.09.2020, 14:00 | 
  
  
  
   | 
||
| 
 
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI? 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  в моем тригере будет дабл если два раза обновится одна и та же запись. ну заапдейть триггер чтоб был инсерт если больше такого ентити айди нет. либо схлопывай в сет записи и шли мессаджи уникальными айди. но даже тут если вдруг у тебя будет дабл это не так страшно если вдруг айди вообще не уйдет. например, потому что рассинхрон был где то. тут это в принципе исключено. запись делается при коммите, запись всегда будет прочтена. единственный кейс если запись пропадет - это только где то в недрах кафки. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.09.2020, 20:28 | 
  
  
  
   | 
||
| 
 
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI? 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  andreykaT, >в моем тригере = блин, я его спрашиваю про свой вариант. А он сплошным текстом всё в кучу без абзацев. Попробуй сформулировать мысль с нумерацией: 1... 2... 3... Где дублирование в моем варианте? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 28.09.2020, 07:50 | 
  
  
  
   | 
||
| 
 
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI? 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  PetroNotC Sharp Ты сначала ответь утвердительно что понял мой вариант.  select field from t where myupdate > sysdate - КОНСТАНТА_МИЛЛИСЕКУНД. Что то херня, что то херня если посмотреть как устроены matview логи в оракле, то там в snaptime$$ изначально ставится время, которое довольно далеко в будущем от текущего момента (4000 год чтоли), а никак не текущее время (тут с определением текущего времени не все гладко в плане того, что время вставки в лог - так себе якорь, и время фиксации изменений тоже так себе), а потом записи из лога либо удаляются (если один консюмер), либо snaptime$$ выставляется в дату запуска джоба (если несколько консюмеров), поэтому запрос типа "дай мне что добавилось с последнего запуска" работает более-менее вменяемо. Если же смотреть на задачу в более общем виде, то идея типа "мы приложение менять не хотим, да и что-то забыть можем, поэтому давайте создадим лог на таблицы, который будем разбирать" - она откровенно так себе, потому что ну очень сильно попахивает ETL/ELT, что в абсолютном большинстве случаев получится какая-то неподдерживаемая хрень, почему так будет: - если посмотреть на вакансии по ETL/ELT, то там можно невооруженным взглядом заметить, что у них у всех довольно общий паттерн: нужно знать какую-то более-менее распространенную систему, SQL и какие-то скриптовые ЯП начиная от петона и заканчивая шелом, т.е. в целом практика такая, что ETL/ELT обычно строят из говна и палок. - в бизнес-приложении мы работаем с бизнес-сущностями, а не с таблицами, ровно также если говорить о messaging, то там тоже бизнес события ходят, а в решении "на тригерах" мы сначала бизнес-сущности превращаем в таблицы, а потом из таблицы пытаемся получить бизнес-событие, и при этом утверждаем, что так типа надежно, не нужно ломать текущее приложение и пр., на самом же деле получится так, что чтобы из лога сформировать бизнес-событие, придется в ETL/ELT-поделку воткнуть бизнес-логику, а потом еще придется за этой поделкой следить постоянно - а там вместо вменяемой доменной модели будет какой-то говнокод Исходя из вышесказанного куда лучше немного разломать приложение на хибере чем прикручивать откровенные костыли. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 28.09.2020, 09:07 | 
  
  
  
   | 
||
| 
 
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI? 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  возможно. как ломать будем? пушить сразу в очередь? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 28.09.2020, 09:10 | 
  
  
  
   | 
||
| 
 
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI? 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Андрей Панфилов, Я ни разу не слышал что в субд метка времени на запись имеет проблемы. Либо я не понял вас. Нужен пруф. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 28.09.2020, 10:07 | 
  
  
  
   | 
||
| 
 
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI? 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  andreykaT возможно. как ломать будем? пушить сразу в очередь? Пушить в очередь это создать другую архитектуру со своей еще одной бд очереди. Message driven architecture Перевожу коротко его пост. - второй его абзац это ответ на ваш триггер с созданием лога изменений. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 28.09.2020, 10:19 | 
  
  
  
   | 
||
| 
 
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI? 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  PetroNotC Sharp Андрей Панфилов, Я ни разу не слышал что в субд метка времени на запись имеет проблемы. Либо я не понял вас. Нужен пруф. Если я правильно понял Андрея, то он видет проблему в том, что "времени записи" две штуки: 1. когда прошел INSERT 2. когда прошел COMMIT В триггере Вы скорее всего будете оперировать первым, а реально выгребать со стороны читателя более правильно по второй. Вариант с простановкой времени вот лично мне совершенно не нравится. Я бы или просто измененные записи помечал, а при репликации убирал флаг (но плохо для производительности и блокировки), либо бы использовал очередь. Очередь хороша еще и тем, что кроме INSERT?/UPDATE, есть еще и DELETE. А при DELETE метку времени банально некуда ставить. IMHO Андрей Панфилов Исходя из вышесказанного куда лучше немного разломать приложение на хибере чем прикручивать откровенные костыли. В большинстве случаев разломать может потребоваться почти все приложение. Т.к. бизнес-сущность может встречаться в 100500 местах. Обычно бизнес сущности более-менее мапятся на таблицу(ы). Т.ч. особой костыльности лично я не вижу. К тому же, задача репликации обычно более системная, чем прикладная. И переусложнять прикладной софт системными задачами, которые легко решить на уровне БД (триггер), тоже особого смысла нет. IMHO ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 28.09.2020, 10:22 | 
  
  
  
   | 
||
| 
 
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI? 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Leonid Kudryavtsev, Два времени в одно поле? Одна бизнес транзакции нового объекта. Вставка. Может через час если изменения то триггер обновит поле. Когда job робот будет проходить, тогда он и захватит новый или уже модифицированный. Так? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 28.09.2020, 10:28 | 
  
  
  
   | 
||
| 
 
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI? 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Leonid Kudryavtsev, >Вариант с простановкой времени вот лично мне совершенно не нравится. Я бы или просто измененные записи помечал, а при репликации убирал флаг = я же про репликацию и отправку куда то вообще не говорил. Выше 4 умных сервиса САМИ берут изменения. Если отправлять в кафку или очередь то я аредлагал JOB. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 28.09.2020, 10:30 | 
  
  
  
   | 
||
| 
 | 

start [/forum/topic.php?fid=59&msg=40003229&tid=2120626]:  | 
    0ms | 
get settings:  | 
    9ms | 
get forum list:  | 
    13ms | 
check forum access:  | 
    3ms | 
check topic access:  | 
    3ms | 
track hit:  | 
    47ms | 
get topic data:  | 
    10ms | 
get forum data:  | 
    2ms | 
get page messages:  | 
    58ms | 
get tp. blocked users:  | 
    1ms | 
| others: | 14ms | 
| total: | 160ms | 

| 0 / 0 | 

На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даете согласие с использованием данных технологий.