Гость
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Внутреннее общение между микросервисами / 25 сообщений из 106, страница 1 из 5
07.09.2018, 19:02
    #39699813
love_bach
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внутреннее общение между микросервисами
Чтобы не дергать их API по http. Как обычно делают? Смотрю на общение чз очереди сообщений (RabbitMQ и т.п.). или это не то?
...
Рейтинг: 0 / 0
08.09.2018, 00:35
    #39699865
Дмитрий Мух
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внутреннее общение между микросервисами
love_bachЧтобы не дергать их API по http. Как обычно делают? Смотрю на общение чз очереди сообщений (RabbitMQ и т.п.). или это не то?
по разному делают: http, tcp, net pipe, очереди...
...
Рейтинг: 0 / 0
08.09.2018, 01:03
    #39699872
stenford
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внутреннее общение между микросервисами
love_bachЧтобы не дергать их API по http. Как обычно делают? Смотрю на общение чз очереди сообщений (RabbitMQ и т.п.). или это не то?
только очереди. Какая конкретно зависит от платформы
...
Рейтинг: 0 / 0
08.09.2018, 03:43
    #39699881
Calabonga
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внутреннее общение между микросервисами
love_bach,


Queue тебе в помощь!
...
Рейтинг: 0 / 0
08.09.2018, 11:38
    #39699897
Дмитрий Мух
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внутреннее общение между микросервисами
Pattern: Remote Procedure Invocation (RPI)
Pattern: Messaging
Pattern: Domain-specific protocol

И всё это относится к inter-process communication .
А это и file, и socket, и pipe, и queue, и shared memory...


love_bach , есть какие-нибудь требования, SLO (service level objectives)? По производительности, надёжности?
...
Рейтинг: 0 / 0
08.09.2018, 12:02
    #39699903
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внутреннее общение между микросервисами
love_bachЧтобы не дергать их API по http. Как обычно делают? Смотрю на общение чз очереди сообщений (RabbitMQ и т.п.). или это не то?
"Не для флейма"
Микросервисы это хайп на время.
Пару годиков будет на слуху и уйдёт в небытие.
Т.к. слишком мелкое деление на кусочки системы.
Вот вы вопрос поэтому и задали.
Чем не устроил REST по HTTP с временем отклика 0, 1 сек?
Как раз что слишком часто спрашивать не надо)). Т.е. выкиньте микросервисы.
IMHO ))
...
Рейтинг: 0 / 0
08.09.2018, 12:03
    #39699905
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внутреннее общение между микросервисами
stenfordтолько очереди. Какая конкретно зависит от платформы
+1
Только слово микросервисы тогда совершенно ни при чём.
Очереди были ещё при царе горохе.
...
Рейтинг: 0 / 0
08.09.2018, 12:20
    #39699907
Дмитрий Мух
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внутреннее общение между микросервисами
Petro123Пару годиков будет на слуху и уйдёт в небытие.
Неа, просто станут обыденностью.
...
Рейтинг: 0 / 0
08.09.2018, 13:06
    #39699920
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внутреннее общение между микросервисами
Дмитрий МухPetro123Пару годиков будет на слуху и уйдёт в небытие.
Неа, просто станут обыденностью.
записал.
Закрыли тему.
...
Рейтинг: 0 / 0
08.09.2018, 13:22
    #39699924
Дмитрий Мух
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внутреннее общение между микросервисами
Мы в своей системе используем HTTP, TCP, Queue...
Выбор решения как обычно зависит от задачи. Плюс никто не мешает поддерживать несколько вариантов взаимодействия.
...
Рейтинг: 0 / 0
08.09.2018, 16:35
    #39699953
love_bach
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внутреннее общение между микросервисами
когда на основе очередей реализуется событийная модель взаимодействия, тут вроде разобрался.
но, когда эта модель не только событийная, а еще команды/запросы (внутри которых скрыта реализация на основе очереди), то тут возникает вопрос: как правильно подойти к реализации этих команд/запросов. может какой шаблон/подход посоветуете, или статейку с реализацией чего-то похожего?
...
Рейтинг: 0 / 0
08.09.2018, 16:37
    #39699954
love_bach
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внутреннее общение между микросервисами
при использовании WebClient, чз который дергается API микросервисов по http, реализация команд/запросов очевидная. с очередями уже нет
...
Рейтинг: 0 / 0
08.09.2018, 16:51
    #39699958
Дмитрий Мух
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внутреннее общение между микросервисами
love_bach,

в гугле наберите "microservices communication patterns" там полно статей
...
Рейтинг: 0 / 0
08.09.2018, 17:04
    #39699962
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внутреннее общение между микросервисами
love_bachможет какой шаблон/подход посоветуете, или статейку с реализацией чего-то похожего?
вы программист?
Если да, то давайте конкретнее.
Т.к. в веб проектах команды\запросы это роутинг по страницам(GET\POST\Redirect)+AJAX.
Если вы сделали микросервис, то давайте код и его архитектуру.
А то скоро вторая страница болтологии будет. Вам в ветку проектирование ИС. Там больше теории и рассуждений.
...
Рейтинг: 0 / 0
08.09.2018, 17:29
    #39699965
love_bach
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внутреннее общение между микросервисами
Petro123love_bachможет какой шаблон/подход посоветуете, или статейку с реализацией чего-то похожего?
вы программист?
Если да, то давайте конкретнее.
Т.к. в веб проектах команды\запросы это роутинг по страницам(GET\POST\Redirect)+AJAX.
Если вы сделали микросервис, то давайте код и его архитектуру.
А то скоро вторая страница болтологии будет. Вам в ветку проектирование ИС. Там больше теории и рассуждений.

