Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Кто работает с микросервисами - есть вопросы

1430  1 2 3 4 5 6 все
AlexNek патриот08.07.21 11:22
AlexNek
08.07.21 11:22 

Решил вот тоже попробовать, но вопросов больше чем ответов. В принципе интересует ASP.NET Core 3.1 C#, но общие соображения тоже не помешают.

Фронтенд пока не трогаем пусть останется монолитом, хотя хотелось бы всё закинуть в один сервис. Для блазора решение есть во всяком случае.

Первое - это данные.

Сделал я базу, создал объекты, сделал рестфул апи - микросервис с постманом работает.

Теперь надо его вызвать. Сделал вызовы допустим, но ведь данные должны быть теже самые. То бишь или копия или ссылка.

А как же независимость? Если сервис изменил данные то тоже менять надо на фронтенде.

А базы как разные делать? Пользователь то мне нужен везде один и тот же, и подобных общих объектов море.

Пока остановлюсь...


#1 
  yurka_ffm знакомое лицо08.07.21 12:09
NEW 08.07.21 12:09 
в ответ AlexNek 08.07.21 11:22

Какая-то здесь каша.

Микросервисы это всё же о бекенде и нужны они далеко не везде. У вас глобальный энетрпрайз? Тысячи девелоперов? Строите внешние API с ежедневными релизами? Если нет, лучше оставить монолит.

Плясать нужно отсюда.


#2 
AlexNek патриот08.07.21 12:20
AlexNek
NEW 08.07.21 12:20 
в ответ yurka_ffm 08.07.21 12:09
Если нет, лучше оставить монолит

проблема не в этом. Что когда использовать не сильно интересует.

Задача разобраться с микросервисами и сделать демо приложение.


Микросервисы это всё же о бекенде

ну может название другое, но в идеале хотелось бы иметь "лего блоки" и для блазора + НЕТ 5 такое уже есть.

https://devblogs.microsoft.com/premier-developer/microfron...

Можно мешать Разор с Ангуляром и прочим. По ссылке только идея.

#3 
  yurka_ffm знакомое лицо08.07.21 12:52
NEW 08.07.21 12:52 
в ответ AlexNek 08.07.21 12:20, Последний раз изменено 08.07.21 12:55 (yurka_ffm)
Задача разобраться с микросервисами и сделать демо приложение.

Так это уже давно сделано: Первая попавшаяся ссылка на Гитхабе.

#4 
AlexNek патриот08.07.21 13:08
AlexNek
NEW 08.07.21 13:08 
в ответ yurka_ffm 08.07.21 12:52
Первая попавшаяся ссылка на Гитхабе.

Для начала нужно сделать самому чтобы понять. Не нашел пока ни одного подходящего проекта хммм


Что в ссылке не подходит:

10 microservices showcasing Kubernetes, Istio, gRPC and OpenCensus.

и

Нужно ASP.NET Core попроще и без зайцев желательно. Это все следующий этап.

Тут бы получить данные с Рестапи от доскер контейнера смущ

#5 
  yurka_ffm знакомое лицо08.07.21 13:27
NEW 08.07.21 13:27 
в ответ AlexNek 08.07.21 13:08

А так?

#6 
AlexNek патриот08.07.21 13:50
AlexNek
NEW 08.07.21 13:50 
в ответ yurka_ffm 08.07.21 13:27

Спасибо гляну, но первое, что смущает "deploy changes to the AKS cluster".

Но вопрос по данным всё равно остается открытым.

#7 
  yurka_ffm знакомое лицо08.07.21 14:00
NEW 08.07.21 14:00 
в ответ AlexNek 08.07.21 13:50

Даннные и вычисления нужно разделять, в этом суть.

AKS в Azure я поднял за 10 минут. Поигрался пару дней. Стоило меньше 2 Евро.

#8 
AlexNek патриот08.07.21 15:00
AlexNek
NEW 08.07.21 15:00 
в ответ yurka_ffm 08.07.21 14:00
Данные и вычисления нужно разделять, в этом суть.

Меня немного другое интересует. Данные на сервисе и фронтенде должны то быть одинаковыми. А как же "независимые сервисы"?


AKS в Azure я поднял за 10 минут.

Вообще то хотел дома в докере поиграться, а то за базу с приложением 5-ку драли ежемесячно. Сейчас поотключал всё, хотел глянуть выйдет ли на 0.

А Fabric Azure - это другое? Тоже вроде для микросервисов.

