|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Вот есть некий набор микросервисов с набором спецификаций на OpenAPI, который теоретически вроде как призван разрулить бардак, однако на практике у меня возникают некого рода "трудности", а именно: - существует кодогенератор ( https://github.com/swagger-api/swagger-codegen ) который умеет генерировать интерфейсы и DTO, он мне не особо нравится, поскольку хочет чтобы я использовал OffsetDateTime, а у меня несколько иные предпочтения как работать со временем, ну да ладно, вроде как получить то что я ожидаю можно, хоть и через жопу - в OpenAPI можно задекларировать, что на разные статусы можно возвращать разный тип результата, и с этим как-то вообще непонятно что делать, т.е. генератор в интерфейсе лепит ResponseEntity<DTOType>, а OpenAPI-спецификация разрешает в военное возвращать что-то еще (там по большей части другой результат возвращается на 4xx и 5xx и можно извернуться через выкидывание исключения, но как-то вообще криво) - есть эндпойнты с кучей необязательных параметров (например поиск чего-то по набору полей), вот если использовать в качестве клиента jaxrs или feign, то нужно либо все эти параметры таскать за собой, либо наследовать клиентский интерфейс и в нем через default вычленять параметры, которые нужны это так у всех или только у меня? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2020, 09:21 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфилов- в OpenAPI можно задекларировать, что на разные статусы можно возвращать разный тип результата, и с этим как-то вообще непонятно что делать, т.е. генератор в интерфейсе лепит ResponseEntity<DTOType>, а OpenAPI-спецификация разрешает в военное возвращать что-то еще (там по большей части другой результат возвращается на 4xx и 5xx и можно извернуться через выкидывание исключения, но как-то вообще криво) Видел решение этой проблемы через ручное определение типа объекта. В интерфейсе определяли ResponseEntity<String>, а при получении ответа анализировали код ошибки HTTP и сами из строки формировали объект. https://stackoverflow.com/questions/35797762/how-to-use-resttemplate-with-multiple-response-types/35798228#35798228 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2020, 10:46 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
А что этот feign толковый? Очень на Retrofit похож ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2020, 13:54 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
chpasha А что этот feign толковый? Очень на Retrofit похож ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2020, 15:09 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфилов, Микросервисы через хттп - это странно. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 07:07 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster Микросервисы через хттп - это странно. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 08:07 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфилов O_o, на голубиной почте нужно делать? amqp/kafka. Нахрена соединение поднимать на каждое сообщение? Это же дорохо. Ну и прочие pub/sub и каналы обмена как делать на хттп? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 08:40 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster amqp/kafka. Нахрена соединение поднимать на каждое сообщение? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 09:08 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфилов У меня есть запрос (не команда и не событие), ответ на который я хочу получить здесь и сейчас amqp умеет так делать тоже. Андрей Панфилов складывать в условно персистентное хранилище? rabbitmq, например, это - брокер сообщений, а не хранилище. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 09:37 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфилов зачем Ну, например, чтобы не просрать запрос, пока http шляпа делает рестарт. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 10:31 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster Андрей Панфилов У меня есть запрос (не команда и не событие), ответ на который я хочу получить здесь и сейчас amqp умеет так делать тоже. crutchmaster Ну, например, чтобы не просрать запрос, пока http шляпа делает рестарт. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 11:57 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster Андрей Панфилов O_o, на голубиной почте нужно делать? amqp/kafka. Нахрена соединение поднимать на каждое сообщение? Это же дорохо. Ну и прочие pub/sub и каналы обмена как делать на хттп? кафка головного мозга подоспела (это не к тебе лично это мысли вслух) юзать надо то что надо а не кафку всегда везде. если тебе нужны синхронные вызовы и ты поверх кафки начнешь колхозить костылятину, то уж лучше хттп или любой другой формат рпц. имхо. есть распределение где асинхронка - там очереди или какие нибудь ящики, если синхронка то - юзай синхронку а не сову на кактус натягивай. зы. во как я заговорил :) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 12:02 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Я не понимаю каким образом мы в топик втащили Кафку? Какой был информационный повод для этого? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 12:08 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
mayton Я не понимаю каким образом мы в топик втащили Кафку? Какой был информационный повод для этого? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 12:24 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
andreykaT там очереди или какие нибудь ящики, если синхронка то - юзай синхронку Чем принципиально брокер сообщений хуже этой вашей синхронки с хттп, когда каждый сам себе брокер? Нужен будет балансировщик, также притяните сюда nginx и какая в *опу разница в итоге? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 12:43 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфилов совершенно не означает что вызов действительно синхронный, т.е. никаких контрактов для отвечающей стороны здесь не появляется. А зачем вам вообще какие-то гарантии, если данным отношение типа "Ну просрали и просрали запрос, что с того?" Андрей Панфилов А ответ на запрос, который "не просрали", спустя минуту мне уже не нужен. Так никто не мешает брокеру его дропнуть через n сек в очереди. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 12:46 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster А зачем вам вообще какие-то гарантии, если данным отношение типа "Ну просрали и просрали запрос, что с того?" ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 13:05 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster andreykaT там очереди или какие нибудь ящики, если синхронка то - юзай синхронку Чем принципиально брокер сообщений хуже этой вашей синхронки с хттп, когда каждый сам себе брокер? Нужен будет балансировщик, также притяните сюда nginx и какая в *опу разница в итоге? тем что нгиникс по-сути тот же брокер, только синхронный. разница в том что если тебе надо формат взаимодействия запрос-ответ_на_запрос, то твоя кафка будет как пятая нога собаке. вообще, есть 4 основных формата интеграции сервисов - очереди, ремот-процедур-кол, бд и файлы (что имхо по-сути бд). это НЕ только кафка и НЕ только месседжинг. как вкарячивают очереди и асинхронку там где она не нужна я видел. слава Майтону сам так не делал там где это действительно НЕ НАДО. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 13:06 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster Андрей Панфилов зачем Ну, например, чтобы не просрать запрос, пока http шляпа делает рестарт. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 13:19 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp как можно синхронно просрать запрос? Дайте пример! ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 13:28 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфилов PetroNotC Sharp как можно синхронно просрать запрос? Дайте пример! Ну тут как в анекдоте: С моей стороны пули вылетают! Проблема в принимающей стороне! <:o) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 14:06 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster Андрей Панфилов совершенно не означает что вызов действительно синхронный, т.е. никаких контрактов для отвечающей стороны здесь не появляется. А зачем вам вообще какие-то гарантии, если данным отношение типа "Ну просрали и просрали запрос, что с того?" Андрей Панфилов А ответ на запрос, который "не просрали", спустя минуту мне уже не нужен. Так никто не мешает брокеру его дропнуть через n сек в очереди. просрать могут все, вопрос что ты будешь делать когда узнаешь что просрал. ну например, ничего или ретрай или еще кучи всего. зависит от задачи и требований. это в принципе для любого решения так ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 15:26 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp crutchmaster пропущено... Ну, например, чтобы не просрать запрос, пока http шляпа делает рестарт. тоже интересно. может типа "не достучался потому что занят был"? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 15:27 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфилов PetroNotC Sharp как можно синхронно просрать запрос? Дайте пример! - ну для этого есть ACKNOWLEDGE ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 15:45 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
В топике - все правы. Но архитектурно, когда мы рассматриваем системы на базе очередей нам надо предусмотреть больше кейсов чем при синхронном вызове удалённого сервиса. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 15:52 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
mayton, В том то и дело, что про очереди разговоров в ТЗ не было. Либо они нужны, либо это оверхед. ПолуОчередей не бывает. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 17:34 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Kachalov - ну для этого есть ACKNOWLEDGE - какой-то вменяемый ответ - ошибка - таймаут (фактически ошибка, но после ее возникновения состояние системы становится непонятным) асинхронное взаимодействие (в т.ч. использование очередей) в первую очередь направлено на борьбу с таймаутами, потому что компенсировать в коде таймауты довольно трудоемко, все остальное в духе "ну мы там можем количество подписчиков регулировать и тем самым куда-то масштабироваться" - это свойство асинхронного взаимодействия, а не jms, amqp и прочих стремных аббревиатур, единственное что здесь еще играет хоть какую-то существенную роль - это возможность персистентных соединений, а заявления в духе: crutchmaster Ну и прочие pub/sub и каналы обмена как делать на хттп? Ну так к чему это все... ACK в очередях предназначен для того, чтобы пометить что сообщение было как-то обработано, отправителю от этого ACK не тепло, ни холодно ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 18:30 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфилов Kachalov - ну для этого есть ACKNOWLEDGE - какой-то вменяемый ответ - ошибка - таймаут (фактически ошибка, но после ее возникновения состояние системы становится непонятным) - "для этого", т е для получения "вменяемого ответа" что сообщение доставлено, а то и успешно обработано (CLIENT_ACKNOWLEDGE); - в мессаджинге тоже возможно синхронное взаимодействие (и таймаут); - не стоит противопоставлять мессаджинг и HTTP, так как возможен мессаджинг и через HTTP, наверное лучше использовать термин REST ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 19:35 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Кейс. У меня есть юзер он делает рест запрос к сервису. Сервису надо юзера авторизовать а именно с его кремами сходить на другой сервис и спросить его права потом согласно прав построить ответ и внутри зттп отдать. Как будем очередь прикручивать? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 19:42 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
andreykaT Кейс. У меня есть юзер он делает рест запрос к сервису. Сервису надо юзера авторизовать а именно с его кремами сходить на другой сервис и спросить его права потом согласно прав построить ответ и внутри зттп отдать. Как будем очередь прикручивать? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 19:48 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Kachalov - "для этого", т е для получения "вменяемого ответа" что сообщение доставлено, а то и успешно обработано (CLIENT_ACKNOWLEDGE); Kachalov - в мессаджинге тоже возможно синхронное взаимодействие (и таймаут); в мессаджинге тоже возможно синхронное взаимодействие через жопу . ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 19:52 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Ключевое выделено. Конечно можно да. И шаблоны есть ла. Но вот какие это шаблоны жирно написано ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 20:04 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Учитывая релятивизм - мы обречены строить мессенджинговые системы между планетами и галлактиками в следующие сотню-тысячу лет. Синхронизм не будет там работать. Слишком велик лаг. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 20:27 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфилов Давайте так: я уверен на 100%, что ACK - это фишка консумера, а не продюсера, если вы так уверены, что при ACK что-то прилетает продюсеру (интересен сам механизм доставки сообщений продюсеру, если он ничего не слушает ), то можете привести в подтверждение правоты либо ссылку на документацию, либо на реализацию. - да, я не правильно понял проблему, подумал что речь идет о таймауте при обработке запроса получателем и о том что брокер не знает статус сообщения, т е не гарантируется доставка и обработка запроса слушателем. Но и при необходимости доставки уведомления от консумера продюсеру существует решение - это паттерн Request-Reply , который реализуют через временную очередь, которая создается продюсером и ReplyTo ( пример , а в Spring Integration это еще проще) Андрей Панфилов Kachalov - в мессаджинге тоже возможно синхронное взаимодействие (и таймаут) в мессаджинге тоже возможно синхронное взаимодействие через жопу . - не знаю что там у кого с жопой, но это рабочий механизм, причем реализованный не только в некоторых конкретных брокерах, но и на уровне API в Spring Integration (например в DirectChannel). Вероятно это кому то нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 21:08 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Kachalov но это рабочий механизм, причем реализованный не только в некоторых конкретных брокерах, но и на уровне API в Spring Integration (например в DirectChannel). Вероятно это кому то нужно. как я уже пояснял другому оратору ( 22197194 ) вы также не неправильно понимаете слово "работает": ваше "вероятно это кому то нужно" возникает когда горе-архитекторы впаривают заказчику без должной проработки откровенную дичь, а потом пытаются мужественно преодолевать трудности: - в Spring Integration (в Apache Camel тоже) оно есть просто потому, что это реализация EIP - в EIP эту модель взаимодействия описали просто потому что она существует в JMS - в JMS она появилась потому что на момент создания спецификации существовали вендорские реализации с поддержкой функциональности:Java™ Message ServiceJMS provides the JMSReplyTo message header field for specifying the Destination where a reply to a message should be sent. The JMSCorrelationID header field of the reply can be used to reference the original request. See Section 3.4, “Message Header Fields” for more information. In addition, JMS provides a facility for creating temporary queues and topics that can be used as a unique destination for replies. There are many styles of request/reply supported by enterprise messaging products. From simple ‘one message request yields a one message reply’ to ‘one message request yields streams of messages from multiple respondents’. Rather than architect a specific JMS request/reply abstraction, JMS provides the basic facilities on which many can be built. For convenience, JMS defines request/reply helper classes (classes written using JMS) for both the PTP and Pub/Sub domains that implement a basic form of request/reply. JMS providers and clients may provide more specialized implementations. - а в вендорских реализациях оно было потому что иначе без этого невозможно было впарить клиенту только какое отношение request/reply имеет к микросервисам? Адепты микросервисов топят за некий призрачный loose coupling, и при этом втихую реализуют RPC через жопу и умалчивают что это не что иное как temporal coupling, нарушая свои же собственные парадигмы. Зачем все это? У меня короткие идемпотентные запросы, результат которых нужен сейчас, а не когда кто-то там решит его обработать. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 22:47 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфилов оно есть просто потому - не слишком ли "просто" выходит? Вероятно не самые глупые люди проектировали API и брокеры сообщений Андрей Панфилов какое отношение request/reply имеет к микросервисам? Адепты микросервисов топят за некий призрачный loose coupling - request/reply не отменяет loose coupling, во всяком случае я не вижу тут нарушения этой парадигмы Андрей Панфилов Зачем все это? У меня короткие идемпотентные запросы, результат которых нужен сейчас, а не когда кто-то там решит его обработать. - конкретно Вам возможно и незачем (со своей архитектурой Вы сами разбирайтесь, Вам видней - я отвечал на замечания относительно мессаджинга которые мне показались не справедливыми). Однако можно всегда задать вопрос: что будет с системой если она по каким то причинам начнет медленно обрабатывать запросы (сетевые проблемы, дисковые проблемы, проблемы при работе БД и т д)? Если запросы прибиваются по таймауту, то сколько висящих запросов может накопиться за это время? И не упремся ли мы в какие то лимиты сервера приложений (например по количеству потоков). В этом смысле асинхронный мессаджинг (для которого длительное хранение сообщений в очереди это скорее нештатная, хотя и ожидаемая, операция) позволяет сохранить работоспособность системы не завалив ее внутренними запросами ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 23:12 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Kachalov - request/reply не отменяет loose coupling, во всяком случае я не вижу тут нарушения этой парадигмы Messaging shouldn’t be used for queries Messaging anti-patterns in event-driven architecture When is an event not an event? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 23:26 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Kachalov Однако можно всегда задать вопрос: что будет с системой если она по каким то причинам начнет медленно обрабатывать запросы (сетевые проблемы, дисковые проблемы, проблемы при работе БД и т д)? Если запросы прибиваются по таймауту, то сколько висящих запросов может накопиться за это время? Этот вопрос мне кажется риторическим. Вы его можете адресовать совершенно к любой архитектуре даже самой дорогой и покрытой требованиями по NFR. Это нештатная ситуация и не бизнес-кейс. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 23:34 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Kachalov - не слишком ли "просто" выходит? Вероятно не самые глупые люди проектировали API и брокеры сообщений ... |
|||
:
Нравится:
Не нравится:
|
|||
15.09.2020, 23:51 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфилов Ну вы определитесь кто на ком стоял: request/reply - это фишка JMS, которая прямо в спецификации описана, если мы принимаем за истину, что JMS проектировали умные люди, то посмотрев на кафку, мы заметим, что там "в коробке" этого нет , исходя из этого можно предположить что кафку писали бомжи... или таки просто не стоит предлагать использовать неподходящий паттерн там где это не нужно? - message-oriented middleware и соответствующие шаблоны (в частности Request-Reply) появились до JMS - про бомжей - приписывать собеседнику слова которых он не говорил и на основе их строить какие то обвинения ... (почему то вспомнилось что в этом топике Вы неоднократно упомянули "жопу" и "очко" - понятно, психологическое явление, так называемая "анальная фиксация", я не кисейная барышня, но как то противно) - если в Кафке чего то нет, то не понятно почему это аргумент. В то время как если где то приложили усилия и реализовали ReplyTo значит стоит подумать зачем - я не предлагаю Вам ничего (о чем сказал в предыдущем посте), паттерн есть и хоть Вы десять раз повторите слово "жопа" он никуда не денется Андрей Панфилов Kachalov - request/reply не отменяет loose coupling, во всяком случае я не вижу тут нарушения этой парадигмы Messaging shouldn’t be used for queries Messaging anti-patterns in event-driven architecture When is an event not an event? - ну сначала расскажите "что ли", что за Бен Моррис такой с горы? Какой то архитектор, по первому образованию "The University of Manchester - Politics and modern history". Может не поленитесь и в двух словах, без этого Бена, изложите почему Request-Reply нарушает low coupling? Или кратко тут никак? В целом не вижу повода для дискуссии, тем более в стиле "как в пивной". Ну есть паттерн Request-Reply. Можно использовать, можно нет, смотря что за задача. У Вас вообще REST и мессаджинг не используется. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 00:38 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
mayton Kachalov Однако можно всегда задать вопрос: что будет с системой если она по каким то причинам начнет медленно обрабатывать запросы (сетевые проблемы, дисковые проблемы, проблемы при работе БД и т д)? Если запросы прибиваются по таймауту, то сколько висящих запросов может накопиться за это время? Этот вопрос мне кажется риторическим. Вы его можете адресовать совершенно к любой архитектуре даже самой дорогой и покрытой требованиями по NFR. Это нештатная ситуация и не бизнес-кейс. - ну почему же, можно заложить отказоустойчивость в архитектуру, а можно этого не делать. Все имеет свою цену. Возиться с месаджингом сложнее чем строить коммуникацию через REST. Но если простой связан с материальным ущербом, то можно и повозиться. Асинхронный месаджинг точно может помочь купировать проблемы с неожиданным всплеском нагрузки или ухудшением качества сети и сохранить работоспособность системы ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 00:47 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp как можно синхронно просрать запрос? Клиент отправил запрос. В это время сервер делает рестарт. Клиенту вернулась дуля. Имеем ввиду, что клиенты-серверы - это всё микросервисы, а не чей-то браузер. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 05:02 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфилов принимающая сторона сообщение прочесть не смогла, на вашей стороне вместо сообщения об ошибке возникает таймаут Если хттп сервер что-то там не шмог и завис, таймаута не возникает, я так понимаю? Андрей Панфилов на вашей стороне вместо сообщения об ошибке Что-то там возникает, я тоже понимаю, от святого духа, а не от того, что connection refused? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 05:28 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
mayton Учитывая релятивизм - мы обречены строить мессенджинговые системы между планетами и галлактиками в следующие сотню-тысячу лет. Синхронизм не будет там работать. Слишком велик лаг. А модель в ВУЗАХ это упрощенная модель реального мира. Ключевое слово - упрощенная. Вы в курсе как управляли луноходом наши водители сидя на земле? Что было с лагом?))))) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 05:47 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфилов асинхронное взаимодействие (в т.ч. использование очередей) в первую очередь направлено на борьбу с таймаутами Не только и не обязательно. Суть в том, что у тебя есть одно поднятое соединение, ты через него работаешь, а не открываешь/закрываешь его на каждый этот свой вызов рпц. Имея брокер можно хоть херачить броадкастом и для этого не нужно знать адреса/порты всех твоих новых/старых миркосервисов, не нужно делать балансировку руками и много что еще. А взамен всего-то надо организовать рпц - т.е. после отправки слушать указанную тобой же очередь. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 05:47 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
andreykaT тем что нгиникс по-сути тот же брокер, только синхронный. разница в том что если тебе надо формат взаимодействия запрос-ответ_на_запрос, то твоя кафка будет как пятая нога собаке. У меня запрос - ответ и раббит не как пятая нога. Вообще не вижу никаких проблем и недоумеваю, в чем вы там видите существенную разницу. хттп поднимает соединение, отправляет данные, ждёт ответа, закрывает соединение. С раббитом делается всё абсолютно тоже самое, только соединение не закрывается. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 05:47 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster, Таймаут это счетчик времени на клиенте. А не на сервере который завис LOL))) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 05:48 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster, > С раббитом делается всё абсолютно тоже самое = есть слово оверхед в архитектуре. Лишний глюкавый код. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 05:50 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster, Асинхронный код всегда сложнее синхронного. Просто по определению. Как автомат коробка сложнее механической. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 05:52 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
mayton надо предусмотреть больше кейсов чем при синхронном вызове удалённого сервиса РПЦ? Сделать, чтобы рпц вызов на нашем любимом яп ждан listener и выглядел так, как будто он синхронный? Что еще? хттп ошибки? Так тут асихрнонных/синхронный вызов вообще не причём. Таймауты на дохлый сервис, чтобы работало как connection refused? Так этого наоборот надо избегать. Что еще? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 05:53 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
andreykaT Как будем очередь прикручивать? Также, как и хттп ты прикрутил. Только вместо адреса другого сервиса будет адрес брокера + очередь. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 05:58 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Таймаут это счетчик времени на клиенте. А не на сервере который завис LOL))) Я в курсе. Но остаётся открытым вопрос с таймаутами: разница в чём? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 06:01 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Асинхронный код всегда сложнее синхронного. Просто по определению. Сложнее, но не прям уж чтобы настолько. Если речь идёт о микросервисах, то там будет еще куча других сложностей, для которых фичи брокеров будут велосипедить поверх хттп. И зачем тащить хттп внутрь, если сразу можно все сделать нормально? Мне лично не понятно, но ТС возбудился по этому поводу почему-то. Ну да ладно. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 06:09 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Что там по теме треда? Андрей Панфилов существует кодогенератор Не нравится их генератор - сделай свой или допили этот. Делов-то Андрей Панфилов это так у всех или только у меня? А что, весь софт должен быть уже написан а программисты только юзать готовое? Так с этим будет справляться любой птушник, зачем платить нам деньги? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 06:14 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфилов отправителю от этого ACK не тепло, ни холодно Отправителю от того, что он по хттп что-то отправил тоже не сильно жарко. Решаем задачу какую? Получатель завис? По хттп долго нет ответа, выбрасываешь таймаут. В очередях - тоже самое или таймаут нахождение в очереди, перевод сообщения в очередь просранных, обработка его там, ответ. Это один из вариантов. Ошибка соединения? Она не нужна. Получатель либо слушает, либо не слушает. Сообщение не обработано, см п.1. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 06:24 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster PetroNotC Sharp Таймаут это счетчик времени на клиенте. А не на сервере который завис LOL))) Я в курсе. Но остаётся открытым вопрос с таймаутами: разница в чём? Try поставить? Повтори вопрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 06:57 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster, >Сложнее, но не прям уж чтобы настолько. = прогер должен быть ленивым чтобы не писать больше чем в ТЗ. Было в ТЗ message driven architecture? https://www.google.com/search?q=message driven architecture&oq=message drive&aqs=chrome.1.0l2j69i57j0l2.8151j0j8&client=tablet-android-huawei&sourceid=chrome-mobile&ie=UTF-8 Или для тебя все едино? Вадя на сокетах напишет. Ты на кафке))) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 07:00 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Kachalov - если в Кафке чего то нет, то не понятно почему это аргумент. В то время как если где то приложили усилия и реализовали ReplyTo значит стоит подумать зачем - я не предлагаю Вам ничего (о чем сказал в предыдущем посте), паттерн есть и хоть Вы десять раз повторите слово "жопа" он никуда не денется Ну должна же хоть какая-то логика присутствовать, нет? Вот было утверждение, что организовывать RPC через HTTP якобы плохо, а нужно всенепременно использовать сообщения, мы берем и смотрим что же там творится в иконостасе адептов микросервисов - кафке, а там, опа, а оказывается что request/reply-то и нет, как-то странно, вам не кажется? А может быть такое, что ребята, которые эту кафку разрабатывали, посчитали что request/reply - это неправильный паттерн? Kachalov - ну сначала расскажите "что ли", что за Бен Моррис такой с горы? Какой то архитектор, по первому образованию "The University of Manchester - Politics and modern history". ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 07:12 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp в чем вопрос то? Срач начался тут: 22197361 И соответственно вопрос, чем таймаут на хттп отличается от любого другого. PetroNotC Sharp Было в ТЗ message driven architecture? Да. Андрей Панфилов есть некий набор микросервисов ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 07:14 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфилов там творится в иконостасе адептов микросервисов - кафке, а там, опа, а оказывается что request/reply-то и нет А в рабите оно есть. Ты на кавку так стригеррился что-ли? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 07:16 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster Андрей Панфилов там творится в иконостасе адептов микросервисов - кафке, а там, опа, а оказывается что request/reply-то и нет А в рабите оно есть. Ты на кавку так стригеррился что-ли? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 07:23 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфилов, рест в качестве ендпоинта для всяких браузеров,а нафига юзать рест для взаимодействия между своими микросервисами, где тонны сообщений летают туда-сюда, лично мне, не понятно. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 07:32 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster, Набор микросервисо не говорит автоматом об такой архитектуре. Иначе диапазон у тебя узковат. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 07:33 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster, >Срач начался тут: 22197361 Я не понял его проблемы обработать таймаут райзе. И отвечал вам на "просрали.... если зависли...." Это тоже в ТЗ оговаривается. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 07:36 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster рест в качестве ендпоинта для всяких браузеров,а нафига юзать рест для взаимодействия между своими микросервисами, где тонны сообщений летают туда-сюда, лично мне, не понятно. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 07:47 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Набор микросервисо не говорит автоматом об такой архитектуре. Ну а что там будет? Перекидывание хттп? Придёт время масштабировать притащим nginx. Как уже сказали - это типа все равно, что брокер, только хттп. И соединения также открываем/закрываем. И функционала меньше. И что выходит? хттп ради хттп? Мне не понятна позиция просто. PetroNotC Sharp Это тоже в ТЗ оговаривается. Да. Стасян тоже так любил говорить. Раз не оговаривается, можно сделать всё по минимуму, потом кто-нибудь перепишет. Я не говорю, что ТСу это НУЖНО (вопрос вообще не об этом), я говорю, что это - не аргумент. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 07:52 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 07:54 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster, Пожалуйста, скажите что означает слово оверхед. Чтобы мы на одной волне говорили. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 07:55 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Пожалуйста, скажите что означает слово оверхед. Накладные расходы на использование чего-либо. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 07:56 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster, Микросервисы это по сути взаимодействие классов. На другом уровне. Вызов класса асинхронно делать или нет? >Придёт время масштабировать притащим nginx. = это просто балансировщик. Перенаправляет с сервера А на сервер Б ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 07:57 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster PetroNotC Sharp Пожалуйста, скажите что означает слово оверхед. Накладные расходы на использование чего-либо. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 07:58 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster, >Да. Стасян тоже так любил говорить. Раз не оговаривается, можно сделать всё по минимуму, потом кто-нибудь перепишет. Я не говорю, что ТСу это НУЖНО (вопрос вообще не об этом), я говорю, что это - не аргумент. = профи дает ДВА решения. Ты и стасян даете ОДНО ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 07:59 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp пример теперь приведи ffi из одной среды в другую. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 08:01 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Вызов класса асинхронно делать или нет? Зависит от класса и того, что он делает. асинхронно Мы вроде как решили, что никакой разницы между (а)синхронно в хттп против рабита нет? PetroNotC Sharp это просто балансировщик Ну так очереди тоже работают в том числе, как балансировщик. В чем разница? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 08:04 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp = профи дает ДВА решения. Ты и стасян даете ОДНО Не понял претензии. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 08:05 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster PetroNotC Sharp = профи дает ДВА решения. Ты и стасян даете ОДНО Не понял претензии. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 08:17 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster PetroNotC Sharp как можно синхронно просрать запрос? Клиент отправил запрос. В это время сервер делает рестарт. Клиенту вернулась дуля. Имеем ввиду, что клиенты-серверы - это всё микросервисы, а не чей-то браузер. просто сервисы. тут за слово микро перед словом сервис могут и расстрелять. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 08:51 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Kachalov mayton пропущено... Этот вопрос мне кажется риторическим. Вы его можете адресовать совершенно к любой архитектуре даже самой дорогой и покрытой требованиями по NFR. Это нештатная ситуация и не бизнес-кейс. - ну почему же, можно заложить отказоустойчивость в архитектуру, а можно этого не делать. Все имеет свою цену. Возиться с месаджингом сложнее чем строить коммуникацию через REST. Но если простой связан с материальным ущербом, то можно и повозиться. Асинхронный месаджинг точно может помочь купировать проблемы с неожиданным всплеском нагрузки или ухудшением качества сети и сохранить работоспособность системы рест проще только для определенных действий. для других он сложнее. где у тебя идет поток данных в один конец там рест будет наоборот скажем так, реализовываться сложнее, чем просто вколотить очередь. мне кажется, тут единственыый ответ такой - ложкой едят суп лопатой копают землю. можно и наоборот. кто ж запретит? вопрос удобства. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 08:55 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster, >Зависит от класса и того, что он делает. ClassA.id = classB.getID(FIO) АСИНХРОННОСТЬ НУЖНА двух микросервисов? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 09:20 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster Андрей Панфилов асинхронное взаимодействие (в т.ч. использование очередей) в первую очередь направлено на борьбу с таймаутами Не только и не обязательно. Суть в том, что у тебя есть одно поднятое соединение, ты через него работаешь, а не открываешь/закрываешь его на каждый этот свой вызов рпц. Имея брокер можно хоть херачить броадкастом и для этого не нужно знать адреса/порты всех твоих новых/старых миркосервисов, не нужно делать балансировку руками и много что еще. А взамен всего-то надо организовать рпц - т.е. после отправки слушать указанную тобой же очередь. Относительно бродкастов... если мне понадобится так делать, я HTTP использовать не буду - у меня здесь нет никаких религиозных соображений. crutchmaster Отправителю от того, что он по хттп что-то отправил тоже не сильно жарко. Решаем задачу какую? Получатель завис? По хттп долго нет ответа, выбрасываешь таймаут. В очередях - тоже самое или таймаут нахождение в очереди, перевод сообщения в очередь просранных, обработка его там, ответ. Это один из вариантов. Ошибка соединения? Она не нужна. Получатель либо слушает, либо не слушает. Сообщение не обработано, см п.1. кому вы собрались ответ отсылать из DLQ? в RPC на кривой запрос клиент получает ошибку, чтобы такое же сделать на request/reply нужно изворачиваться - это совершенно не равноценное взаимодействие, очереди - это когда глухой общается с немым. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 10:29 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфилов, >очереди - это когда глухой общается с немым +1)) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 10:43 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp ты не дал минимального синхронного решения. С рабитом можно сделать минимальное синхронное решение с запросом-ответом. Такое же, как хттп, только на 1 соединении. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 11:28 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфилов кому вы собрались ответ отсылать из DLQ? Ответы-запросы гуляют точно также, как и в это вашем http. Есть очередь получателя и динамическая очередь отправителя, которую от слушает на ответ. Принцип тот же, что и с 80 портом сервера и динамическим у клиента. У вас претензии такие же, как у дельфистов к вебщикам, что на этих ваших фреймворках сложна, мы лучше формочек намышевозим Андрей Панфилов открыть TCP соединение Сисколы и походы по сети не такая уж и дешевая вешчь, как может показаться, прощу заметить. А этих соединений может быть не просто много, а дохерища, так что все эти рабиты придумали тоже не от сильно хорошей жизни на хттп. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 11:47 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфилов Я проверил - нормальный такой архитектор, в отличии от вас что-то в целевой БД понимает . - не понимаю в чем Ваша проблема: Вы неспособны общаться вежливо? Зачем Вы вбрасываете новые темы? Какое отношение GUID имеет к мессаджингу, или REST, или микросервисам? Полный offtop, но тема мне интересная, так что все же выскажусь: - все что написал этот "Бен Морис" мог бы написать и я, никаких возражений у меня нет (работал я и с GUID, и с GUID на SQL Server и проблематика мне знакома), зато есть дополнения - Бен не достаточно погрузился в тему: UUIDы бывают разных видов (он неявно подразумевает рандомный - версия 4, в то время как версия 1 - это UUID в которым данные осмысленны и упорядочены, пусть и не в оптимальном для хранения в БД порядке), что наводит нас на мысль о возможности генерации UUIDов которые будут оптимизированы для хранения в РСУБД, но при этом сохранят такое качество как уникальность (хотя надо крепко подумать зачем все это надо и почему нельзя использовать инкрементный ключ). И второе дополнение - UUID по сути бинарный, а не текстовый, и когда его хранят в БД как строку, то обретают кучу проблем (о которых написал Бен), без каких либо профитов ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 11:49 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Kachalov - не понимаю в чем Ваша проблема: Вы неспособны общаться вежливо? Зачем Вы вбрасываете новые темы? Какое отношение GUID имеет к мессаджингу, или REST, или микросервисам? Полный offtop, но тема мне интересная, так что все же выскажусь: - все что написал этот "Бен Морис" мог бы написать и я, никаких возражений у меня нет (работал я и с GUID, и с GUID на SQL Server и проблематика мне знакома), зато есть дополнения - Бен не достаточно погрузился в тему: UUIDы бывают разных видов (он неявно подразумевает рандомный - версия 4, в то время как версия 1 - это UUID в которым данные осмысленны и упорядочены, пусть и не в оптимальном для хранения в БД порядке), что наводит нас на мысль о возможности генерации UUIDов которые будут оптимизированы для хранения в РСУБД, но при этом сохранят такое качество как уникальность (хотя надо крепко подумать зачем все это надо и почему нельзя использовать инкрементный ключ). И второе дополнение - UUID по сути бинарный, а не текстовый, и когда его хранят в БД как строку, то обретают кучу проблем (о которых написал Бен), без каких либо профитов https://www.ben-morris.com/the-problem-with-guids/ This can be improved by using sequential GUIDs, though these are more vulnerable to being guessed or brute forced. In most cases, the simplest solution is to use boring old incrementing integers. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 12:02 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster PetroNotC Sharp ты не дал минимального синхронного решения. С рабитом можно сделать минимальное синхронное решение с запросом-ответом. Такое же, как хттп, только на 1 соединении. Вы наверно в магазине не видели менеджеров которые при просьбе дать простой пылесос дают моющий)))). У него режим без воды есть)))) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 12:05 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster, ClassA.id = classB.getID(FIO) Дайте синхронный и асинхронный вариант. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 12:09 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp а когда просят принести палку, можно принести дерево и сказать что это решение вопроса, только ветки обмотать скотчем. Но в плане сети поднятие tcp сокета намного проще, чем хттп. PetroNotC Sharp Дайте синхронный и асинхронный вариант. Вариант чего? Куда тебе его дать? Где ТЗ? Что эта вообще? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 12:46 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфилов Ну вы видимо читать не умеете (этому в школе учат), как уже было ранее замечено не в коня корм... А проблемы почему-то у меня. - мда... https://www.ben-morris.com/the-problem-with-guids/ This can be improved by using sequential GUIDs, though these are more vulnerable to being guessed or brute forced. In most cases, the simplest solution is to use boring old incrementing integers. - и чем это отличается от того что написал я? Тем что Бен еще навалил зачем то про брутфорс? Я понял почему Вы его цитируете (иногда правда не удается конкретное место выделить в этих пространных рассуждениях, приходится ссылки на целые страницы давать, а лучше бы сразу на весь сайт) - он сходно мыслит, отвечает на гипотетические проблемы которых возможно и нет в конкретном приложении, перескакивая на разные темы. Ты ему про сиквенс, он тебе про брутфорс. Ты ему про GUID, он тебе про суррогатный ключ. Абстрактный архитектор. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 12:56 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp синхронный и асинхронный вариант Вообще не понимаю, где у тебя с этим проблемы. В плане логики происходящего происходит всё ровно тоже: данные отсылаются, а потом слушается порт/очередь, разница лишь в том, что в случае хттп - это тцп порт, в случае рабита - ждём данных из поднятого соединения. Как ты там у себя накодишь, синхронно, асинхронно, через жопу до гланд - это вообще дело десятое. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 13:05 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Kachalov Андрей Панфилов Ну вы видимо читать не умеете (этому в школе учат), как уже было ранее замечено не в коня корм... А проблемы почему-то у меня. - мда... https://www.ben-morris.com/the-problem-with-guids/ This can be improved by using sequential GUIDs, though these are more vulnerable to being guessed or brute forced. In most cases, the simplest solution is to use boring old incrementing integers. - и чем это отличается от того что написал я? Тем что Бен еще навалил зачем то про брутфорс? Я понял почему Вы его цитируете (иногда правда не удается конкретное место выделить в этих пространных рассуждениях, приходится ссылки на целые страницы давать, а лучше бы сразу на весь сайт) - он сходно мыслит, отвечает на гипотетические проблемы которых возможно и нет в конкретном приложении, перескакивая на разные темы. Ты ему про сиквенс, он тебе про брутфорс. Ты ему про GUID, он тебе про суррогатный ключ. Абстрактный архитектор. Мне кажется нельзя обсуждать GUID generation без привлечения теорвера. Сюда-же коллизии и парадоксы дней рождений. Другое дело. Имеется ли принципиальная возможность генерации УНИКАЛЬНЫХ ключей в распределённых системах. В тех системах собственно для чего и рандомный GUID создавался. В остальных случаях ну ясен пень он не нужен когда есть БД которая лихо выдает сиквенсы да еще и на каждую табличку свой персональный сиквенс. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 13:16 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Kachalov - мда... Kachalov - и чем это отличается от того что написал я? То что вы написали мало кого волнует, здесь больше интересно что из довольно объемного текста вы сумели вычленить только два предложения, и так перевозбудились, что даже не смогли дочитать до конца. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 13:18 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфилов, автор«Тролли – это личности с пассивно-агрессивными чертами, больше живущие внутренней жизнью, испытывающие неуверенность в себе в ситуациях непосредственного общения. Они не устраивают открытых конфликтов, например, в автобусе, зато проявляют агрессию в интернете. Выражать эмоции, в том числе и агрессию, это прямая потребность для каждого. У троллей местом выражения агрессии становятся именно интернет», - объясняет врач-психотерапевт. Еще одной причиной троллинга, по мнению врача, можно считать дефицит энергии и ярких эмоций в реальной жизни. Человек не решается получить всю гамму эмоций из отношений, на работе и так далее. И провоцирует пользователей в интернете на эмоции, восполняя в виртуальном общении таким образом дефицит собственных эмоций и впечатлений ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 13:27 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster, Я утверждую что синхронный и асинхронный код/архитектура отличаются кардинально. Ты повторяешь мантру - все почти тоже самое)))). Ваш кеп очевидность. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 14:15 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster PetroNotC Sharp Дайте синхронный и асинхронный вариант. Вариант чего? Куда тебе его дать? Где ТЗ? Что эта вообще? crutchmaster Но в плане сети поднятие tcp сокета намного проще, чем хттп. Так что в итоге за 4 страницы обсуждения непонятно чего удалось выяснить: - общение peer-to-peer между сервисами при помощи RPC - суть отстой, потому что там что-то не достаточно отказоустойчиво, не достаточно мастабируется и что-то еще - очереди (возможно не все, но RabbitMQ-то точно) это круто и быстро, потому что там персистентные соединения, durable-очереди, можно настроить отказоустойчивый сервис, все дела Вроде ничего не пропустил... и вот я как дурак зачем-то полез в интернет и начал выяснять что это за зверь такой этот RabbitMQ, что на нем, куда не плюнь, все лучше чем в REST и вот нашел статейку: Benchmarking Apache Kafka, Apache Pulsar, and RabbitMQ: Which is the Fastest? , если кому-то лень читать (ну или кто не умеет слишком много текста) приведу основные тезисы: - чуваки взяли тройку i3en.2xlarge (8C/64GB) и начали на них проверять какая очередь работает круче - поставили они эти очереди в условно одинаковые условия: ну вот durability в RabbitMQ завезли недавно и оно такое медленное, что даже вендор не рекомендует , поэтому вместо durability репликация, а в кафке типа все круто из коробки (ну и crutchmaster завещал не просирать сообщения) - ну вот в таком режиме оказалось что RabbitMQ больше 30 тысяч сообщений в секунду не умеет, а у кафки оказалось 200 тысяч Итак. RabbitMQ умеет с 24 ядер не больше 30 тысяч сообщений в секунду, в случае request/reply там очевидно 2 канала в разные стороны, поэтому эти 30 тысяч сообщений в секунду можно смело поделить на 2 и получить 15 тысяч обменов в секунду. Много это или мало? Идем на сайт, где другие ребята измеряют производительность разных web-фреймворков и смотрим что там и как (нужно в правом верхнем углу переключиться на вкладку cloud, чтобы результаты хоть как-то были сопоставимы с теми что для очередей: у них один Azure D3v2 - это 4С/14GB, т.е. раза в два слабее и в три раза меньше чем в тесте очередей). И что-то видится мне, что 15 тысяч обменов в секунду для HTTP - это совсем какой-то слабый результат - вон undertow, который в wildfly встроен за секунду делает 64 тыщи, да еще из базы что-то при этом выбирать успевает, без базы там вообще 180 тыщ в секунду. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.09.2020, 23:58 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
RabbitMQ написан на Эрланге а это технология не сильно быстрая. На Lisp больше похожа. Зато должна быть неубиваемой и на ходу обновлять свои версии модулей. Правда не знаю какой толк от этого в системном а не прикладном коде. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 00:03 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
человек спросил про REST, тут развели демагогию про кафку. Мессаджинг нужен в основном для гарантированной доставки, например финансовых данных. Ну и для соц. сетей)) Если вы не пишите соц. сеть либо финансовый софт - нужно пользоваться REST (ну и подобным ему GraphQL). Всё остальное отмерло давно и это факт. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 02:33 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфилов ну вот в таком режиме оказалось что RabbitMQ больше 30 тысяч сообщений в секунду не умеет Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
Понятно. У меня с 2гб ram на дохлой виртуалке 20к умеет, у них на крутом железе 30к кое-как. Или что-то у них с руками или ты что-то недоговариваешь. Андрей Панфилов да еще из базы что-то при этом выбирать успевает, без базы там вообще 180 тыщ в секунду. Ну если нихрена не делать, то можно хоть миллион rqs делать, вопросов нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 06:46 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Я утверждую что синхронный и асинхронный код/архитектура отличаются кардинально. На уровне сети никакой разницы нет. Там всё асинхронное. Это у себя в коде ты или тормозишь тред и ждешь, или делаешь колбек. Делать можно и так и так не ломая всю свою архитектуру, в чём проблема? В спринговом RabbitTemplate, например есть синхронный sendAndReceive. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 06:57 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
А зачем асинхронную технологию натягивать на синхронные вызовы? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 07:19 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
andreykaT А зачем асинхронную технологию натягивать на синхронные вызовы? Что такое "асинхронная технология"? Вся сеть асинхронна по своей сути. Еще раз объяснить, что в amqp при rpc происходит по сути тоже самое, что и http, только с участием промежуточного сервака? Хз что вы прицепились к "синхронно/асинхронно", сейчас даже ветвление в процессоре асинхронное. Прицепились бы к промежуточному серваку, например, к ерлангу или я не знаю. Обидно, за уровень срача, честное слово. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 07:30 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster Понятно. У меня с 2гб ram на дохлой виртуалке 20к умеет, у них на крутом железе 30к кое-как. Или что-то у них с руками или ты что-то недоговариваешь. ... Ну если нихрена не делать, то можно хоть миллион rqs делать, вопросов нет. Как же так... вы постоянно топили, что в очередях сообщения не просираются, а в REST какие-то невообразимые накладные расходы на транспорт, а тут выясняется, что если настроить очередь так, чтобы сообщения в очереди действительно не просирались, то накладные расходы в REST таковы, что нужно сделать каскад из 10 нжинксов, чтобы получить такой же throughput как у RabbitMQ, вот тут тоже эксперты по RabbitMQ выдают "рекомендации" : - Use transient messages - Split your queues over different cores - Disable manual acks and publish confirms - Avoid multiple nodes (HA) Из всего прочитанного я сделал следующий вывод: у RabbitMQ есть два режима работы: - терять сообщения, в этом случае оно хоть как-то к REST приближается, но из-за request/reply нужно все делить на 2 - тормозить ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 08:23 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster andreykaT А зачем асинхронную технологию натягивать на синхронные вызовы? Что такое "асинхронная технология"? Вся сеть асинхронна по своей сути. Еще раз объяснить, что в amqp при rpc происходит по сути тоже самое, что и http, только с участием промежуточного сервака? Хз что вы прицепились к "синхронно/асинхронно", сейчас даже ветвление в процессоре асинхронное. Прицепились бы к промежуточному серваку, например, к ерлангу или я не знаю. Обидно, за уровень срача, честное слово. мне нравится здесь описание: https://www.reactivemanifesto.org/ на мой взгляд суть в том что твоя система должна ОТВЕЧАТЬ скажем так особенностям работы твоей фигни. если отвечает то ок. если нет - то сова на глобусе. ты так и не сказал в чем проблема рпц против очереди? особенно там где рпц решает задачу лучше очереди. ты же предлагаешь делать суть-рпц поверх очереди. вопрос - ЗОЧЕМ? не ну ты конечно молодец если построил систему где рпц нет. а если есть? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 09:45 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
особенно.. если учесть (я за твои аббревиатуры не очень в курсе, сорян), что та же кафка построена на тупом поллинге и мэйлбоксах. типа у тя есть база, в эту базу один по рпц фигачит данные, другой по рпц ТУПО полит базу и выгребает если есть чо. )) а - асинхронность. о - очереди. тьфу. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 09:48 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфилов то накладные расходы в REST таковы, что нужно сделать каскад из 10 нжинксов, чтобы получить такой же throughput как у RabbitMQ Субъективщина. И я хз, чем и что меряли пацаны с тестами хттп серваков и что у них там за хттп, может они долбят свои серваки по одному tcp соединению, а потом рисуют 600k rqs. Андрей Панфилов терять сообщения Даже без durable очередей это по надёжности лучше, чем хттп напрямую, хотя бы в сценарии, когда делается рестарт сервиса. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 09:50 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
а в чем проблема рестарта сервиса? ну ты дернул сервис он не ответил ты у себя знаешь что что-то пошло не так. точно так же кафка может быть напрмер в дауне. сильно разница большая? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 09:53 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
andreykaT ты так и не сказал в чем проблема рпц против очереди? особенно там где рпц решает задачу лучше очереди. ты же предлагаешь делать суть-рпц поверх очереди. вопрос - ЗОЧЕМ? Я уже говорил зочем. Для балансировки нагрузки, резервирования сервисов, непрерывной интеграции. Ну, как бы пока можно не делать, но всё равно к этому же придёшь и будет тоже самое, только с костылями на nginx. Зочем? Если пока всё ок, мне хватает, ну ладно, понятно, ничего против не имею. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 09:56 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
andreykaT а в чем проблема рестарта сервиса? ну ты дернул сервис он не ответил В том что сервис должен отвечать? andreykaT точно так же кафка может быть напрмер в дауне. По-серьёзному брокер работает как кластер, потому что он вообще падать не должен. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 09:59 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфилов, Кстати, у меня очереди durable. И 20k rqs на говне. Я не знаю, что там с этими пацанами и их бенчем. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 10:02 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster andreykaT а в чем проблема рестарта сервиса? ну ты дернул сервис он не ответил В том что сервис должен отвечать? andreykaT точно так же кафка может быть напрмер в дауне. По-серьёзному брокер работает как кластер, потому что он вообще падать не должен. точно так же есть континуус интегрейшн когда мешок сервисов работают в кластере за балансером и один упавший другие не заметит. это по-серьезному. а по-не-серьезному твой кролик точно так же может завалиться а ты будешь логи неделю читать че не так. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 10:10 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
...да, я не топлю за отказ от очередей. я топлю за осознанность применения той или иной технологии. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 10:16 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
andreykaT точно так же есть континуус интегрейшн когда мешок сервисов работают в кластере за балансером Да. Я про это и говорю. andreykaT ...да, я не топлю за отказ от очередей. я топлю за осознанность применения той или иной технологии. Так в чём осознанность микросервисов на хттп? Что завалится и хер с ним? Просрали запрос и хер с ним? Ну да, потому притащат nginx, прикостылят недоочереди где-нибудь внутри или сбоку, точки обмена, топики, сделают чтобы можно было по одному соединению всё гонять и получится тот же amqp, только поверх хттп. Мне вот говорят "нада синхронно, это же надо сделать, это же костыли писать", а остальное типа не надо писать или так сойдёт, или это в упор игнорируют (зато посмотрите, какие у нас бенчи!) Пока все выглядит так, что диды писали на хттп, мы пишем и ты пиши, т.е. осознанность уровня дельфистов у которых есть формочки, им веб - сложна, потому что там нет формочек, с другой стороны в вебе есть доставка контента, а у них нет, но обновлялку бинарников им писать не сложна. Может я не прав, конечно, мне просто интересно. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 10:36 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Почему завалится? Пришла ошибка - сделали повтор, балансировшик перекинул на соседний работающий узел, пользователь получил ответ (разумеется чуть дольше, чем без ошибок/перезагрузок) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 10:51 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster andreykaT точно так же есть континуус интегрейшн когда мешок сервисов работают в кластере за балансером Да. Я про это и говорю. andreykaT ...да, я не топлю за отказ от очередей. я топлю за осознанность применения той или иной технологии. Так в чём осознанность микросервисов на хттп? Что завалится и хер с ним? Просрали запрос и хер с ним? Ну да, потому притащат nginx, прикостылят недоочереди где-нибудь внутри или сбоку, точки обмена, топики, сделают чтобы можно было по одному соединению всё гонять и получится тот же amqp, только поверх хттп. Мне вот говорят "нада синхронно, это же надо сделать, это же костыли писать", а остальное типа не надо писать или так сойдёт, или это в упор игнорируют (зато посмотрите, какие у нас бенчи!) Пока все выглядит так, что диды писали на хттп, мы пишем и ты пиши, т.е. осознанность уровня дельфистов у которых есть формочки, им веб - сложна, потому что там нет формочек, с другой стороны в вебе есть доставка контента, а у них нет, но обновлялку бинарников им писать не сложна. Может я не прав, конечно, мне просто интересно. во-первых, в зависимости от задачи очень часто это ДОПУСТИМО потерять часть данных. во-вторых, ретрай-паттерны рулят. причем для всего, для очередей в том числе. это если тебе важны данные. кстати, диды сервисы интегрировали не через хттп там какая то дичь была через которую севрсиы (сервлеты) могли синхронно общаться внутри контейнера. вообще без всяких хттп. томкат жетти вебсфера и прочий исторический мусор. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.09.2020, 11:34 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster Андрей Панфилов то накладные расходы в REST таковы, что нужно сделать каскад из 10 нжинксов, чтобы получить такой же throughput как у RabbitMQ Субъективщина. И я хз, чем и что меряли пацаны с тестами хттп серваков и что у них там за хттп, может они долбят свои серваки по одному tcp соединению, а потом рисуют 600k rqs. Андрей Панфилов терять сообщения Даже без durable очередей это по надёжности лучше, чем хттп напрямую, хотя бы в сценарии, когда делается рестарт сервиса. Если вам не нравятся результаты тестов, которые я привел, можете сделать свои, благо и там и там методика и исходный код опубликованы. Но есть мнение что особо не поможет, о том что в RabbitMQ наступают проблемы с latency при потоке в 30-40 тысяч сообщений в секунду, пишут даже на сайте RabbitMQ: https://www.rabbitmq.com/blog/2020/06/18/cluster-sizing-case-study-mirrored-queues-part-1/ ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2020, 08:48 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
andreykaT во-первых, в зависимости от задачи очень часто это ДОПУСТИМО потерять часть данных. Ладно, я понял. Не всем критична доставка, очереди, точки обмена и прочее. Где-то можно жить без этого. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2020, 11:49 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster Ладно, я понял. Не всем критична доставка, очереди, точки обмена и прочее. Где-то можно жить без этого. вот мы подключаемся к RabbitMQ, я так полагаю что в приложении нужен некий пул этих персистентных соединений - мы же не хотим, чтобы это было медленно как в HTTP/1.0, но когда мы посылаем сообщение из определенного места в коде, у нас есть желание, чтобы ответ в это же место и пришел, поэтому мы должны создать временную очередь, в которую должен приходить ответ и которую слушать будем только мы. Эта очередь должна быть всегда уникальна и к соединению из пула ее ну никак привязывать нельзя, в противном случае на таймаутах другие вызовы будут получать наши ответы вместо своих, т.е. прежде чем послать сообщение в RabbitMQ мы должны дополнительно вызывать некий RPC, который в RabbitMQ создаст новую очередь (кстати, кто должен чистить старые?) - вам не кажется, что в этом месте появляются дополнительные расходы, соизмеримые с установлением соединения по HTTP? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.09.2020, 20:09 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфиловну очевидно: весь контекст сериализовывать , а потом рассказывать про low coupling Андрей, Сонтент ? Вы против low coupling ? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2020, 11:36 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmasterВся сеть асинхронна по своей сути. Уважаемый crutchmaster, дайте ссылку на объяснение где почитать. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2020, 11:40 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей, Контент ? Конечно. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2020, 11:43 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
mirudom дайте ссылку на объяснение где почитать Это не очевидно? Ты отправляешь вызов по сети и ждешь, пока придёт ответ. Пакеты тебе могут притди не один за другим, возможно потребуется повторная передача, по этому же интерфейсу идут пакеты для других приложений и т.д и т.п. Синхронно (a->b->c) работает только процессор и то не всегда. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2020, 09:15 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster, Http это синхронный протокол. Мне жаль. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2020, 09:27 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфилов вот мы подключаемся к RabbitMQ, я так полагаю что в приложении нужен некий пул этих персистентных соединений Зачем? По соединению за сообщение как в апаче? Андрей Панфилов вам не кажется Мне кажется вы наделали каких-то далеко идущих выводов на ровном месте исходя из фантазий. Понимаю, что хипсторы задолбали со своей кафкой, но лучше не быть предвзятым. Андрей Панфилов Эта очередь должна быть всегда уникальна и к соединению из пула ее ну никак привязывать нельзя Можно. Таймауты работают на прослушивание созданной очереди, каким боком тут соединение? Оно живёт своей жизнью, передаёт данные туда-сюда. послать сообщение в RabbitMQ мы должны дополнительно вызывать некий RPC, который в RabbitMQ создаст новую очередь (кстати, кто должен чистить старые?) Да. Посылается команда создать временную очередь, подписывается слушатель (коллбек) на то, что оттуда придёт, отсылается RPC, где указывается эта самая очередь. Старые удаляются рабитом после успешной доставки сообщения. вам не кажется, что в этом месте появляются дополнительные расходы, соизмеримые с установлением соединения по HTTP? Отправить 100 байт туда-сюда по поднятому соединению несоизмеримо с установкой нового? Ну хз. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2020, 09:27 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, Давай определимся для начала, что такое "синхронный", что такое "асинхронный". Вот: https://ru.wikipedia.org/wiki/Синхронный_способ_передачи_данных Синхронный протокол. Причём тут tcp? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2020, 09:28 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster, Чтобы работать асинхронно на синхронном http придцмали технологию и термин AJAX ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2020, 09:29 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster PetroNotC Sharp, Давай определимся для начала, что такое "синхронный", что такое "асинхронный". Ты сказал фразу что веб асинхронный. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2020, 09:30 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2020, 09:32 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Чтобы работать асинхронно на синхронном http придцмали технологию и термин AJAX Вот: https://ru.wikipedia.org/wiki/Синхронный_способ_передачи_данных Синхронный протокол. Причём тут tcp/ip и http? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2020, 09:33 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Чтобы работать асинхронно на синхронном http придцмали технологию и термин AJAX Я в ноде могу работать асинхронно с хттп и без всякого ajax изкаробки еще с тех времён, когда эта самая нода вышла. И чо? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2020, 09:34 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp начинай Начал. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2020, 09:35 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster PetroNotC Sharp Чтобы работать асинхронно на синхронном http придцмали технологию и термин AJAX Я в ноде могу работать асинхронно и без всякого ajax изкаробки еще с тех времён, когда эта самая нода вышла. И чо? (с) Георге Санд "Самое сложное.... "Сложнее всего в мире достигнуть простоты — это крайняя граница опыта и последнее усилие гения". © George Sand. Скажи, ты понял фразу? Она не для прогеров кодеров. Она для архитекторов ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2020, 09:37 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster, Нода старше веба? Правда? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2020, 09:38 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Нода старше веба? Правда? Колбек можно было делать хоть на си. Прикинь? А треды завезли еще в 386. Письками может еще предложишь помериться? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2020, 09:40 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster, А че обиделся? У кодеров главное код писать. У архитекторов главное ПРОСТЫЕ РЕШЕНИЯ. AJAX проще ноды так как он в операционке. В движке эксплорера. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2020, 09:44 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp А че обиделся? Да нормально, срёмся дальше. Я почти 10 лет на форумах. PetroNotC Sharp У кодеров главное код писать. Мы говорим про сеть или про код? Что касается кода, то абсолютно не важно как в коде принимать данные протоколов над tcp/ip синхронно или асинхронно. Это ваши личные архитектурные заморочки. Можно сделать синхронно, можно асинхронно, можно даже какой-нибудь старинный действительно синхронный протокол обрабатывать асинхронно колбеком. Какая разница? Я могу сделать getUrl(url, callback), а могу result = getUrl(url) в одном и том же коде. В чём проблема ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2020, 09:53 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster, >Мы говорим про сеть или про код? Мы говорим про фразу "веб по сути асинхронный"))) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2020, 10:18 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster, sql-ru асинхронный? )))) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2020, 10:19 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Мы говорим про фразу "веб по сути асинхронный"))) Ну так и что тебе не нравится? ajax - асинхронный, а на нём строится весь современный веб. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2020, 10:23 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp sql-ru асинхронный? Ты мне покажи сначала синхронный tcp/ip, а потом спрашивай. А то вопросов много. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2020, 10:23 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster PetroNotC Sharp Мы говорим про фразу "веб по сути асинхронный"))) Ну так и что тебе не нравится? ajax - асинхронный, а на нём строится весь современный веб. Пример - sql.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2020, 10:30 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp только работа ГУИ чисто техническая Нажми F12 - сеть и зацени, как "синхронно" грузит браузер sql.ru со всеми ресурсами. А в это время этот же браузер крутит другие вкладки с ютубчиком и вконтактиком. Всё, ля, "синхронно", сначала с вконтактика дожидается пакета, потом с ютубчика, потом sql.ru _синхронно_ и _последовательно_ грузит каждый урл, ага. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2020, 10:35 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster, Баннеры, картинки,... Ты не расшифровал слово БЛ? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2020, 10:37 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Баннеры, картинки,... ...цсс и жс скрипты. Или ГУИ тут тоже не причём? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2020, 10:39 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster PetroNotC Sharp Баннеры, картинки,... ...цсс и жс скрипты. Или ГУИ тут тоже не причём? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2020, 10:41 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp БЛ карл! Что БЛ? Её _принципиально_ нельзя сделать асинхронной, чтобы ты отправлял запрос и ждал колбек? Можно на примере того же ajax. Вешаешь юзерскрипт и херак, любой древний вебчик вдруг превращается в spa и из "синхронного" становиться "асинхронным". Чудеса. Но как же так, хттп же синхронный протокол... Может ты не в курсе про download manager'ы, которые кочают один url в дохера потоков? Как такое может быть в синхронном протоколе, где все куски сообщения должны передаваться синхронно от первого до последнего? Или ты не в курсе про http туннели через http прокси, где вообще можно гонять хоть ssh. Как такое возможно? Хттп же должен синхронно передать данные и закрыться. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2020, 11:21 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster, Можно все сделать. Даже Г... сожрать. Но факты говорят что веб не асинхронный))). Тебе 10 человек сказали что везде писать асинхронно это глупость. Сайт sql.ru тоже синхронный запрос - ответ. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2020, 11:38 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster, У вади все на сокетах. У тебя все на асинхронности. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2020, 11:39 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Но факты говорят что веб не асинхронный))). Какие факты? Я тебе штук 5 фактов привёл, где главный веб протокол работает нихера не синхронно. А ты мне про sql.ru, где давно не сделали ajax, да так и оставили. PetroNotC Sharp Тебе 10 человек сказали что везде писать асинхронно это глупость. Но когда ты жамкаешь f5 браузер делает почему-то именно так, когда доходит до скриптов и картинок. Он почему-то тащит их все разом, а не синхронно по одной. Идиоты делали наверное. PetroNotC Sharp Сайт sql.ru тоже синхронный запрос - ответ. Синхронный запрос чего? Сайта sql.ru? Сеть открой и глянь, кто, что запрашивает и в каком порядке. PetroNotC Sharp Тебе 10 человек сказали Ты, фин и ТС? 10 человек? Ну, немного преувиличил. Чуть больше, чем в 3 раза. PetroNotC Sharp что везде писать асинхронно это глупость Но он везде и написан асинхронно. Хочешь еще поспорить? Тогда вперёд, доказывай, что tcp/ip - синхронный протокол. Мне надоело. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2020, 11:46 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp У вади все на сокетах. У тебя все на асинхронности. Потому что это - базовые вещи, на которые сверху лепят что хотят. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2020, 11:53 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster Синхронный_способ_передачи_данных Асинхронный RS-232 тоже "синхронизируется" старт-стопными битами. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2020, 12:25 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Basil A. Sidorov, Чем синхронизируется tcp/ip? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2020, 12:31 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster где главный веб протокол работает нихера не синхронно I(nternet)P(rotocol)? А кто и когда использовал его в прикладном коде? U(ser)D(atagram)P(rotocol)? А вы часто им пользуетесь? T(ransmission)C(ontrol)P(rotocol)? Так в нём из несихронного только O(ut)O(f)B(and) и, опять-таки - кто и когда этим пользовался? H(yper)T(ext)T(ransport)P(rotocol)? Вплоть до версии 1.1 - полностью синхронный на постоянных подключениях. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2020, 12:31 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster Чем синхронизируется tcp/ip? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2020, 12:33 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Basil A. Sidorov Номером пакета в служебных полях протокола. Вот дела. А AMQP синхронизируется названием очереди в поле сообщения. Выходит, тоже синхронный протокол? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2020, 12:36 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster, авторСинхронный запрос чего? Сайта sql.ru? Сеть открой и глянь, кто, что запрашивает и в каком порядке. БЛ синхронна. А картинки и баннеры асинхронно. Тебе что важнее? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2020, 13:16 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster PetroNotC Sharp У вади все на сокетах. У тебя все на асинхронности. Потому что это - базовые вещи, на которые сверху лепят что хотят. Уничижительно. Ты сказал что sql.ru устарел. Не на AJAX. Жги ещё! ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2020, 13:19 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster Андрей Панфилов вот мы подключаемся к RabbitMQ, я так полагаю что в приложении нужен некий пул этих персистентных соединений Зачем? По соединению за сообщение как в апаче? crutchmaster Отправить 100 байт туда-сюда по поднятому соединению несоизмеримо с установкой нового? Ну хз ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2020, 15:06 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Basil A. Sidorov Так в нём из несихронного только O(ut)O(f)B(and) и, опять-таки - кто и когда этим пользовался? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2020, 15:12 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster Выходит, тоже синхронный протокол? Если вы сделаете небольшое усилие и подумаете над передачей потока данных в рамках отдельного TCP-соединения, то, возможно, вам удастся сделать правильные выводы. P.S. Ещё в восьмидесятых годах прошлого века было показано, что "синхронная" семантика удалённого вызова процедур и "асинхронная" семантика обмена сообщениями полностью эквивалентны. Плюс есть вариант для "асинхронный удалённый вызов процедур". ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2020, 17:58 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфилов Достоверно известно, что через OOB в Oracle реализована возможность останавливать запущенные запросы. А в вашем прикладном коде вы использовали OOB-флаг для TCP-сокетов? А ваши коллеги? А часто? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2020, 18:00 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster Что БЛ? Её _принципиально_ нельзя сделать асинхронной, чтобы ты отправлял запрос и ждал колбек? Можно на примере того же ajax. Вешаешь юзерскрипт и херак, любой древний вебчик вдруг превращается в spa и из "синхронного" становиться "асинхронным". Чудеса. Но как же так, хттп же синхронный протокол... Может ты не в курсе про download manager'ы, которые кочают один url в дохера потоков? Как такое может быть в синхронном протоколе, где все куски сообщения должны передаваться синхронно от первого до последнего? Или ты не в курсе про http туннели через http прокси, где вообще можно гонять хоть ssh. Как такое возможно? Хттп же должен синхронно передать данные и закрыться. какая-то бесовщина уже началась... Если мы ждем откуда-то вменяемого ответа (а не квитанции о получении), то это взаимодействие синхронное. Никакой асинхронности в AJAX нет, оно так названо только для того, чтобы веб-макаки за данными ходили в другом потоке, а не в UI, при этом в большинстве случаев этот AJAX заканчивается тем, что при отправке запроса пользователю начинает показываться крутилка/спинер/неведомаяхерня, а при получении ответа она убирается - какое здесь к черту асинхронное взаимодействие? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.09.2020, 18:39 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфилов какая-то бесовщина уже началась... Бесовщина началась, когда некоторые начали утверждать, что amqp - это аснихронно и никак иначе, независимо от того, что они там под этим подразумевали. Андрей Панфилов чтобы веб-макаки за данными ходили в другом потоке Там один поток. Андрей Панфилов здесь к черту асинхронное взаимодействие? Вопрос не ко мне. Андрей Панфилов Если мы ждем откуда-то вменяемого ответа (а не квитанции о получении), то это взаимодействие синхронное. Ок. Давайте отталкиваться от этого определения. В AMQP вы ждем вменяемого ответа (а не квитанции о получении) из очереди. Вопрос синхронности/асинхронности закрыт за отсутствием смысла. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2020, 08:01 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster, авторчерез AMQP-брокер, который осуществляет маршрутизацию, возможно гарантирует доставку, распределение потоков данных, подписку на нужные типы сообщений. В ТЗ есть эти 4 функционала как нужные? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2020, 08:37 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфилов Никакой асинхронности в AJAX нет, оно так названо только для того, чтобы веб-макаки за данными ходили в другом потоке, а не в UI В javascript нет потоков, в нем не может быть асинхронного выполнения скрипта, однако браузер приложение многопоточное, за счет этого AJAX отправляет запросы и скрипт продолжает работу не дожидаясь выполнения запроса и получения результата, при этом запросов отправленных последовательно, но выполняющихся параллельно может быть много. Когда браузер получает ответ на запрос из js, он ставит соответствующий делегат в очередь на выполнение и когда скрипт закончит свою работу на исполнение пойдет очередь делегатов с результатами выполненных запросов. PS: to all, по моему в своем горячем обсуждении вы смешали в кучу многопоточность и асинхронность. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2020, 11:52 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp В ТЗ есть эти 4 функционала как нужные? В тз есть микросервисы. Если это - не нужные функции, ну ок. Но тогда нахрена вообще микросервисы и хттп, обычные вызовы внутри монолита уделают хттп без шансов и ТСу не надо будет делать себе голову со сваггером. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2020, 12:52 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
graycode по моему в своем горячем обсуждении вы смешали в кучу многопоточность и асинхронность. В этом сраче каждый считает под (а)синхронностью что-то своё, сокровенное, о чем боится всем рассказать. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2020, 12:53 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфилов попробуйте свой request/reply посчитать со стороны количества взаимодействий по TCP/IP и потом приходит Их столько же, сколько при установки хттп. Андрей Панфилов ну еще можете прочесть пару десятков RFC на HTTP, чтобы не возмущаться почему по HTTP throughput в 10 раз выше чем Ну потому что там заворачивают кучу хттп запросов в одно тцп соединение, что конечно же, можно делать и в поделке на ерланге. Только зачем? Если модель взаимодействия микросервисов вида A <-> B <-> C, то нахрена они вообще нужны? Монолит сделать проще, накладных расходов на сеть у вызова метода нет. Дрочить на throughput, так дрочить по-полной. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2020, 12:57 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster PetroNotC Sharp В ТЗ есть эти 4 функционала как нужные? В тз есть микросервисы. Если это - не нужные функции, ну ок. Но тогда нахрена вообще микросервисы и хттп, обычные вызовы внутри монолита уделают хттп без шансов и ТСу не надо будет делать себе голову со сваггером. Нахрена тут гарантированная доставка? Маршрутизация? Выделенный сервер специально под брокер и очереди? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2020, 13:08 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster, >Если модель взаимодействия микросервисов вида A <-> B <-> C, то нахрена они вообще нужны? = академически ты прав. Микросервисы в идеале асинхронны и подписываются на события. "Завели заказ 12345. Все кого это интересуют подписываются"))). Но микросервисы, как и 100% RESTfull, никто не видел. Недостижимый идеал. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2020, 13:28 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster Их столько же, сколько при установки хттп. - для HTTP/1.0 нужно 3 (SYN) + 2 * 2 (DATA + ACK) + 4 (FIN) = 11 пакетов, - для request/reply на AMQP: 2 * 2 (DATA + ACK на создание очереди) + 2 * 2 (DATA + ACK на отправку) * 4 = 20 пакетов т.е. если мы говорим о том, что в случае HTTP/1.0 транспортные издержки довольно высокие, то в случае request/reply на AMQP они просто безумные. crutchmaster Дрочить на throughput, так дрочить по-полной. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2020, 15:00 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp "Завели заказ 12345. Все кого это интересуют подписываются" ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2020, 15:02 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфилов PetroNotC Sharp "Завели заказ 12345. Все кого это интересуют подписываются" У них для контроля цепочки бизнес логики заводится сквозной еще один процесс))). Раз низкое связывание значит повышенный контроль (с) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2020, 16:59 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфилов, crutchmaster перевел стрелки на микросервисы ТС. Я же предлагаю о них вообще не говорить. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2020, 17:01 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
а как вам такая схема интеграции. есть мешок сервисов. пишут в бд. другим сервисам надо ловить изменения-обновления-удаления-создания, пилим триггер. триггер все изменения кидает в таблицу. на таблицу натравливаем поллингом апстрим сервис который апдейты выгребает и стримит в кафку. с другой стороны мешок консамеров что что-то там делают. мы использовали два шаблона интеграции а потом я нашел такую штуку: https://github.com/debezium/debezium может кто покритикует такой подход? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2020, 17:32 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
andreykaT есть мешок сервисов. пишут в бд. другим сервисам надо ловить изменения-обновления-удаления-создания, пилим триггер. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2020, 17:34 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
andreykaT а как вам такая схема интеграции. есть мешок сервисов. пишут в бд. другим сервисам надо ловить изменения-обновления-удаления-создания, пилим триггер. триггер все изменения кидает в таблицу. на таблицу натравливаем поллингом апстрим сервис который апдейты выгребает и стримит в кафку. с другой стороны мешок консамеров что что-то там делают. мы использовали два шаблона интеграции а потом я нашел такую штуку: https://github.com/debezium/debezium может кто покритикует такой подход? - чтобы уметь разбирать чужой вектор изменений нужно у себя данные хранить в такой же структуре, зачем так делать - непонятно, потому как никакой бизнес составляющей здесь нет, одна только репликация, а зачем эта репликация сдалась, если другая сторона хочет хранить данные так как ей удобно, тоже непонятно - когда мы вытаскиваем кишки нашей БД наружу, да и еще навешиваем некий контракт на эти кишки, то становится совсем неочевидно каким образом производить изменения в схеме БД (в том же самом envers нужно постоянно следить за составом колонок и датафиксы делать не только на данные, но и на лог, а если в этой штуке лог в виде EAV, то будет еще печальнее) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2020, 18:04 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
andreykaT, Если критиковать то... У тебя мешок сервисов пишет в бд. Почему второй мешок не может читать бд и по меткам времени выгребать изменения? Зачем триггер? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2020, 18:07 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфилов, +1 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2020, 18:08 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
То есть метод такой: - сервис А требует изменения в бд. - на что его послать подальше и сказать: "иди в бд, сам и бери изменения". Это называется умные сервисы. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2020, 18:11 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
> Почему второй мешок не может читать бд и по меткам времени выгребать изменения? Это означает, что второй сервис накладывает ограничение на изменение структуры данных. И первый сервис уже не может изменять свою структуру под внешними требованиями. Жуткий bad practice. Из микросервисного и монолитного миров берется самое плохое - и производительность ниже, из-за сетевого вызова и сериализации, и гибкости нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2020, 18:47 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфилов andreykaT а как вам такая схема интеграции. есть мешок сервисов. пишут в бд. другим сервисам надо ловить изменения-обновления-удаления-создания, пилим триггер. триггер все изменения кидает в таблицу. на таблицу натравливаем поллингом апстрим сервис который апдейты выгребает и стримит в кафку. с другой стороны мешок консамеров что что-то там делают. мы использовали два шаблона интеграции а потом я нашел такую штуку: https://github.com/debezium/debezium может кто покритикует такой подход? - чтобы уметь разбирать чужой вектор изменений нужно у себя данные хранить в такой же структуре, зачем так делать - непонятно, потому как никакой бизнес составляющей здесь нет, одна только репликация, а зачем эта репликация сдалась, если другая сторона хочет хранить данные так как ей удобно, тоже непонятно - когда мы вытаскиваем кишки нашей БД наружу, да и еще навешиваем некий контракт на эти кишки, то становится совсем неочевидно каким образом производить изменения в схеме БД (в том же самом envers нужно постоянно следить за составом колонок и датафиксы делать не только на данные, но и на лог, а если в этой штуке лог в виде EAV, то будет еще печальнее) в логе только айдихи измененных (добавленных, удаленных) сущностей. что мне ПОКА не нравится - надо делать тригер надо делать новую таблицу надо делать кодинг на бд (хотя это имхо больше может быть принято как конфигурация дб а не кодинг). и второе - что будет с перформансом когда пушнут апдейт на миллион записей. -я так понимаю коммит будет только когда все изменения применятся (это и хорошо и не очень. хорошо потому что если что то упало то и 100% не будет ивента). ну формальная скалябельность - апстримит один подбирают много. видим мощности дб хватает - можем сделать подобие кафковых партиций в бд и апстримить через в принципе любое количество стримеров. главное чтоб база переваривала. что мне нравится - простое и дешевое, а главное ультимативное (выглядит по крайней мере таковым) решение чтоб заинтегрировать пачку новых сервисов которые обслуживают только апдейты и что-то делают с этими знаниями. - не надо перебирать все сторонние сервисы кто шатает эти несчастные таблицы чтоб не забыть где нибудь присунуть пуш ивента в ту же кафку или оно упало не упало отправилось не отправилось потерялось, человеческий фактор и т.п. - это фактически исключено. а то апдейт прошел а другие сервисы про это не знают. что допустимо бизнесом - ордеринг НЕ важен. если одна и та же сущность обновилась 5 раз, то мы берем только одно событие. если зависимые сущности обновились - порядок снова роли в моем случае не играет. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2020, 19:24 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
kolchanov > Почему второй мешок не может читать бд и по меткам времени выгребать изменения? Это означает, что второй сервис накладывает ограничение на изменение структуры данных. И первый сервис уже не может изменять свою структуру под внешними требованиями. Жуткий bad practice. Из микросервисного и монолитного миров берется самое плохое - и производительность ниже, из-за сетевого вызова и сериализации, и гибкости нет. интеграция через базу - это один из паттернов (подходов). гибкость - понятие растяжимое. в кафку ты точно так же кидаешь (можешь кидать) джейсоны которые могут поменяться и изменение схемы будет снова геморрой. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2020, 19:25 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp andreykaT, Если критиковать то... У тебя мешок сервисов пишет в бд. Почему второй мешок не может читать бд и по меткам времени выгребать изменения? Зачем триггер? например, потому что меток времени нет или они обновляются не с обновлением всех полей (так уже сделано и с этим ничего не поделать) миллиард записей перебирать не будешь и не сможешь. далее, даже если есть. что дальше? держать тупо последние смещения и точно так же поллить уже таблицу с сортировкой по времени но не на пару сотен-тысяч-десятков тысяч записей, а в сотню миллионов? что проще? поллить лог, выгребать записи, дропать все данные в ней после коммита кафки. или поллить таблицу в 200 миллионов записей и сортировать по дате? есть третий вариант - лезем в потроха сервиса (сервисов) которые пишут-шатают базу и там втыкаем "пошли чо нить в мессадж брокер после коммита в бд". а оно возьмет и не пошлет :) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2020, 19:30 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
andreykaT в логе только айдихи измененных (добавленных, удаленных) сущностей. andreykaT что будет с перформансом когда пушнут апдейт на миллион записей ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2020, 20:10 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
>интеграция через базу - это один из паттернов (подходов). гибкость - понятие растяжимое. в кафку ты точно так же кидаешь (можешь кидать) джейсоны которые могут поменяться и изменение схемы будет снова геморрой. О, у нас появилось потребность в определениии публичного контракта:) Ты прав, интеграция через базу это очень распространенный архитектрурный паттерн. Но, если ты можешь себе позволить интеграцию через базу, то, скорее всего, микросервисы тебе не нужны. Может это оффтопик, но прежде чем обсуждать паттерны и тебования, попробуй сформулировать, почему и когда бизнес готов платить огромные деньги за микросервисы, не смотря на огромные проблемы с целостностью данных, cross domain отчетностью, большим временем отклика и т.д. И это явно не просто хайп, потому что люди умеют считать деньги. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2020, 00:31 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
andreykaT, >например, потому что меток времени нет или они обновляются не с обновлением всех полей = вы выбирайте. Или паттерн "бд это интеграция и ядро системы" или бд это легаси где нельзя ничего менять. В первом случае постоянный апдейт бд и есть разработчик бд. Назовите тогда пробемы? update field add timestamp (добавить поле времени) делается на рабочей базе и ничего не блокирует. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2020, 04:35 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
andreykaT, >что проще? поллить лог, выгребать записи, дропать все данные в ней после коммита кафки. или поллить таблицу в 200 миллионов записей и сортировать по дате? = - второй вариант отработан уже лет 20. Есть OLAP/OLTP паттерн как ты любишь говорить Есть не "сортировать по дате" а “запросить по индексу“ Есть физические индексы когда "новые записи всегда сверху"))) Есть партицирование таблиц ..... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2020, 04:43 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
kolchanov >интеграция через базу - это один из паттернов (подходов). гибкость - понятие растяжимое. в кафку ты точно так же кидаешь (можешь кидать) джейсоны которые могут поменяться и изменение схемы будет снова геморрой. О, у нас появилось потребность в определениии публичного контракта:) Ты прав, интеграция через базу это очень распространенный архитектрурный паттерн. Но, если ты можешь себе позволить интеграцию через базу, то, скорее всего, микросервисы тебе не нужны. Может это оффтопик, но прежде чем обсуждать паттерны и тебования, попробуй сформулировать, почему и когда бизнес готов платить огромные деньги за микросервисы, не смотря на огромные проблемы с целостностью данных, cross domain отчетностью, большим временем отклика и т.д. И это явно не просто хайп, потому что люди умеют считать деньги. не вижу противоречий. что мешает пользовать разделенные сервисы поверх всех целых четырех основных шаблонов? если монолит то говорить об интеграции странно ибо одно противоречит другому. когда несколько сервисов ходят в одну базу это согласен не лучший кейс. но и не критичный. тут основнаяпролема что у тебя может быть несколько "мутаторов", и в какой то момент просто концы потеряешь. поэтому хорошо иметь прослойку между базой и чем то еще. а так одна база на один сервис и все вроде как ясно хотя бы в этом моменте. ну и тут хорошо бы определиться что ты вкладываешь в понятие "микросервис" а то тут могут и палкой побить если не так скажешь некоторые особо чувствительные личности :) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2020, 09:17 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp andreykaT, >что проще? поллить лог, выгребать записи, дропать все данные в ней после коммита кафки. или поллить таблицу в 200 миллионов записей и сортировать по дате? = - второй вариант отработан уже лет 20. Есть OLAP/OLTP паттерн как ты любишь говорить Есть не "сортировать по дате" а “запросить по индексу“ Есть физические индексы когда "новые записи всегда сверху"))) Есть партицирование таблиц ..... я тебя понял. я подумаю. в этом есть смысл. согласен. из минусов - надо шатать легаси таблицу. из плюсов - не надо новую таблицу и триггер. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2020, 09:19 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
andreykaT, >поэтому хорошо иметь прослойку между базой и чем то еще. = прослойка это Message Driven Architecture (MDA) О чем тут мембер crutchmaster топит. Тогда бд в самой прослойке в виде сервера будет. Скорость 5-10тыр сообщений в сек Тебе решать. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2020, 09:49 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp andreykaT, >поэтому хорошо иметь прослойку между базой и чем то еще. = прослойка это Message Driven Architecture (MDA) О чем тут мембер crutchmaster топит. Тогда бд в самой прослойке в виде сервера будет. Скорость 5-10тыр сообщений в сек Тебе решать. я пока не понимаю как мда привинтить к моему кейсу при всех тех условиях что есть у меня (база как точка интеграции, трогать почти ничего из того что поверх - нельзя). ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2020, 10:00 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
andreykaT, СервисА, СервисБ, СервисN, СУБД. Что можно трогать? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2020, 10:26 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
andreykaT, Трогать нельзя, но ты наворотил кафку, триггеры, новую таблу под рутом админом и еще терабайты диска под твой вариант. Нет логики. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2020, 10:28 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp andreykaT, Трогать нельзя, но ты наворотил кафку, триггеры, новую таблу под рутом админом и еще терабайты диска под твой вариант. Нет логики. мне надо написать новый сервис который работает с данными из конкретной указанной пальцем бд. и всё. то что я наворотил триггеры - это единственное что я наворотил. что мне НЕ надо - мне не надо трогать существующие сервисы. или надо но там будет дикий рефакторинг. второе приближение - это забрать ответственность тех сервисов что пишут в нужную мне таблицу, получать от них данные по синхронному формату, и уже самому класть эти данные в бд и говорить тем сервисам "да, я положил". тем самым я уже на уровне своей ответственности (наверное) буду знать о всех мутациях происходящих в нужных мне таблицах и как то этими знаниями распоряжаться. ну да.. пока не выяснится что кто то что то забыл и есть еще сервисы которые шатают эту бедную таблицу. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2020, 11:41 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфилов то в случае request/reply на AMQP они просто безумные. Ты там nginx где-то потерял по дороге, так что можешь на два умножать свой хттп и в принципе меня всё устраивает. Андрей Панфилов Про производительность очередей байки травить начали именно вы Сам придумал, сам опроверг, сам победил. Молодец. Продолжай спорить сам с собой. Делай в следующий раз это оффлайн, ок? Производительность при том условии, что нужны все те фишки (или хотя бы некоторые), которые даёт брокер, очевидно. Нахер он вообще твой хттп нужен, когда у тебя две точки и одна из них - не браузер. Закатай штаны обратно и пили лучше монолит, как диды. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2020, 12:02 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
andreykaT может кто покритикует такой подход? Тут, хе хе, раббит от "критики" с трудом дышит, а ты собрался через базу и триггеры всё это гонять. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2020, 12:05 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster Ты там nginx где-то потерял по дороге, так что можешь на два умножать свой хттп и в принципе меня всё устраивает. crutchmaster Сам придумал, сам опроверг, сам победил. Молодец. Продолжай спорить сам с собой. Делай в следующий раз это оффлайн, ок? crutchmaster Сисколы и походы по сети не такая уж и дешевая вешчь, как может показаться, прощу заметить. А этих соединений может быть не просто много, а дохерища, так что все эти рабиты придумали тоже не от сильно хорошей жизни на хттп. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2020, 12:18 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
andreykaT, Ну дак погоди брать ответственность за запись в бд. Начни с того что пишешь читающий сервис. Так? Вот и опиши проблему дальше. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2020, 12:25 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфилов По дороге там потерян разве что HTTP/1.1 Ну так я и через раббит могу на единственный сервис отправлять запросы пачкой, как в хттп 1.1. Ничего удивительного. Андрей Панфилов Разве не вы писали? А еще писал, что-то там про точки обмена, очереди которые нужны для того, чтобы могли независимо разгребать n сервисов, но ты почему-то не заметил, а заметил то, что тебе удобно. Как там со всем этим будет работать хттп? Почти так же, но с костылями? Об этом мой вопрос был так-то. Но нахера его слушать, когда ты самый умный. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2020, 12:30 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster Ну так я и через раббит могу на единственный сервис отправлять запросы пачкой, как в хттп 1.1. Ничего удивительного. crutchmaster А еще писал, что-то там про точки обмена, очереди которые нужны для того, чтобы могли независимо разгребать n сервисов, но ты почему-то не заметил, а заметил то, что тебе удобно. Как там со всем этим будет работать хттп? Почти так же, но с костылями? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2020, 12:35 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая 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 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, Про delete вы правы. Но имхо это уже БЛ. Кому нужно знать такие тонкости? Пусть строят шину сообщений)) Имхо ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2020, 10:34 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, Вообще, часто сущности не удаляют. Их адейтет на Не актуальные))) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2020, 10:35 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Leonid Kudryavtsev, Два времени в одно поле? Одна бизнес транзакции нового объекта. Вставка. ... Так? Клиентский софт на MS Access, FoxPro, PowerBuilder выдал команду INSERT. Триггер отработал. Время 13:10. коллеги пошли на бизнес ланч и мы с ними.... В 13:15 запустился сервис выгребания обновлений вернулись с бизнес ланча, пошли покурили Покурили, сели за компьютер, вспомнили, что не нажали кнопку сохранить. Нажали. Прошел COMMIT. Время 14:30 В СУБД появилась запись с timestamp insert'а 13:10, которую никто не обработал ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2020, 10:53 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, Время между вставкой и коммитом с разницей под 8 часов может быть только в десктоп приложениях. Это ограничение нужно учесть. При построении систем. В принципе, ничего страшного. Архитектура всегда компромисс. Вряд ли у него будут длинные транзакции. Тогда второй проход джоба заберет эту сущность. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2020, 11:16 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Время между вставкой и коммитом с разницей под 8 часов А какая разница с точки зрения написания программы, между "разницей под 8 часов", "разницей под 8 секунд" и "разницей под 8 милисекунд" ? Я вижу только одну: "разницу под 8 часов" - очень легко тестировать, это плюс "разницу под 8 милисекунд" - фиг протестируешь и проверишь, это большой минус ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2020, 12:28 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Время между вставкой и коммитом с разницей под 8 часов может быть только в десктоп приложениях PetroNotC Sharp select field from t where myupdate > sysdate - КОНСТАНТА_МИЛЛИСЕКУНД ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2020, 12:42 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, Хмм. - если одна сек, то она меньше периода синхронизации БД = 5 мин. Как пример. То есть вообще не учитывается. Погрешность. - в ОРМ длинные транзакции не применяются. Тоже можно послать такие клиенты подальше. Тестировать что? Дайте ТЗ на тест. Райзе ведь не будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2020, 12:48 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфилов, Вы спутали бизнес транзакцию и физическую. Хибер и сервлет обычно 0,01сек. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2020, 12:51 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфилов, >это ни что иное как полная хрень, = я вашу хрень выше не понял и пруф просил. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2020, 12:53 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Вы спутали бизнес транзакцию и физическую. Хибер и сервлет обычно 0,01сек. вот я пишу: Код: plsql 1. 2. 3.
в каком месте у меня появляется гарантия в 0.01 сек? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2020, 12:55 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфилов, Контейнер сервлетов нормально работает и обеспечивает 0,01сек. Если вы НЕ СТОПОРИТЕ ПОТОК И НЕ НАГРУЖАЕТЕ ГЛУПЫМ КОДОМ ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2020, 12:58 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Leonid Kudryavtsev, Хмм. - если одна сек, то она меньше периода синхронизации БД = 5 мин. Как пример. То есть вообще не учитывается. Погрешность. - в ОРМ длинные транзакции не применяются. Тоже можно послать такие клиенты подальше. Тестировать что? Дайте ТЗ на тест. Райзе ведь не будет. Что за ерунда про период синхронизации. А если это одна секунда как раз попала на момент синхронизации: 1. Сторона A сделала INSERT 2. прошло пол секунды 3. Сторона B сделали SELECT * ... WHERE timestamp < prev_timestamp 4. прошло еще пол секунды 5. Сторона A сделала COMMIT, зафиксировала транзакцию PetroNotC Sharp select field from t where myupdate > sysdate - КОНСТАНТА_МИЛЛИСЕКУНД Жуткий велосипед и костыль 1. Кто будет принимать решение, сколько миллисекунд достаточно? 2. Кто будет гарантировать, что эти миллисекунды никогда не будут нарушены? Как пример: a) программист на ПРОД базе запустил приложение под отладчиком и кусок кода проходить в пошаговом режиме. Такое конечно плохо, но иногда встречается (банально на ПРОД ошибка есть, на ТЕСТ повторить не удается; ПРОД настолько уникальный, что полноценный TEST даже не сделать /например лично отлаживался на серваке, который физически располагался где-то на Лондонской бирже, аналогичного для TEST никто в Лондон не повезет/). b) сервир приложения выдал INSERT, ушел в глубокий Hibernate ))), вышел из Hibernate и выдал COMMIT. Сервер приложения развернут на кластере VM Ware которая умеем себя с на ноду перетаскивать 3. Т.е. принимающая сторона получит и измененые данные и ряд данных, которые она уже ранее обрабатывала? Т.е. на принимающей стороне должен еще быть не хилый компаратор, который сравнивает пришли новые данные или это старый мусор (который обрабатывать не надо) ? А если таблиц много и разной структуры.... жуть какая-то. IMHO ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2020, 13:03 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, Вот тут мембер пишет про 2 сек 22205323 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2020, 13:06 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Вариант с простановкой времени вот лично мне совершенно не нравится. Я бы или просто измененные записи помечал, а при репликации убирал флаг (но плохо для производительности и блокировки), либо бы использовал очередь. Очередь хороша еще и тем, что кроме INSERT?/UPDATE, есть еще и DELETE. А при DELETE метку времени банально некуда ставить. Вот давайте на примере... допустим мы имеем такую структуру: - есть книжка, у книжки автор: book(id, title, author_id, modify_date) - у автора имя: person(id, name) Есть внешняя система, с которой мы синхронизируем изменения, система хранит данные в виде book(id, title, author_name) и мы какбы об этом знаем. Что должно происходить когда у person меняется name а нам нужно это как-то отправить во внешнюю систему? Варианты видятся следующие: - пишем лог что у автора изменилось имя, дальше подключается ETL/ELT и начинается написание довольно стремного кода по выяснению где этот person еще участвует. Завтра разработчики системы добавили еще пару таблиц ссылающихся на person и наш ETL/ELT развалился - в хибере ловим изменения в person и делаем условный update book set modify_date=sysdate - бизнес-логика за рамки приложения не вышла (аргумент типа "мы можем что-то потерять" - никакой не аргумент, я в предыдущем пункте обосновал), однако получаем дополнительную блокировку на обновляемых строках - идея так себе, потому что мы в СУБД изначально имеем возможность организовывать данные таким образом, чтобы где-то избегать конкуренции, а где-то, наоборот, порождать, тут же получается подход как у некоторых имбецилов, которые хранят данные в виде table(id, json) и у них возникает конкуренция на любой чих - в хибере ловим изменения в person и вместо update делаем insert into book_log(id, change) - бизнес-логика там где и должна быть, блокировок лишних нет. Leonid Kudryavtsev В большинстве случаев разломать может потребоваться почти все приложение. Т.к. бизнес-сущность может встречаться в 100500 местах. Обычно бизнес сущности более-менее мапятся на таблицу(ы). Т.ч. особой костыльности лично я не вижу. К тому же, задача репликации обычно более системная, чем прикладная. И переусложнять прикладной софт системными задачами, которые легко решить на уровне БД (триггер), тоже особого смысла нет. Вопрос изначально был не про репликацию, а про бизнес-события. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2020, 13:06 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Андрей Панфилов, Контейнер сервлетов нормально работает и обеспечивает 0,01сек. Если вы НЕ СТОПОРИТЕ ПОТОК И НЕ НАГРУЖАЕТЕ ГЛУПЫМ КОДОМ 1. Сервер может работать под нагрузкой 2. В Java есть чудо опция Garbage Collection, для которой 0,01 сек - это вообще ни о чем ))) 3. Кроме сервера есть еще и сеть . и 100500 других причин. по которой 0,01 сек это "ни о чем". ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2020, 13:09 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Контейнер сервлетов нормально работает и обеспечивает 0,01сек ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2020, 13:10 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфилов PetroNotC Sharp Контейнер сервлетов нормально работает и обеспечивает 0,01сек ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2020, 13:22 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp >это ни что иное как полная хрень, = я вашу хрень выше не понял и пруф просил. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2020, 13:22 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Не готов спорить, т.к. самого предмета спора в общем-то нет Андрей Панфилов - пишем лог что у автора изменилось имя, дальше подключается ETL/ELT и начинается написание довольно стремного кода по выяснению где этот person еще участвует. Завтра разработчики системы добавили еще пару таблиц ссылающихся на person и наш ETL/ELT развалился Не очень понимает, какой код "по выяснению где этот person еще участвует" нужен. Если хранилище данные нормализованы как в OLTP, реплицируем табличку и все Если в хранилище данные денормализованы, архитектор/программисты хоторые проектировали хранилища и так должны знать, куда они этот person позасовывали. Андрей Панфилов Вопрос изначально был не про репликацию, а про бизнес-события. Могу судить только по тем системам. с которыми сталкивался Даже если бизнес-сущности соответствует 100500 таблиц (например Заказ/Order в OeBS: заказ, строки заказа, скидки/наценки, резерв на складе и 100500 связанных сущностей), то обычно, все равно, есть 1-2 "главные таблицы" Если нам нужно отслеживать вновь оформленные заказы, то банальный триггер на ORDERS который будет следить за изменением поля Status с "Заказ оформляется" на "Заказ подтвержден". Если счета в CC&B (Hibernate, Java, Cobol), то аналогично. Большинство действий со счетом автоматически будут менять и саму запись CI_BILLS. Т.е. отследить бизнес-события наблюдая за не большим набором таблиц - проблем нет. Ну и хорошо, если приложение разрабатывает одна команда. А если сорцов нет? Или с СУБД может работать сразу несколько приложений разрабатываемыми разными людьми? (Основная система в офисе, Личный кабинет в I-net, интеграция с платежными системами которые инсертят данные из Сбера и т.к. и т.п.) Т.ч. называть триггера "откровенные костыли" IMHO перебор ))) Вполне нормальное, древнее, проверенно и работоспособное решение. В ряде случаев - единственное доступное. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2020, 13:26 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, +1 Есть бд и бд- центристкие решения. Она главная и все нормализовано. И есть трехзвенки в полный рост где нет триггеров. Все работает и там и там. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2020, 13:35 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev реплицируем... OeBS... Leonid Kudryavtsev Т.ч. называть триггера "откровенные костыли" IMHO перебор ))) Вполне нормальное, древнее, проверенно и работоспособное решение. В ряде случаев - единственное доступное. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2020, 14:32 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
коллеги, вопрос. тут всё про то же самое - поллинг апдейтов и триггеры ) тут кто-то упомянул что можно не в лог-таблицу апдейты сладывать а выгребать по скажем, полю апдейтед (обновляем строку в таблице, обновляется поле апдейтед, выгребаем по полю). собссно вопрос следующий, понятно что выгребать по таймстампу от сих до сих. тут кто то упомянул опцию что не надо сохранять последние выгребленные данные и можно как то так знать смещение.. вопрос.. как? я вижу что мне в любом случае как сервису надо узнать какие последние обновления я ыгребал (скажем, хранить где то в хранилище последний успешный процесс, типа от сих до сих выгребли). можно как то без этого? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2020, 17:35 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
andreykaT, авторопцию что не надо сохранять последние выгребленные данные и можно как то так знать смещение.. вопрос.. как? я вижу что мне в любом случае как сервису надо узнать какие последние обновления я ыгребал (скажем, хранить где то в хранилище последний успешный процесс, типа от сих до сих выгребли). можно как то без этого? Может ты сам разберешься, надо сервису знать когда он что выгребал или у него плохо с памятью? Например, на sql.ru надо знать чтобы подсветить красным новые топики. Теперь соберись ты и расскажи тебе это зачем. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2020, 18:35 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp andreykaT, авторопцию что не надо сохранять последние выгребленные данные и можно как то так знать смещение.. вопрос.. как? я вижу что мне в любом случае как сервису надо узнать какие последние обновления я ыгребал (скажем, хранить где то в хранилище последний успешный процесс, типа от сих до сих выгребли). можно как то без этого? Может ты сам разберешься, надо сервису знать когда он что выгребал или у него плохо с памятью? Например, на sql.ru надо знать чтобы подсветить красным новые топики. Теперь соберись ты и расскажи тебе это зачем. о точно это был ты. и вроде говорил что эт оможн окак то делать без сохранения стейта. зы. я уже вроде рассказывал выше. нужно просто по набору данных строить индексы в эластике и всё. данные изменились находим соответствующие документы - актуализируем. всё. ну далее сверху обвес по работе с этими индексами. ничего особого. интегрироваться с сервисом через какой нибудь брокер тема так себе потому что там 100500 мест что шатают базу. кроме того там в целом, не один сервис который шатает эту базу. итого одно из решений (помимо всяких брось сообщение в кафку при апдейте) -- сделать триггер который логгирует апдейты (создание) записей. поверх этой таблицы стоит сервис, что выгребает все накопившиеся изменения оттуда по таймеру и говорит индексатору положить новые обновить старые нужные документы. второе решение - меняющий значения в бд сервис собссно да шлет мессадж в брокер. за брокером консамеры эти мессаджи соответственно разбирают. третье решение - вроде ты озвучивал. по полю апдейтед выгребать нужные обновленные записи и говорить об этом сервису который держит эластик индекс ап ту дейт. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2020, 20:07 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
andreykaT о точно это был ты. и вроде говорил что эт оможн окак то делать без сохранения стейта я говорил что сервисы не тупые а умные. И не могу представить себе что он не помнит вообще ничего. авторитого одно из решений (помимо всяких брось сообщение в кафку при апдейте) -- сделать триггер который логгирует апдейты Мы по кругу пошли? Я говорил про поле с меткой времени и JOB раз в минуту обнаруживает все изменения. Далее делай что хочешь. Сколько можно про одно и то же? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2020, 22:28 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp andreykaT о точно это был ты. и вроде говорил что эт оможн окак то делать без сохранения стейта я говорил что сервисы не тупые а умные. И не могу представить себе что он не помнит вообще ничего. авторитого одно из решений (помимо всяких брось сообщение в кафку при апдейте) -- сделать триггер который логгирует апдейты Мы по кругу пошли? Я говорил про поле с меткой времени и JOB раз в минуту обнаруживает все изменения. Далее делай что хочешь. Сколько можно про одно и то же? допустим, есть поле с меткой по времени. сервису последний промежуток времени по которому проверял надо хранить? (ну или последнюю точку проверки как минимум). мне что то показалось ты показал решение когда этого не надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2020, 23:47 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
andreykaT сервису последний промежуток времени по которому проверял надо хранить? Зачем? Сервис умный. Решил проверять каждую минуту. Поставил будильник и ....проверяет. Это сложно запрограммировать? "Промежуток времени запоминает таймер" (с) Не догадался? ))))) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2020, 00:18 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, Сервис упал. И не проверял час-два-три. Дальше? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2020, 01:01 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
andreykaT PetroNotC Sharp, Сервис упал. И не проверял час-два-три. Дальше? Если так, тогда мы городим Очередь с гарантированной доставкой - доп поле флаг в БД "Отправлено" - меняет его JOB только для одного сервиса - "Очередь доставки / почтальон" - если почтальон заболел, то JOB после больничного даст ему мешок писем. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2020, 08:42 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
При желании, свои больничные листы сервис может хранить у себя. См. выше - сервис не тупой! ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2020, 08:46 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
andreykaT, Ну и последнее. Подумай и скажи. Как миллион пользователей (сервисов) заходя на sql.ru узнают что некоторые топики с новым контентом?. И о боже! Они бывают после перезагрузки заходят. И после больничного. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2020, 08:56 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp andreykaT PetroNotC Sharp, Сервис упал. И не проверял час-два-три. Дальше? Если так, тогда мы городим Очередь с гарантированной доставкой - доп поле флаг в БД "Отправлено" - меняет его JOB только для одного сервиса - "Очередь доставки / почтальон" - если почтальон заболел, то JOB после больничного даст ему мешок писем. То есть мне еще и апдейты готовить в БД? Спасибо, не очень. Проще где нибудь в уме держать последнюю точку синхронизации ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2020, 10:39 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp andreykaT, Ну и последнее. Подумай и скажи. Как миллион пользователей (сервисов) заходя на sql.ru узнают что некоторые топики с новым контентом?. И о боже! Они бывают после перезагрузки заходят. И после больничного. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2020, 10:44 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
andreykaT То есть мне еще и апдейты готовить в БД? Н у а второй вариант как sql_ru. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2020, 12:57 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Андрей Панфилов Это уже в духе предыдущего оратора про RPC через очереди сообщений: "пофиг что оно медленно, у кого-то же работает". Сделай на своём хттп exchange и прочие routing keys, у тебя конечно же всё заработает со скоростью 100500000000 rqs на китайском роутере. inb4: кококо. нинужна. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2020, 05:26 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Я говорил про поле с меткой времени и JOB раз в минуту обнаруживает все изменения. Это пока запрос тупой и отрабатывает за минуту. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2020, 05:27 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Как миллион пользователей (сервисов) заходя на sql.ru узнают что некоторые топики с новым контентом? Кстати, уведомления тут сделаны абы-как. Сделать уведомления при ответе на сообщение так невозможно. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2020, 05:33 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev есть еще и DELETE На ответсвеных данных не делают update/delete. Надо знать, что там было раньше, как, кто и когда это поменял. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2020, 05:50 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
crutchmaster, Нафиг ты топик поднял. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2020, 08:12 |
|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая OpenAPI?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp crutchmaster, Нафиг ты топик поднял. Наверное вышел новый релиз у хипстерского дермища и теперь у него throughput выше на пару сообщений в секунду ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2020, 10:49 |
|
|
start [/forum/topic.php?all=1&fid=59&tid=2120626]: |
0ms |
get settings: |
28ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
4052ms |
get tp. blocked users: |
3ms |
others: | 288ms |
total: | 4455ms |
0 / 0 |