а разве не конкретно задан вопрос? например, так выглядит запрос

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
internal async Task<IEnumerable<SomeDTO>> Get(long someId)
{
      return await Get<IEnumerable<SomeDTO>>($"{CONTROLLER}/List/{someId}");
}

protected async Task<T> Get<T>(string url)
{
    var client = new HttpClient { BaseAddress = new Uri(_baseUrl) };
    var response = await client.GetStringAsync(url);
			
    return JsonConvert.DeserializeObject<T>(response);
}



а вот как что-то похожее сделать, используя очередь, а не HttpClient, сразу не соображу. Сделать то конечно сделаю, но хочется как-то красиво и просто чтобы было
...
Рейтинг: 0 / 0
08.09.2018, 17:56
    #39699968
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внутреннее общение между микросервисами
love_bachЧтобы не дергать их API по http. Как обычно делают? Смотрю на общение чз очереди сообщений (RabbitMQ и т.п.). или это не то?
Непонятно какую проблему вы этим решаете. Если "их API" протестирован и работает то подключайте его по localhost (он оптимизирован для ipc) и используйте.

По поводу RabbitMq. Не уверен что это аналог. Если речь идет о переходе от синхронного взаимодействия к асинхронному. Это архитектурный вопрос.
...
Рейтинг: 0 / 0
08.09.2018, 20:51
    #39699990
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внутреннее общение между микросервисами
love_bach,
замечательно что начали код приводить.
Для вашего кода не нужна ни асинхронность, ни микросервисы, ни очередь.
DTO передают на толстый клиент в котором своя бизнес логика.
Если общение и взаимодействие тесное то берут протокол повыше.
В шарпе это SOAP MS в виде WCF .
- Кроме того вы ТЗ на информационную систему SomeDTO напишите?
- SomeDTO это микросервис?
- Бизнес логика у вас где?
ЗЫ
В интернете ржут, что микросервисы у всех наслуху но никто в живую их не видел).
У меня впечатление, что вы их тоже не писали).
love_bachно хочется как-то красиво и просто чтобы было
Делите информационную систему по функционалу и по ГОСТ 34
...
Рейтинг: 0 / 0
08.09.2018, 21:00
    #39699993
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внутреннее общение между микросервисами
вместо этого твоего:
love_bach
Код: c#
1.
 var response = await client.GetStringAsync(url);


на WCF:
Код: sql
1.
2.
Микросервис_A.SomeDTO someDTO  = client.GetSomeClassAsync();
someDTO.ПроверитьДолги();


только это нафиг не надо.
...
Рейтинг: 0 / 0
08.09.2018, 21:05
    #39699994
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внутреннее общение между микросервисами
maytonЕсли "их API" протестирован и работает то подключайте его по localhost (он оптимизирован для ipc) и используйте.
Согласен. Т.е. там сетевое взаимодействие вообще моментально так?
...
Рейтинг: 0 / 0
08.09.2018, 21:22
    #39699997
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внутреннее общение между микросервисами
Petro123maytonЕсли "их API" протестирован и работает то подключайте его по localhost (он оптимизирован для ipc) и используйте.
Согласен. Т.е. там сетевое взаимодействие вообще моментально так?
Хороший вопрос. Он достоин отдельного топика.

Я не знаю как устроен localhost. Подозреваю что его перформанс сильно платформозависим.

Но нужно сначала прогнать задачу на макетах а потом уже искать ботлнек в localhost.

Нужен strong justification.
...
Рейтинг: 0 / 0
08.09.2018, 22:48
    #39700003
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внутреннее общение между микросервисами
maytonХороший вопросна что отвечу, что я рад что вы как профи подключились).
Тема на грани технологий и ЯП.
...
Рейтинг: 0 / 0
08.09.2018, 22:50
    #39700004
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внутреннее общение между микросервисами
maytonНужен strong justification.так глубоко я не умею. Я прикладник по сути.
...
Рейтинг: 0 / 0
09.09.2018, 00:33
    #39700018
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внутреннее общение между микросервисами
Кстати, я поражаюсь как MS смог упростить SOA / SOAP для прикладников.
Выше код есть. Ведь ничего по сути не надо делать и писать чтобы удаленный хост из Арктики не стал простейшим твои родным рядом.
Раньше я более скептически к soa относился.
Поэтому опять вопрос ТСу.
Занафига тут микросервисы?
Вы спутали межклассовое общение и микросервисы?
...
Рейтинг: 0 / 0
09.09.2018, 01:19
    #39700020
stenford
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внутреннее общение между микросервисами
love_bachкогда на основе очередей реализуется событийная модель взаимодействия, тут вроде разобрался.
но, когда эта модель не только событийная, а еще команды/запросы (внутри которых скрыта реализация на основе очереди), то тут возникает вопрос: как правильно подойти к реализации этих команд/запросов. может какой шаблон/подход посоветуете, или статейку с реализацией чего-то похожего?
микросервисы не могут посылать команды и запросы друг другу непосредственно, все общение только через асинхронные очереди
...
Рейтинг: 0 / 0
09.09.2018, 01:52
    #39700021
Дмитрий Мух
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Внутреннее общение между микросервисами
stenfordlove_bachкогда на основе очередей реализуется событийная модель взаимодействия, тут вроде разобрался.
но, когда эта модель не только событийная, а еще команды/запросы (внутри которых скрыта реализация на основе очереди), то тут возникает вопрос: как правильно подойти к реализации этих команд/запросов. может какой шаблон/подход посоветуете, или статейку с реализацией чего-то похожего?
микросервисы не могут посылать команды и запросы друг другу непосредственно, все общение только через асинхронные очереди
Да ладно не могут...

Synchronous Calls
The probably easiest communication pattern to implement is simply calling another service synchronously, usually via REST.
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Внутреннее общение между микросервисами / 25 сообщений из 106, страница 1 из 5
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]