|
Как нынче принято реализовывать взаимодействие между микросервисами учитывая 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 |
|
|
start [/forum/topic.php?fid=59&msg=39999620&tid=2120626]: |
0ms |
get settings: |
14ms |
get forum list: |
6ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
30ms |
get topic data: |
3ms |
get forum data: |
1ms |
get page messages: |
436ms |
get tp. blocked users: |
1ms |
others: | 294ms |
total: | 787ms |
0 / 0 |