#9 
koder патриот08.07.21 15:58
koder
NEW 08.07.21 15:58 
в ответ AlexNek 08.07.21 15:00
Данные на сервисе и фронтенде должны то быть одинаковыми. А как же "независимые сервисы"?


Какие данные? Что такое данные в этом контексте? Фронт делает запрос по определенному адресу. Определенному. Состоящему из хоста, порта и ендпойнта(ресурса). Нттп запрос . Получает нттп ответ. Что значит "независимый"? Бэкенд отвечает на любой запрос. Фронта, постмана, другого бэкэнда. Бэкенд занимается подготовкой данных к показу или изменению. Фронт запрашивает , бэк вытаскивает данные из одного или многих источников, подготавливает к отправке и предоставляет по запросу.

#10 
koder патриот08.07.21 16:03
koder
NEW 08.07.21 16:03 
в ответ AlexNek 08.07.21 11:22
Пользователь то мне нужен везде один и тот же, и подобных общих объектов море.


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

#11 
AlexNek патриот08.07.21 16:14
AlexNek
NEW 08.07.21 16:14 
в ответ koder 08.07.21 15:58
Какие данные? Что такое данные в этом контексте?

У меня в есть в базе пользователь, сервис отдает мне например: имя, майл, роль. Для этого у меня есть POCO объект, создаваемый автоматом.

На фронтенде мне нужно получить тоже самое: имя, майл, роль. То бишь нужен идентичный POCO объект.

Теперь я в сервисе добавил телефон, значит нужна синхронизация с бекэндом и другими сервисами. Где же эта декларируемая независимость?


#12 
AlexNek патриот08.07.21 16:18
AlexNek
NEW 08.07.21 16:18 
в ответ koder 08.07.21 16:03
а запрашивает данные через соответствующий сервис

А как же дизайн базы? Удаляю я пользователя - значит автоматом со всех связанных таблиц должно удалится. Опять сервисам всё поручать и сообщения об удалении отслеживать? А если сервис слег и не получил сообщения?

#13 
  yurka_ffm знакомое лицо08.07.21 16:28
NEW 08.07.21 16:28 
в ответ AlexNek 08.07.21 16:18, Последний раз изменено 08.07.21 16:31 (yurka_ffm)
Удаляю я пользователя - значит автоматом со всех связанных таблиц должно удалится.

Для этого есть нормализация данных, это вопрос дизайна БД, это не совсем про микросервисы.

Каждый пользователь и его атрибуты должен писаться один раз (в идеале, конечно).

А если сервис слег и не получил сообщения?

Для этого СУБД должна уметь транзакции

#14 
AlexNek патриот08.07.21 16:34
AlexNek
NEW 08.07.21 16:34 
в ответ yurka_ffm 08.07.21 16:28
это вопрос дизайна БД

Для одной базы то нет проблем, а когда все таблицы по разным базам раскиданы? По базе на сервис.

#15 
  yurka_ffm знакомое лицо08.07.21 16:37
NEW 08.07.21 16:37 
в ответ AlexNek 08.07.21 16:34

То есть вы атомарный объект описываете атрибутами из разных БД? Не думаю, что это кошерно...

Есть конечно распределённые транзакции, но там с производительностью вопросы.

#16 
AlexNek патриот08.07.21 16:58
AlexNek
NEW 08.07.21 16:58 
в ответ yurka_ffm 08.07.21 16:37
То есть вы атомарный объект описываете атрибутами из разных БД?

Почему атомарный?

Вот есть у меня пользователи на германке.

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

Для одной базы мы бы добавили таблицу клубов и затем еще одну клуб-пользователь. Как теперь правильно сделать две базы для сервиса?

#17 
Murr патриот08.07.21 17:24
Murr
NEW 08.07.21 17:24 
в ответ AlexNek 08.07.21 16:14

Где же эта декларируемая независимость?

------

Рефрешишь импликацию клиента и получаешь.

Смотрел как-то способы расширения класса без перекомпиляции - ничего приличного не обнаружил. Хотя и какие-то решения были.

#18 
AlexNek патриот08.07.21 17:35
AlexNek
NEW 08.07.21 17:35 
в ответ Murr 08.07.21 17:24
Рефрешишь импликацию клиента и получаешь.

Так везде же кричат микросервисы, микросервисы - добавляй что хошь без изменений. Лукавят значат?

#19 
  yurka_ffm знакомое лицо08.07.21 17:46
NEW 08.07.21 17:46 
в ответ AlexNek 08.07.21 17:35

Не надо сюда приплетать микросервисы, тут скорее про дизайн БД.

А микросервисы вообще не всем нужны.

#20 
1 2 3 4 5 6 все