Вопросы с тегами [microservices]

1

голосов
0

ответ
3

Просмотры

Использование AWS API шлюза + Lambda без него становится Dependency

Там нет сомнений в преимуществах API Gatway + Lambda для микро-услуг. Меня беспокоит то, что произойдет, если мы решим, отъезжать API шлюза + Lambda для ECS / Fargate, или даже другой Cloud. Там, как представляется, консенсус по вопросу использования одной функции Lambda для каждого маршрута / действий. У меня есть несколько теорий о том, как разработать с помощью этого подхода, так что код может быть отсоединен от лямбда и вставленным в некоторых где-то еще. Я также хотел бы знать, что другие в обществе сделали для достижения этой цели? Кто-нибудь пытался переместить API от Lambda и смог успешно сделать это, используя дизайн XXXX? Какие уроки там? Язык не имеет никакого значения для этого обсуждения, но мы используем python3
Sam Hammamy
1

голосов
1

ответ
532

Просмотры

Событие Sourcing Microservices в узле

Я пытаюсь построить microservices ДОУ и пытается включить концепции ES / DDD / CQRS, поэтому у меня было несколько вопросов для практиков, которые там фактически реализованных это: 1) Можно ли построить microservices без использования ES, так как кажется, что это добавляет большую сумму сложности? 2) Кто-нибудь на самом деле построены производство microservices с помощью ES / DDD / CQRS с Nodejs, использовали ли вы какие-либо рамки? Я спрашиваю это, потому что кажется, что если вы хотите идти по этому пути, вы должны построить все инфраструктуры самостоятельно, так как нет полной структуры, таких как аксоны, или Акку, существую в сообществе узлов, и вы в основном должны свернуть свой своя. 3) Что бы лучший набор технологий использовать для создания microservices, который имеет приличную базу, имеющуюся, чтобы позволить вам сосредоточиться на бизнес-логике? 4) В архитектуре EDA с microservices, когда у вас есть несколько экземпляров одного и тот же сервис доступен, потому что CQRS требует отдельной модели для чтения / записи, где они могут быть реализованы в виде двух совершенно отдельных услуг, означает ли это, что для службы А там будет несколько сервисов модели чтения, которые все должны держать свои прогнозы до настоящего времени на основе событий, которые получили? Для людей, которые на самом деле реализованы в этом, вы можете предоставить свой инструктивный / опыт работы с этим? означает ли это, что для обслуживания А будет несколько моделей чтения услуг, которые все должны держать свои прогнозы до настоящего времени на основе событий, которые получили? Для людей, которые на самом деле реализованы в этом, вы можете предоставить свой инструктивный / опыт работы с этим? означает ли это, что для обслуживания А будет несколько моделей чтения услуг, которые все должны держать свои прогнозы до настоящего времени на основе событий, которые получили? Для людей, которые на самом деле реализованы в этом, вы можете предоставить свой инструктивный / опыт работы с этим?
John
1

голосов
2

ответ
23

Просмотры

Есть ли WCF (Windows Communication Foundation) имеют функцию Micro Web Service? И это только поддерживается REST?

мой вопрос заключается в следующем: Есть ли WCF (Windows Communication Foundation,) имеет функцию Micro Web Service и это поддерживается только REST?
Furkan Topal
1

голосов
1

ответ
230

Просмотры

Как использовать Cognito для управления Доступ к API

Мы строим ряд microservices с использованием API-шлюз + лямбда + DynamoDB. Мы должны обеспечить этот API, с помощью которых Cognito мы используем для управления пользователями. Мы будем иметь пул пользователя и две группы с разной IAM ролью, прикрепленной к каждой группе. Потребность пользователей в одной группе не должны быть в состоянии получить доступ ко всем услугам и поэтому пользователи в другой группе. Любые предложения, как мы можем это реализовать? Вопрос ID маркер генерируется Cognito не проверяется шлюзом API, чтобы проверить, какой уровень доступа пользователя имеет. Все это проверяет, если Cognito ID токен является действительным или нет.
Himanshu
1

голосов
0

ответ
231

Просмотры

CuratorFramework загрузки весна

Так что, если у меня есть 2 услуги, A и B. Каждая служба реализует CuratorFramework, но доступ к тому же Zookeeper кластера. Теперь это весна загрузки приложений. После того, как я запустить эти приложения весной загрузки, запустите несколько запросов на него, в течение определенного периода времени моей службы начали бросать OutOfMemory: Невозможно создать новую родную нить. Так что я сделал нить дамп и я заметил следующее: Куратор-ConnectionStateManager-0 - приоритет: 5 - ThreadId:-ConnectionStateManager-0 Куратор - состояние: ОЖИДАНИЯ StackTrace: sun.misc.Unsafe.park (Native Method) java.util. concurrent.locks.LockSupport.park (LockSupport.java:175) java.util.concurrent.locks.AbstractQueuedSynchronizer $ ConditionObject.await (AbstractQueuedSynchronizer.java:2039) java.util.concurrent.ArrayBlockingQueue.take (ArrayBlockingQueue.java:403) org.apache.curator.framework.state.ConnectionStateManager.
user1510266
1

голосов
0

ответ
40

Просмотры

Кэширование базы данных с Spring Cloud (или поддержание согласованных списков между microservices в целом)

Я совершенно новой для Spring Cloud и microservices в целом, и это понятие я изо всех сил, чтобы понять. Скажем, у меня есть microservice X, который подключается к базе данных Монго, и я позволил кэширование Spring с использованием @EnableCaching аннотации. Я поставил дело так, что всякий раз, когда сохранить / сохранить объект в Монго I, он также будет добавлен в мой кэш (@cachePut), а так же при удалении объекта из Монго он получает удаляется из кэша (@CacheEvict). Это все работает нормально, если у меня есть один экземпляр microservice X, но что произойдет, если я встаю 50 экземпляра microservice X? Все ли они один и тот же кэш, если это так, как это работает? Если все они имеют свои индивидуальные кэша, что произойдет, если Objecta добавляется в кэш одного экземпляра и базы данных, затем удаляются из базы данных с помощью другого экземпляра? Objecta будет по-прежнему находиться в кэше первого экземпляра, даже если он был удален из Монго. Надеюсь, кто-то может выяснить это
DraegerMTN
1

голосов
0

ответ
178

Просмотры

JHipster WebSockets поддержки в microservice архитектуры

Я пытался реализовать WebSockets в одном из microservices в моем проекте. Тем не менее, я узнал Zuul прокси не поддерживает WebSockets по умолчанию и jhipster разработчиков рекомендую добавление WebSockets к шлюзу проекта как в https://github.com/jhipster/generator-jhipster/issues/7335. Есть ли лучшее решение для этой проблемы, используя другую прокси-сервер, который позволит добавляющим WebSockets к microservice?
Feras Odeh
1

голосов
1

ответ
49

Просмотры

Microservice Circuit Breaker и модель обнаружения услуг

Я новичок в microservices и есть это сомнение, что Google не очень помог мне. Я знаю, что microservice должен быть независимыми, так что даже если один из его коллеги переходит в автономном режиме, один должны продолжать работать в обычном режиме. Имея это в виду, я не могу понять, автоматический выключатель или даже обнаружения сервисов, как, где должен ли я поставить его? Поскольку каждый вызов я сделать на любой microservice проходит через автоматический выключатель, скажем, сервер моего Circuit Breaker сервис идет в автономном режиме, так что вся моя заявка обречена, пока я не исправить. Как обойти это? Самое главное, где я должен поставить выключатель, в microservice, а?
Vanderson Assis
1

голосов
0

ответ
49

Просмотры

Micro услуги бронирования и оплаты подход

Так что мой вопрос заключается в том, чтобы перенаправить пользователя на внешний платежный шлюз, как выше подход, основанный на событиях? Есть ли лучший подход, который мы можем реализовать с этим прецедентом?
Kuldeep
1

голосов
0

ответ
48

Просмотры

Координирующего процессы в мире microservices

Я читал принятый ответ на этот пост SO: Orchestrating microservices и мой вопрос, каким образом один контролировать процесс, используя хореографию подход? Автор цитируемой книги пишет: Один из подходов, я бы для борьбы с этим является создание системы мониторинга, которая явно соответствует представлению бизнес-процесс в [процессе], но затем отслеживают то, что каждый из услуг, делает как независимые объекты, позволяя вам видеть странные исключения, отображенные на более явный поток процесса. То, что я хотел бы знать, как именно эта система мониторинга работы? Я попытался исследовать это, но не смог найти где-нибудь, что правильно описывает то, что я пытаюсь понять. То, как я имею в виду, это то, что мы храним какое-то представление процесса, как «здесь есть работа, которую нужно сделать», а затем, как это делается, у каждой службы обновления его соответствующим образом. Затем мы можем иметь что-то вроде хрон, который отслеживает это и посылает другое сообщение, если не была завершена. После попытки пять раз сказать, и она до сих пор не было сделано, мы можем сделать вывод, что этот процесс не удалось, и ответить соответственно к абоненту. Это точная интерпретация того, что автор ссылается на?
1

голосов
0

ответ
237

Просмотры

Springboot Microservices медленные ответы

Мой проект разработан в Springboot с эврика, Zuul, ленты и Он развернут на GCP kubernetes кластера. Если я пытаюсь отдохнуть звонки через почтальон Он работает нормально, но займет много времени (1s-2s), чтобы получить ответ. Я пытался сделать тест нагрузки для сервера. После показывает результат этого теста нагрузки. Но учтите, что этот запрос не подключается к базе данных, он только попал в точку и вернуть жёстко прописанное значение. Запуск 30s проверить @ https: //xxx.coo: 443 / API / v1 / вот / тест / test1 100 нитей и 100 Резьбовые соединения Статистика Avg StDev Макс +/- Stdev Задержка 1.23s 162,00мс 1.42s 45,45% Req / Sec 0.00 0,00 0,00 100,00% 333 запросов в 30.07s, 168.96KB ошибки чтения сокета: соединить 0, 0 чтения, записи 0, тайм-аут 300 Non-2xx или 3xx ответов: 200 запросов / сек: 11,08 Transfer / сек: 5. Запрос 62KB Почему / сек это мало? Как я должен настроить сервера для обработки больше нагрузок? Вот мои конфигурации. Учтите, что сервер обнаружения, Zuul апи и другие клиентские серверы работают в различных проектах springboot. Discovery Server application.properties весной файл: приложения: имя: сервер эврика-сервер: порт: 8070 эврика: окружающая среда: клиент производства: регистровая с-эврика: ложные выборки-реестр: ложный сервер: waitTimeInMsWhenSyncEmpty: 0 сервис URL: defaultZone: $ {DIS_SERVER} Zuul шлюза application.properties файл Zuul: префикс: / апи / v1 маршруты: g1-сервер: путь: / g1 / ** ServiceID: G1-SERVER g2-сервер: путь: / g2 / ** ServiceID: G2 -Server весна: приложение: имя: сервер Zuul-сервер: порт: 5000 эврика: клиент: регистровая с-эврика: правда выборки-реестр: истинный сервис URL: defaultZone: $ {DIS_SERVER} весна: облако: Inetutils: игнорируемые-интерфейсы: - eth0 - eth1 - eth2 - eth3 - вот - Veth * лента: ConnectTimeout: 200000 ReadTimeout: 200000 У меня есть. б restTemplate вызывать другие microservices. Следующий код показывает, как я использую restTemplate для вызова других microservices. Строка g1Url = "HTTP: // g1-сервер / уд / {ID}"; Строка g1Response = restTemplate.getForObject (g1Url, String.class, ID); 200000 Я использовал restTemplate вызывать другие microservices. Следующий код показывает, как я использую restTemplate для вызова других microservices. Строка g1Url = "HTTP: // g1-сервер / уд / {ID}"; Строка g1Response = restTemplate.getForObject (g1Url, String.class, ID); 200000 Я использовал restTemplate вызывать другие microservices. Следующий код показывает, как я использую restTemplate для вызова других microservices. Строка g1Url = "HTTP: // g1-сервер / уд / {ID}"; Строка g1Response = restTemplate.getForObject (g1Url, String.class, ID);
sugeesh
1

голосов
0

ответ
65

Просмотры

Доступ к модели и ОРМ в различных случаях Django [Microservice Архитектура]

У меня есть проект Django Rest при поддержке Postgres базы данных. Теперь каждое приложение в рамках этого проекта должен развязаны и быть перемещены в другой сервер. Но в нынешних взглядах есть места, где я импортировать модели из другого приложения и выполнять операции через ORM. Имея это в виду, как я могу получить доступ к модели из различных приложений (который будет запускаться в качестве отдельного экземпляра Джанго на разных серверах), а также выполнять запросы на них. ?
Lubi
1

голосов
2

ответ
1.1k

Просмотры

Не удалось обнаружить PropertySource из-за java.net.ConnectException: Соединение отклонено

Я создал Docker изображение и толкнул его в докер ступицу. Теперь я пытаюсь запустить его на удаленной машине с помощью докер-сочинять, и я получаю следующее сообщение об ошибке. java.lang.IllegalStateException: Не удалось найти PropertySource и терпеть неудачу быстро свойство установлено, в противном случае мой-test_1 | в org.springframework.cloud.config.client.ConfigServicePropertySourceLocator.locate (ConfigServicePropertySourceLocator.java:132) My-test_1 | в org.springframework.cloud.bootstrap.config.PropertySourceBootstrapConfiguration.initialize (PropertySourceBootstrapConfiguration.java:93) My-test_1 | в org.springframework.boot.SpringApplication.applyInitializers (SpringApplication.java:567) My-test_1 | в org.springframework.boot.SpringApplication.prepareContext (SpringApplication.java:338) My-test_1 | в org.springframework.boot.SpringApplication. бежать (SpringApplication.java:301) мой-test_1 | в net.ptidej.seodin.SeodinApp.main (SeodinApp.java:68) My-test_1 | в sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) My-test_1 | в sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) My-test_1 | в sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) My-test_1 | в java.lang.reflect.Method.invoke (Method.java:498) My-test_1 | в org.springframework.boot.loader.MainMethodRunner.run (MainMethodRunner.java:48) My-test_1 | в org.springframework.boot.loader.Launcher.launch (Launcher.java:87) My-test_1 | в org.springframework.boot.loader.Launcher.launch (Launcher.java:50) My-test_1 | в org.springframework.boot.loader.WarLauncher.main (WarLauncher.java:59) My-test_1 | Вызванный: org.springframework.web. client.ResourceAccessException: ошибка ввода / вывода по запросу GET для "HTTP: // локальный: 8761 / конфигурации / seodin / прод / мастер": Соединение отклонено (Соединение отклонено); вложенное исключение java.net.ConnectException: Соединение отклонено (Соединение отклонено) мой-test_1 | в org.springframework.web.client.RestTemplate.doExecute (RestTemplate.java:674) My-test_1 | в org.springframework.web.client.RestTemplate.execute (RestTemplate.java:621) My-test_1 | в org.springframework.web.client.RestTemplate.exchange (RestTemplate.java:539) My-test_1 | в org.springframework.cloud.config.client.ConfigServicePropertySourceLocator.getRemoteEnvironment (ConfigServicePropertySourceLocator.java:172) My-test_1 | в org.springframework.cloud.config.client.ConfigServicePropertySourceLocator.locate (ConfigServicePropertySourceLocator.java:93) My-test_1 | ... 13 общих кадров опущена мой-test_1 | Вызванный: java.net.ConnectException: Соединение отклонено (Соединение отклонено) мой-test_1 | в java.net.PlainSocketImpl.socketConnect (Native Method) My-test_1 | в java.net.AbstractPlainSocketImpl.doConnect (AbstractPlainSocketImpl.java:350) My-test_1 | в java.net.AbstractPlainSocketImpl.connectToAddress (AbstractPlainSocketImpl.java:206) My-test_1 | в java.net.AbstractPlainSocketImpl.connect (AbstractPlainSocketImpl.java:188) My-test_1 | в java.net.SocksSocketImpl.connect (SocksSocketImpl.java:392) My-test_1 | в java.net.Socket.connect (Socket.java:589) My-test_1 | в java.net.Socket.connect (Socket.java:538) My-test_1 | в sun.net.NetworkClient.doConnect (NetworkClient.java:180) My-test_1 | в sun.net.www.http.HttpClient.openServer (HttpClient.java:463) My-test_1 | на солнце. net.www.http.HttpClient.openServer (HttpClient.java:558) мой-test_1 | в sun.net.www.http.HttpClient (HttpClient.java:242) мой-test_1. | в sun.net.www.http.HttpClient.New (HttpClient.java:339) My-test_1 | в sun.net.www.http.HttpClient.New (HttpClient.java:357) My-test_1 | в sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient (HttpURLConnection.java:1220) My-test_1 | в sun.net.www.protocol.http.HttpURLConnection.plainConnect0 (HttpURLConnection.java:1156) My-test_1 | в sun.net.www.protocol.http.HttpURLConnection.plainConnect (HttpURLConnection.java:1050) My-test_1 | в sun.net.www.protocol.http.HttpURLConnection.connect (HttpURLConnection.java:984) My-test_1 | в org.springframework.http.client.SimpleBufferingClientHttpRequest.executeInternal (SimpleBufferingClientHttpRequest.java:78) My-test_1 | в орг. springframework.http.client.AbstractBufferingClientHttpRequest.executeInternal (AbstractBufferingClientHttpRequest.java:48) мой-test_1 | в org.springframework.http.client.AbstractClientHttpRequest.execute (AbstractClientHttpRequest.java:53) My-test_1 | в org.springframework.http.client.InterceptingClientHttpRequest $ InterceptingRequestExecution.execute (InterceptingClientHttpRequest.java:112) My-test_1 | в org.springframework.cloud.config.client.ConfigServicePropertySourceLocator $ GenericRequestHeaderInterceptor.intercept (ConfigServicePropertySourceLocator.java:237) My-test_1 | в org.springframework.http.client.InterceptingClientHttpRequest $ InterceptingRequestExecution.execute (InterceptingClientHttpRequest.java:88) My-test_1 | в org.springframework.http.client.InterceptingClientHttpRequest. executeInternal (InterceptingClientHttpRequest.java:72) мой-test_1 | в org.springframework.http.client.AbstractBufferingClientHttpRequest.executeInternal (AbstractBufferingClientHttpRequest.java:48) My-test_1 | в org.springframework.http.client.AbstractClientHttpRequest.execute (AbstractClientHttpRequest.java:53) My-test_1 | в org.springframework.web.client.RestTemplate.doExecute (RestTemplate.java:660) My-test_1 | ... 17 общие рамки опущена мой-test_1 | Я предполагаю, что это что-то делать с портами в одном из конфигурационных файлов, но я не знаю, какой из них. В чем смысл этой ошибки и где я должен смотреть, чтобы решить ее? Я был бы признателен за любой свинцовый / намек на проблему в исходных файлах код / ​​конфигурация. Спасибо. executeInternal (AbstractBufferingClientHttpRequest.java:48) мой-test_1 | в org.springframework.http.client.AbstractClientHttpRequest.execute (AbstractClientHttpRequest.java:53) My-test_1 | в org.springframework.web.client.RestTemplate.doExecute (RestTemplate.java:660) My-test_1 | ... 17 общие рамки опущена мой-test_1 | Я предполагаю, что это что-то делать с портами в одном из конфигурационных файлов, но я не знаю, какой из них. В чем смысл этой ошибки и где я должен смотреть, чтобы решить ее? Я был бы признателен за любой свинцовый / намек на проблему в исходных файлах код / ​​конфигурация. Спасибо. executeInternal (AbstractBufferingClientHttpRequest.java:48) мой-test_1 | в org.springframework.http.client.AbstractClientHttpRequest.execute (AbstractClientHttpRequest.java:53) My-test_1 | в org.springframework.web.client.RestTemplate.doExecute (RestTemplate.java:660) My-test_1 | ... 17 общие рамки опущена мой-test_1 | Я предполагаю, что это что-то делать с портами в одном из конфигурационных файлов, но я не знаю, какой из них. В чем смысл этой ошибки и где я должен смотреть, чтобы решить ее? Я был бы признателен за любой свинцовый / намек на проблему в исходных файлах код / ​​конфигурация. Спасибо. doExecute (RestTemplate.java:660) мой-test_1 | ... 17 общие рамки опущена мой-test_1 | Я предполагаю, что это что-то делать с портами в одном из конфигурационных файлов, но я не знаю, какой из них. В чем смысл этой ошибки и где я должен смотреть, чтобы решить ее? Я был бы признателен за любой свинцовый / намек на проблему в исходных файлах код / ​​конфигурация. Спасибо. doExecute (RestTemplate.java:660) мой-test_1 | ... 17 общие рамки опущена мой-test_1 | Я предполагаю, что это что-то делать с портами в одном из конфигурационных файлов, но я не знаю, какой из них. В чем смысл этой ошибки и где я должен смотреть, чтобы решить ее? Я был бы признателен за любой свинцовый / намек на проблему в исходных файлах код / ​​конфигурация. Спасибо.
smaug
1

голосов
0

ответ
156

Просмотры

Весна Облако (Netflix ОСС) Vs WSO2

С целью создания нескольких microservices, которые отказоустойчивые и упругим: Microservices в настоящее время строится с использованием Spring бутса Каковы основные различия между WSO2 API диспетчером и Spring Cloud? Использование различных компонентов Spring облака может построить один сопоставимое решение сродни WSO2 API менеджера или общий API сену? Если это так, что бы компоненты Spring Cloud можно было бы использовать? Можно смешивать и сочетать компоненты Spring Cloud с менеджером API WSO2? Насколько совместим WSO2 менеджер API с Spring Cloud? Например: Используйте систему балансировки нагрузки (ленты) и Service Discovery (Eureka) Весеннее облако, а затем использовать безопасности и аналитические компоненты WS02
Hemant
1

голосов
0

ответ
49

Просмотры

Apache Camel запрос-ответ шаблон неудачу в течение 3 или более микро-услуг

Я пытаюсь сделать запрос-ответ возвращает ответ в течение трех microservices. Итак, 1. апи 2. бэкенд обслуживание 3. другой бэкенд обслуживание Однако сообщение не делает его обратно к API (который блокирует), и я получаю вопрос тайм-аут. Я troubleshooted службы для обслуживания связи, и это оставляет меня с верблюдом в качестве причины. Я прочитал верблюд в действии и различных других источников, но не уверен, что лучший способ осуществить синхронную сделку в течение 3 или более микро услуг. Узоры EIP обычно только для размещения 2 услуг проходные. Вот обзор верблюжьих маршрутов для каждой службы. API остальное ( "/ апи") .post ( "/ применить"). Маршрут () .inout (APPLY_QUEUE) Backend Услуги 1 из (APPLY_QUEUE) .bean (somebean, "checkApplication") .то (REGISTER_QUEUE) Backend служба 2 из (REGISTER_QUEUE).
Kaigo
1

голосов
0

ответ
47

Просмотры

URI not absolute calling microservice in kubernetes pod

Я разработал microservice реагирующий по адресу: // локальный: 8080 / агрегатор [email protected], когда я запускаю его в развертывании Kubernetes (с Minikube) и с помощью службы балансировки нагрузки для того, чтобы выставить служба на улице, я не в состоянии добраться до него. Так что делать: minikube служба агрегатор --url дает мне обратно http://192.168.99.100:32482 Но Почтальон если я запрос GET: http://192.168.99.100:32482/[email protected] Я получаю следующую ошибку: { "метки времени": "2018-09-05T15: 32: 58,269 + 0000", "статус": 500, "ошибка": "Внутренняя ошибка сервера", "сообщение": «URI не является абсолютным », "путь": "/"} Если я пытаюсь с этим: http://192.168.99.100:32482/aggregator/#[email protected]
Alex Mawashi
1

голосов
3

ответ
51

Просмотры

Designing microservices in practice

Еще один вопрос о том, как или как не дробить microservice :-D Сценарий: Что нам нужно? Отправка сообщений электронной почты в различных точках времени в потоке работы процесса заказа электронной коммерции. Эти письма будут содержащей информацию о заказе. Что мы имеем? 1 х служба живучесть, которая получает информацию заказать несколько услуг, которые подписываются на заказ события и обрабатывает соответствующий случай использования (например, подтверждение, поставка, счета-фактуры) 1 х услуг, которые могут быть вызваны для отправки почты Какой следующий шаг? Проектирование архитектурного компонента, который преобразует информацию о заказе, таким образом они будут соответствовать структуре данных сервиса электронной визуализации. Существующие варианты 1, имеющие каждая служба обработки преобразования уже существующей информации для того, чтобы шаблон почты и отправить их на службу почты рендеринга. 2 есть каждая услуга обработки вызовов новая услуга, которая будет объединять и преобразовывать информацию о заказе и вызвать службу почты рендеринга. В настоящее время мы еще не уверены, если структуры данных для почтовых шаблонов будут в основном общими, или если будут различие. Так что вы думаете об этих вариантах с точкой зрения сцепления, муфты и разделения задач? Есть ли Вам нужна дополнительная информация? Любые конструктивные мысли приветствуются! соединение и разделение задач? Есть ли Вам нужна дополнительная информация? Любые конструктивные мысли приветствуются! соединение и разделение задач? Есть ли Вам нужна дополнительная информация? Любые конструктивные мысли приветствуются!
gooby
1

голосов
0

ответ
29

Просмотры

Харден против привилегий в Microservices

Пожалуйста, обратите внимание на следующий сценарий. Система имеет множество владельцев бизнеса (т.е. пользователей системы) Каждый владелец бизнеса сопоставлен набор клиентов Владельцы бизнеса Входа в систему для того, чтобы управлять своими клиентами. Владельцы бизнеса будет выбрать один клиент первый, а оттуда дальше своей сессии обязан, что выбранный пользователем. У меня есть набор microservices, каждый требует клиент-идентификатор для обработки. т.е. Microservice предоставляет GET / ресурс-а / {клиент-идентификатор} Microservice B предоставляет POST / ресурсов б / {клиент-ID} и т.д. Клиент-Id считается чувствительной информации - так, что она находится в зашифрованном виде , Однако она по-прежнему уязвимы для привилегий эскалации. то есть владелец один бизнес может ошибочно делиться зашифрованным клиентом идентификатором через закладку и т.д. Я хочу, чтобы избежать на стороне сервера авторизации клиента-ид против владельца бизнеса, потому что, как известно, медленная операция и и 90% API, придется повторить этот процесс авторизации Все microservices являются лицами без гражданства, так что это не возможно зашифровать Клиент-Id с Session-ID в качестве ключа (так как не сохраняющего состояния microservices / сеанса) Кроме того, я не думаю, что это хорошая идея, чтобы сделать это разрешение на шлюзе, так как он не предназначен для выполнения такого бизнеса-логики. Как я могу предотвратить повышение привилегий в этой ситуации? не возможно зашифровать Клиент-Id с сеансовым идентификатором в качестве ключа (так как не сохраняющее состояния microservices / сеанса) Кроме того, я не думаю, что это хорошая идея, чтобы сделать это разрешение на шлюзе, так как он не предназначен для выполнения такого бизнеса логика. Как я могу предотвратить повышение привилегий в этой ситуации? не возможно зашифровать Клиент-Id с сеансовым идентификатором в качестве ключа (так как не сохраняющее состояния microservices / сеанса) Кроме того, я не думаю, что это хорошая идея, чтобы сделать это разрешение на шлюзе, так как он не предназначен для выполнения такого бизнеса логика. Как я могу предотвратить повышение привилегий в этой ситуации?
Fahim Farook
1

голосов
1

ответ
127

Просмотры

убить: недопустимый номер сигнала или имя: igterm

У меня есть приложение, развернутое на облаке литейного производства, и при попадании в мое приложение в браузере получаю следующее сообщение об ошибке 502 Bad Gateway: Registered конечная точка не удалось обработать запрос. А в журналах я нашел эту ошибку: [APP / PROC / WEB / 0] ERR .app-менеджмент / скрипты / запуск: 1: убить: неверный номер сигнала или имя: igterm Любого посоветуйте, что это значит?
User
1

голосов
1

ответ
197

Просмотры

Почему Authorization заголовок отсутствует?

У меня есть Eureka и связанные услуги Zuul: 8090, AuthService: [any_port]. Я посылаю ../login запрос на Zuul он отправить AuthSercice. Затем AuthSerice положить в Header JWT аутентификацию. @Override защищенных пустот successfulAuthentication (HttpServletRequest запрос, ответ HttpServletResponse, FilterChain цепи, аутентификация authResult) бросает IOException, ServletException {Строки маркер = Jwts.builder () .setSubject (((Пользователь) authResult.getPrincipal ()). GetUserName ()). setExpiration (новая дата (System.currentTimeMillis () + EXPIRATION_TIME)) .signWith (SignatureAlgorithm.HS512, SECRET) .compact (); response.addHeader ( "Разрешение", "Канал" + маркер); // это отсутствует response.addHeader ( "Authorization2", "Знаменосец" + маркер); // нормально} я запрос на Почтальон. Запрос результат Сначала я пытался использовать JWT в монолитах. Там не было никаких проблем, и авторизация Токен может быть добавлен. Почему Authorization заголовок отсутствует?
airush
1

голосов
2

ответ
329

Просмотры

Spring Security Access-Control-Allow-Origin: * (CORS) вопрос о недопустимой лексемы JWT

У меня есть безопасность JWT, сконфигурированная с Spring Security в приложении Spring загрузки. У меня есть проблема с Access-Control-Allow-Origin: * заголовок, также известный как CORS. Я настроил приложение таким образом, заголовок присутствует в каждом ответ сервера, но как только JWT лексем недействительных, ответы сервера с кодом ошибки 403 без Access-Control-Allow-Origin: * заголовок. Это приводит браузер написать сообщение об ошибке на консоль: Не удалось загрузить HTTP: // ... «Access-Control-Allow-Origin:» Нет заголовка присутствует на запрошенный ресурс. Происхождение «HTTP: // ...», следовательно, не разрешен доступ. Ответ был HTTP код статуса 403. Это кажется неправильным, и я хотел бы получить Access-Control-Allow-Origin: * заголовок в ответ, даже если JWT лексемы недействительных и ответы сервера с кодом 403 ошибок. Теперь то, что я пытался и мой код. Зависимости: org.springframework. ботинки весны ботинки стартера-родитель 2.0.5.RELEASE ... org.springframework.boot весна-загрузка-стартер-безопасность Как я понял, этот вопрос может быть вызвана порядка фильтра в цепочке фильтров, и я пытался поставить свою JWT JwtAuthenticationFilter после CorsFilter или CsrfFilter, создать CorsConfigurationSource боб. Это описано в https://docs.spring.io/spring-security/site/docs/current/reference/html5/#cors и обсуждены на Как настроить CORS в приложении Spring Загрузочный + Spring Security? и https://github.com/spring-projects/spring-boot/issues/5834, но ничего, кажется, помогает @Configuration @EnableWebSecurity общественного класса SecurityConfiguration расширяет WebSecurityConfigurerAdapter {@value ( "$ {com.faircloud.common.security.header } ") частный заголовок строки; @Value ( "$ {com.faircloud.common. } @Bean общественного CorsConfigurationSource corsConfigurationSource () {конечная конфигурация CorsConfiguration = новый CorsConfiguration (); configuration.setAllowedOrigins (ImmutableList.of ( "*")); configuration.setAllowedMethods (ImmutableList.of ( "голова", "GET", "POST", "PUT", "DELETE", "заплатки")); // setAllowCredentials (истинные) имеет важное значение, в противном случае: // Значение свойства «Access-Control-Allow-Origin» заголовка в ответе должен быть // не символ «*», когда режим учетных данных запрос является «включить». configuration.setAllowCredentials (истина); // setAllowedHeaders важно! Без него OPTIONS предполетной запрос // проваливается с 403 конфигурации Неверный запрос CORS. setAllowedHeaders (ImmutableList.of ( "Авторизация", "Cache-Control", "Content-Type")); Последний источник UrlBasedCorsConfigurationSource = новый UrlBasedCorsConfigurationSource (); source.registerCorsConfiguration ( "/ **", конфигурация); вернуться источник; }} Здесь класс JwtAuthenticationFilter. Обратите внимание, что для проверки лексемы вызывает другую microservice через HTTP. Кроме того, мое приложение не имеет входа в конечную точку, поскольку Логин осуществляется на другом приложении microservice. общественный класс JwtAuthenticationFilter расширяет BasicAuthenticationFilter {личного заголовок String; частная Строка префикс; частная строка validateLink; JwtAuthenticationFilter (заголовок общественного String, String Префикс, Строка validateLink) {супер (новый AuthenticationManager () {общественного Аутентифицировать Authentication (аутентификация Аутентификация) проливает AuthenticationException {возвращение NULL;}}); this.header = заголовок; this.prefix = префикс; this.validateLink = validateLink; } @Override защищен недействительным doFilterInternal (HttpServletRequest запрос, HttpServletResponse ответ, FilterChain цепь) бросает ServletException, IOException {// 1. получить заголовок аутентификации. Лексемы должны быть переданы в // аутентификации заголовка Строка HeaderValue = request.getHeader (заголовок); // 2. Проверка заголовка и проверить префикс, если (HeaderValue == NULL ||! HeaderValue. StartsWith (префикс)) {chain.doFilter (запрос, ответ); // Если не действует, переходите к следующему фильтру. вернуть; } // 3. Получить маркер строки маркер = headerValue.replace (префикс, ""); попробуйте {GatewayResponse gatewayResponse = Validate (маркер); Строка = идентификатор пользователя gatewayResponse.getUserId (); / * Роли могут исходить от шлюза или загружены из текущей базы данных microservice по идентификатору пользователя. Они жёстко здесь, чтобы показать, как заполнять SecurityContextHolder * / Список власти = новый LinkedList (); authorities.add ( "USER"); authorities.add ( "ADMIN"); UsernamePasswordAuthenticationToken AUTH = новый UsernamePasswordAuthenticationToken (идентификатор пользователя, нулевой authorities.stream () карта (SimpleGrantedAuthority :: новый) .collect (Collectors.toList ()).); . SecurityContextHolder.getContext () setAuthentication (авт); addTokenToResponse (gatewayResponse.getAuthHeader (), ответ); } Задвижка (Исключение е) {// В случае неудачи. Убедитесь в том, что это ясно; поэтому гарантировать пользователю не будет // проверка подлинности SecurityContextHolder.clearContext (); } // перейти на следующий фильтр в цепи фильтра chain.doFilter (запрос, ответ); } Частная пустота addTokenToResponse (String authHeaderValue, HttpServletResponse ответ) {response.addHeader (заголовок, префикс + authHeaderValue);
Pavlo
1

голосов
0

ответ
65

Просмотры

ЛАГ Framework - Как смешивать Java и Scala в той же службе?

Я проникаю от Spray Framework (версия 1.3.x) на основе API сервиса JSON REST к Рамочной службе ЛАГА. Некоторые разработчики свободно владеет Scala и некоторые из них нет, и я просто хочу, чтобы это было сделано с без того, чтобы заставить все стать свободно в Scala. Как смешивать Java и Scala в одной и той же ЛАГОМ службы? Кроме того, это немного в сторону, но я могу сделать это с Scala 2.13 и Java 11?
Michael Lafayette
1

голосов
1

ответ
45

Просмотры

Централизация данных временных рядов в один микро-сервис для кросс-сущностей запросов

Я разрабатываю набор услуг с использованием шаблона microservice архитектуры. Многие из моих моделей будут иметь большие объемы данных временных рядов, которые будут потребляемыми машинное обучение двигателя. Я хотел бы, чтобы моя машина обучения двигателя, чтобы иметь возможность запрашивать данные «кросс-предприятия». Значение, что я хотел бы иметь возможность сравнивать «особенность» (машинный термин обучения для точек данных / характеристика объекта рассматривается) на несколько объектов. Мне пришло в голову, что я мог бы иметь централизованную microservice, которая специально предназначена для хранения и предоставлять информацию о временных рядов. Если бы я мог создать API между службой, которая хранит свои бизнес-объекты и эту услугу функций, то я мог бы добиться этого. С одной службой признака (или, возможно, по одному на модель предметной области), Я мог бы опрашивать любой набор функций из любой модели, пока разрешение по времени одно и то же. Мой вопрос: является ли централизованное временными рядами хранилища данных, в виде microservice которой относится это особенность различных модели, расположенных во внешних услугах, жизнеспособный дизайн шаблона для достижения кросса-сущности функции запрашивания? Если нет, то какие модели конструкции могут быть использованы для этой цели? Я не чувствую себя комфортно хранения данных тиражирование временных рядов, запросов и манипуляции в каждом microservice я создаю. Вот диаграмма, показывающая картину я заинтересован в развитии: жизнеспособный шаблон дизайна для достижения кросса-сущности функции запрашивания? Если нет, то какие модели конструкции могут быть использованы для этой цели? Я не чувствую себя комфортно хранения данных тиражирование временных рядов, запросов и манипуляции в каждом microservice я создаю. Вот диаграмма, показывающая картину я заинтересован в развитии: жизнеспособный шаблон дизайна для достижения кросса-сущности функции запрашивания? Если нет, то какие модели конструкции могут быть использованы для этой цели? Я не чувствую себя комфортно хранения данных тиражирование временных рядов, запросов и манипуляции в каждом microservice я создаю. Вот диаграмма, показывающая картину я заинтересован в развитии:
user2480766
1

голосов
1

ответ
59

Просмотры

Как иметь дело с длинной цепью Invoke с микро-сервис

мой проект создан с архитектурой Micro Service, один бизнес может понадобиться несколько услуг вызова. В настоящее время большинство услуг называют необходимо серийный вызов, так как запрос следующего вызова службы генерируется из ответа последнего обслуживания вызова. Это делает ВЫЗОВ цепочка очень долго, производительность плохо, это какое-либо решение, чтобы иметь дело с этим сценарием? Или мне нужно, чтобы изменить свой микро-дизайн услуг? Спасибо!
Allen4Tech
1

голосов
0

ответ
43

Просмотры

Mediatr - Где это правильное место, чтобы аннулировать кэш / обновления

Этот вопрос связан с этим другой вопрос, который я задал вопрос о слишком много интерфейсов, QCRS и библиотеки Mediatr (запрос / ответ) Mediatr: уменьшение числа объектов DI'ed Я создал кучу команд и запросов, и у меня есть куча поведения и один из их бытие является поведение кэша, что для каждого запроса, кэш проверяется на значение до того, как запрос фактически выполняется с БД. До сих пор это работает прекрасно, но delima приходит, когда у меня есть UpdateSomethingCommand, когда я обновить базовый объект в БД, я хотел бы, чтобы обновить кэш с тем, что был успешно сохранен в БД. Мой вопрос конкретно, когда на самом деле обновления кэша:
Zoinky
1

голосов
1

ответ
187

Просмотры

org.springframework.security.oauth2.common.exceptions.InvalidGrantException: Неверные учетные данные

Я занимаюсь разработкой Spring загрузочного + Авторизация + OAuth ресурсов сервера Server. В этом примере я могу легко запросить хотя почтальон над пружинными microservices-OAuth-сервером и получить защищенные данные. Я создал клиент для доступа к данным, который делает почтальон. Но я получаю ниже ошибки, которая не становится ясно для меня. Использование Spring загрузка v2.1.1.RELEASE и весна-облако-зависимости версия Greenwich.RC2. Servlet.service () для сервлета [DispatcherServlet] в контексте с путем [] бросил исключение [обработка запроса не удалась; вложенное исключение ошибки = «ACCESS_DENIED», error_description = «маркер Доступ запрещен.»] с первопричины Ошибка: org.springframework.security.oauth2.common.exceptions.InvalidGrantException: Неверные учетные данные в org.springframework.security.oauth2.common. exceptions.OAuth2ExceptionJackson2Deserializer. 49) [встраивать-кот-ядро-9.0.13.jar: 9.0.13] на java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1149) [па: 1.8.0_171] на java.util.concurrent. ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:624) [па: 1.8.0_171] на org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run (TaskThread.java:61) [встраивать-кот-ядро-9.0 .13.jar: 9.0.13] в java.lang.Thread.run (Thread.java:748) [на: 1.8.0_171] весна-microservices-OAuth-сервер AuthorizationServerConfig.java @Configuration общественного класса AuthorizationServerConfig расширяет AuthorizationServerConfigurerAdapter {@ Autowired @Qualifier ( "authenticationManagerBean") частное AuthenticationManager AuthenticationManager; @Override общественных недействительная Configure (AuthorizationServerEndpointsConfigurer конечных точки) бросает исключение {конечные точки. AuthenticationManager (AuthenticationManager); } Недействительным настроить @Override общественности (ClientDetailsServiceConfigurer клиентов) бросает исключение {клиентов .inMemory) .withClient ( "WebApp") .secret (( "{} Noop websecret") //.authorizedGrantTypes("password», "refresh_token") .authorizedGrantTypes ( "пароль") .scopes ( "чтение, запись, доверие") .accessTokenValiditySeconds (1800); }} WebSecurityConfig.java @Configuration общественного класса WebSecurityConfig расширяет WebSecurityConfigurerAdapter {@Bean общественного AuthenticationManager authenticationManagerBean () бросает исключение {возвращать super.authenticationManagerBean (); } @Override защищен недействительным сконфигурировать (AuthenticationManagerBuilder AUTH) бросает исключение {PasswordEncoder кодер = PasswordEncoderFactories.createDelegatingPasswordEncoder (); // @formatter:... От авт .inMemoryAuthentication () .withUser ( "user1") пароль (encoder.encode ( "Password1")) роли ( "USER") .и () .withUser ( "джон") пароль (encoder.encode ( "password1")). роли ( "USER", "ADMIN") .и () .withUser ( "вылазка"). пароль (encoder.encode ( "Password1")). роли ( "ADMIN" ); // @formatter: на}} SpringMicroservicesOauthServerApplication. Java @SpringBootApplication @EnableAuthorizationServer @EnableResourceServer @RestController @EnableGlobalMethodSecurity (prePostEnabled = истина) общественного класса SpringMicroservicesOauthServerApplication {@RequestMapping ( "/ ресурс / конечная точка") @PreAuthorize ( "hasRole ( 'ADMIN')") публичное Струнный конечная точка () {возвращение " Это сообщение защищено сервером ресурсов !!!! "; } государственной статической силы основных (String [] агдз) {SpringApplication.run (SpringMicroservicesOauthServerApplication.class, арг); }} Этот код работает очень хорошо, если я называю лексемами и защищенные ресурсы. То же самое я хотел создать его с помощью пользовательского интерфейса клиента. Я создал ниже проекта клиента. WebSecurityConfig. Java @Configuration общественного класс WebSecurityConfig расширяет WebSecurityConfigurerAdapter {@Override защищен недействительная Configure (HttpSecurity HTTP) бросает исключение {http.authorizeRequests () .anyRequest () .authenticated () й () .formLogin () й () .httpBasic () ; } @Override защищен недействительным сконфигурировать (AuthenticationManagerBuilder AUTH) бросает исключение {PasswordEncoder кодер = PasswordEncoderFactories.createDelegatingPasswordEncoder (); // @formatter:... От авт .inMemoryAuthentication () .withUser ( "user1") пароль (encoder.encode ( "Password1")) роли ( "USER") .и () .withUser ( "джон") пароль (encoder.encode ( "Password1")). роли (» details.setClientId ( "веб-приложение"); details.setClientSecret ( "websecret"); details.setGrantType ( "пароль"); детали возврата; } @RequestMapping ( "/ выполнить") публичное исполнение Строка (Principal принципала) бросает URISyntaxException {пользователя = (Пользователь) ((аутентификации) основной) .getPrincipal (); Uri Uri = новый URI ( "HTTP: // локальный: 9090 / ресурс / конечная точка"); Запрос RequestEntity = новый RequestEntity (HttpMethod.POST, URI); AccessTokenRequest accessTokenRequest = this.restTemplate.getOAuth2ClientContext () getAccessTokenRequest (). accessTokenRequest.set ( "Имя пользователя", user.getUsername ()); accessTokenRequest.set ( "пароль", user.getPassword ()); вернуться restTemplate.exchange (запрос, String.class). getBody (); } государственной статической силы основных (String [] агдз) {SpringApplication.run (SpringMicroservicesOauthClientApplication.class, арг); }} EDIT-1: - Через Почтальон код работает отлично. Вот локон команда из почтальона. Но когда я звоню коду из кода клиента он дает мне ошибку. свернуться -X POST 'HTTP: // локальный: 9090 / OAuth / маркер grant_type = пароль и имя пользователя = user1 и пароль = password1?' -h 'авторизации: Basic d2ViYXBwOndlYnNlY3JldA ==' -h 'кэш-контроль: нет-кэш' -H «Почтальон -token: 0b0547b9-223d-0583-3e11-abe45cfc12af»{ "access_token": "99693b5a-6cfb-4049-8641-2f2a0cccb224", "token_type": "знаменосец", "refresh_token":«25b33fdf-83ad-43a8-afa9 -e4d457f02244" , "expires_in": 1799 "Объем": "
PAA
1

голосов
1

ответ
43

Просмотры

Проверка работоспособности для обслуживания потока вниз

Я хочу написать здоровья проверить все мои вниз услуги потока, который потребляется нашими услугами. мы можем написать легко для методов GET, это никак не повлияет. но как сделать это для методов POST / PUT, как она изменяет существующие значения?
Arun Kalvichandran
1

голосов
0

ответ
24

Просмотры

Замедление Redis через прокси-сервер

для некоторой нагрузки / хаоса тестирования на Java springboot microservice, я пытаюсь замедлить зависимости, в том числе Redis. Я использую toxiproxy впрыснуть латентности на последующих вызовах (мыло, отдых, БД SQL, и т.д.), и все это ведет себя. Я хочу сделать то же самое с Redis. В основном, убедившись, что чтение или запись занимает 10 секунд от Явы. Дело в том, если я добавить медленный прокси перед портом дозорного, это не имеет никакого эффекта. Если я добавить медленный прокси перед сервером, он не имеет никакого эффекта либо. Стража на 26000 Сервер находится на 6379 сервере «замедленных» находится на 6377, я могу проверить с Redis-CLI -p 6377 и все чтения вызовы / записи, безусловно, принимает 10 секунд Но из приложения Java, никакого эффекта вообще. Я пробовал разные application.properties комбинации этого, но она имела нулевой эффект. spring.redis.sentinel.master = mymaster spring.redis.sentinel. узлы = локальный: 26000 spring.redis.cluster.nodes = локальный: 6377 Что я пропустил? Спасибо
MikaelW
1

голосов
1

ответ
35

Просмотры

Fastest way to store a file to stream from Service Fabric application?

Сценарий: Я хочу, чтобы тканевое приложение службы, которая может вернуть файл при запросе, как [GET] / {FILEID} / чтения. Допустим, что FILEID связано с CUSTOMERID, например ======================= CUSTOMERID | FILEID ======================= 1 | 1 ----------------------- 1 | 2 ----------------------- 1 | 3 ----------------------- 2 | 4 ----------------------- 2 | 5 Эти различные комбинации (нет 2 fileIds для одной и той же CustomerId). Я хочу CUSTOMERID быть единицей масштаба. Другими словами, нагрузка на CUSTOMERID = 326 не должно влиять на производительность CUSTOMERID = 913842, но нагрузка на CUSTOMERID = 326 может повлиять на свою собственную работу. Я не то, что опыт в понимании отслеживания состояния услуг, надежные актеров, partinioning и т.п. I» интересно, если я могу достичь чего-то, где эти файлы будут храниться на физических дисках узлов, для прямого доступа. Это будет выглядеть примерно так: NODE0 Node1 Node2 node3 Node4 \ / | \ / Customer1 Customer2 Customer3 \ \ | | | [GET] / 3 / поток и файл 3 может храниться непосредственно на диске NODE1 по адресу E: \\ файлы \ foo.txt так что он может быть потоковым быстро. Это возможно даже, или, что лучше? NODE0 Node1 Node2 node3 Node4 \ / | \ / Customer1 Customer2 Customer3 \ \ | | | [GET] / 3 / поток и файл 3 может храниться непосредственно на диске NODE1 по адресу E: \\ файлы \ foo.txt так что он может быть потоковым быстро. Это возможно даже, или, что лучше? NODE0 Node1 Node2 node3 Node4 \ / | \ / Customer1 Customer2 Customer3 \ \ | | | [GET] / 3 / поток и файл 3 может храниться непосредственно на диске NODE1 по адресу E: \\ файлы \ foo.txt так что он может быть потоковым быстро. Это возможно даже, или, что лучше?
Mike Rowe Sirvis
1

голосов
0

ответ
34

Просмотры

генератор кода на основе шаблона может быть создан для создания базового приложения microservices с помощью Java

Я хочу знать, как генератор кода шаблона на основе может быть создан для создания приложения основных microservices. Разработчик Java может затем просто подключить / код соответствующих бизнес-правил.
vasanth kumar
1

голосов
0

ответ
30

Просмотры

Azure Active Directory на имени-потока в растворе microservices

У меня есть решение microservices с шлюзом API в передней части microservices. Я хочу, чтобы разрешение должно произойти на уровне microservice. У меня есть клиент, использующий SPA неявного потока для получения маркеров и вызова API. В API я использую на имени-потока, чтобы получить маркер для вызова соответствующей microservice как пользователь. Таким образом, чтобы microserice это, кажется, пользователь и авторизация может быть выполнена. Мой вопрос, если я не использую на имени-потока я должен был бы дать Шлюзмежсетевого API в разрешение на уровне приложения для доступа к microservice. Если я даю API на уровне приложения Служащие обслуживания (клиент верительных потока гранта) возможности, то я бы полагаться на шлюз API для выполнения авторизации, что кажется очень плохой идеей. Это также очень плохая идея, если другой API нужно вызвать мину в подобной ситуации. Мой вопрос заключается в следующем: что некоторые другие подходы, которые позволили бы мне течь личность пользователя через к microservice так надлежащее разрешение может произойти? Я видел примеры другого заголовка используются в идентичности сервере, но я не, если это будет сделано из-за некоторое отсутствие на имени-вариантов в удостоверении Server. Кстати, я понимаю, что я мог бы передать идентификатор пользователя в виде строки, но я бы потерять все подписанные символические преимущества, которые обеспечивают уровень уверенности в том, что маркер не был подделан.
Burt
1

голосов
0

ответ
42

Просмотры

Расчет Наличие Event Driven Architecture Microservice

У меня 2 microservices - «А» производит некоторые данные, которые событие Sourced и реплицируется в microservice «B». У меня есть пользовательский интерфейс, который разговаривает с API сидит на вершине microservice «B», который внутренне использует реплицированные данные от «А». Я сделал расчет доступности индивидуально для обоих microservices - скажем, 99,5% и 99,8%. Как рассчитать доступность для всей системы? Например, если «А» вниз и «B» вверх, пользователи по-прежнему видеть API, работающих с B, хотя и с устаревшими данными из «A». Я не должен быть первым, кто наткнулся на этот сценарий ...
Sriram Somasuntharam
1

голосов
0

ответ
75

Просмотры

Scaling database in a microservice architecture

Допустим, у нас есть 5 microservices (мкСм) и каждый microservice требует одну базу данных с несколькими таблицами. Каждые из этих услуг должны иметь возможность масштабирования в том числе запросов к базе данных. Для этого у нас есть несколько вариантов, которые я знаю: 1. 1-мкСм; 1 экземпляр; 1 экземпляр БД Не масштабировать по горизонтали, по вертикали просто. 2. 1-мкСм; N экземпляров; 1 экземпляр DB Каждый экземпляр службы получает для чтения и записи в одной и той же базе данных. Простой способ масштабирования, если обработка службы является узким местом. 3. 1-мкСм; N экземпляров; HA DB кластера Каждый экземпляр службы получает для чтения и записи в одной и той же базе данных HA. Хороший способ масштабирования, если база данных для чтения / записи также является узким местом. Большая стоимость эксплуатации. 4. N-мкСм; N экземпляров; HA DB кластера Каждый экземпляр каждой службы получает для чтения и записи в тот же кластер базы данных HA. Каждая служба использует свою собственную базу данных в кластере HA DB. 5. Другие Существуют ли другие способы масштабирования базы данных наряду с услугой, которая требует его? С каждого решения есть компромисс, будь то чтение или запись производительность, эксплуатационные расходы и т.д., но то, что будет рекомендовано решение для расширения базы данных: с службы и базы данных равны таким образом, что масштабирование службы требуется масштабирование базы данных? с сервисом требует больше времени обработки означает, что служба должна масштабироваться, а не базы данных? с базой данных требуют больше времени обработки, чем услуги? Мое мнение таково, что если Servise высоко на записи, то 3 или 4 является решением и для остальных 4 является решением. будь то чтение или запись производительность, эксплуатационные расходы и т.д., но то, что будет рекомендовано решение для расширения базы данных: с службы и базы данных равны таким образом, что масштабирование службы требуется масштабирование базы данных? с сервисом требует больше времени обработки означает, что служба должна масштабироваться, а не базы данных? с базой данных требуют больше времени обработки, чем услуги? Мое мнение таково, что если Servise высоко на записи, то 3 или 4 является решением и для остальных 4 является решением. будь то чтение или запись производительность, эксплуатационные расходы и т.д., но то, что будет рекомендовано решение для расширения базы данных: с службы и базы данных равны таким образом, что масштабирование службы требуется масштабирование базы данных? с сервисом требует больше времени обработки означает, что служба должна масштабироваться, а не базы данных? с базой данных требуют больше времени обработки, чем услуги? Мое мнение таково, что если Servise высоко на записи, то 3 или 4 является решением и для остальных 4 является решением. с обслуживанием и базы данных равны таким образом, что масштабирование службы требуются масштабирование базы данных? с сервисом требует больше времени обработки означает, что служба должна масштабироваться, а не базы данных? с базой данных требуют больше времени обработки, чем услуги? Мое мнение таково, что если Servise высоко на записи, то 3 или 4 является решением и для остальных 4 является решением. с обслуживанием и базы данных равны таким образом, что масштабирование службы требуются масштабирование базы данных? с сервисом требует больше времени обработки означает, что служба должна масштабироваться, а не базы данных? с базой данных требуют больше времени обработки, чем услуги? Мое мнение таково, что если Servise высоко на записи, то 3 или 4 является решением и для остальных 4 является решением.
CodeBreaker
1

голосов
1

ответ
146

Просмотры

Passing user identity and authorization between microservices

Я запутался - что это лучший способ, чтобы передать идентификатор пользователя (информация авторизации) между microservices в асинхронном способе? Допустим, у меня уже есть точка входа (API шлюза), который handes аутентификации и выдает JWT маркеры. Затем пользователь вызывает некоторые API конечной точки с этим маркером. До этого момента все понятно. Теперь - это конечная точка должна взаимодействовать с другим microservice. Это microservice должен получить информацию об авторизации (роли, и т.д.). Кроме того - этот канал является асинхронным (JMS / Кафка), что означает, что обработка может быть dalayed ... Я также думал о другом случае: у нас есть две услуг А и Б. как разоблачить API, которые могут быть доступны с помощью внешнего пользователя (маркера JWT авт), но они также должны асинхронно взаимодействовать (по ОМС). Они оба должны контекст идентичности пользователя. Опять же - как передать его? Я могу: передать JWT маркер вместе с сообщением очереди - это безопасно? что, если токенов истекает до целевой запуска службы обработки? преобразовывать информацию из маркеров JWT и передать его в качестве HTTP-заголовков - что, если целевая служба возвращает информацию - Мне нужно, чтобы восстановить контекст авторизации от этого ответа (она должна быть по-прежнему обрабатывается в контексте конкретного пользователя), но это заставляет меня работать с двумя типов авторизации : JWT и один вернулись из процесса асинхронного ... ...? все они имеют недостатки для меня, и я не могу найти универсальное решение ... --edit Рассмотрим случай: есть сервисный продукт каталог и заказ услуг. Как разоблачить общественное API. места пользователя заказ, он находится в очереди на обработку. Первый шаг заключается в проверке, если продукты в порядке и пользователь разрешил заказать их. Обработка может позвонить в каталоге продукции услугу, но должен передать контекст пользователя.
redguy
1

голосов
0

ответ
61

Просмотры

Интеграция fluentd с применением Java

Я работаю по интеграции приложения загрузки пружинной с fluentd. Когда я использую FluentdLogger в применении и источнике как вперед в fluentd конфигурационного файла, я могу войти записи в лог-файл. Так как обеспечить уровень журнала, чтобы войти statments в приложении загрузки яровой, по умолчанию каждое утверждение выводится в файл с тегом. Должен ли я использовать in_tail с рамками протоколирования, которые будут входить в систему в файл и fluentd будет хвост из этого файла в другой файл. Или есть способ или Appender в Logback или лесозаготовительной базы в Java.
Ramandeep S
1

голосов
2

ответ
135

Просмотры

Номер версии в поиске событий агрегата?

Я строю Microservices. Один из моих MicroService используют CQRS и поиск событий. Интеграционные события возникают в системе, и я храню свои агрегаты в хранилище событий также обновляю свою модель чтения. Мои вопросы, почему мы должны версии в совокупности, когда мы обновляем поток событий от этого агрегата? Я читал нам это нужно для согласованности и события должны быть воспроизведены в последовательности, и мы должны проверить версию перед сохранением (https://blog.leifbattermann.de/2017/04/21/12-things-you-should-know- о-событийные источники /) Я до сих пор не могу получить мою голову вокруг этого, так как события возникают и сохраняются в порядке, так что я действительно нужен конкретный пример, чтобы понять, какую пользу мы получаем от версии и почему мы даже нужны. Большое спасибо, Имран
Imran Arshad
1

голосов
0

ответ
77

Просмотры

Как подписаться на AWS Lambda для Salesforce платформы События

Мы хотим интегрировать Salesforce в OuT Структура Micro Service в AWS. Существует изделие для об этом здесь Таким образом, мы хотим, чтобы подписаться лямбда на определенные события платформы в отдела продаж. Но я не нашел примеров кода для этого. Я дал ему попробовать с помощью Node.js (без лямбды). Это прекрасно работает: вар jsforce = требуется ( 'jsforce'); вар имя пользователя = 'XXXXXXXX'; вар пароль = 'XXXXXXXXXXX'; вар Conn = новый jsforce.Connection ({loginUrl: 'https://test.salesforce.com'}); conn.login (имя пользователя, пароль, функция (эээ, USERINFO) {если (ERR) {возвращение console.error (ERR);} console.error ( 'Connected' + USERINFO); conn.streaming.topic ( "/ событие / Contact_Change__e ") подписаться (функция (сообщение) {console.dir (сообщение);}.);}); Но я не уверен, если это правильный способ сделать это в лямбда.
Marc Porst
1

голосов
0

ответ
26

Просмотры

Определение и дизайн Microservices

Как определить мои Microservices на основе следующих требований. У нас есть уже приложение, которое содержит Microservice, который заботится о создании «Члены». Сейчас мы пытаемся создать другой веб-приложение, которое имеет какое-то отношение с «членами». нам нужно создать еще один Microservice внутри нового приложения для создания «Члены» Do. Это не является правильным решением. Becuase в Microservice, принадлежащем к старому приложению является владельцем информации членов. И где изменения базы данных (создание и обновление члена) публикуются для всех других услуг. Новая Microserivce принадлежности к новому приложению имеет два требования: Если член уже существует, получает информацию членов из БДА членов, принадлежащего к старому приложению и сохраните его в новой базе данных с дополнительной информацией. Если член dosn't существует, то он должен быть создан и первым будут добавлены в базу данных членов, а затем добавить его в новую БД (Microserive) с дополнительной информацией. Что является лучшим решением для определения этих двух Microservices? Мы используем Message Broker и имеют Pub / SUB связь между Microservices.
user217648
1

голосов
0

ответ
45

Просмотры

Как разрешить HTTP 405 ошибки NotAllowedMethod

Я создал службу API .Net Ядро Rest с двумя методом GET. Локально в режиме отладки, все работает, как ожидалось. Когда я раскрываю эту услугу на службе Azure Kubernetes и позади управления API, при каждом вызове к этому методу два GET я получаю HTTP 405 ошибки. Я попытался с различными конечными точками, но ни один из случаев не удалось решить эту проблему. Любая идея?
dino
1

голосов
1

ответ
28

Просмотры

Как отключить / включить метрики микрометр работает microservice

Как отключить или включить некоторые из метрик микрометра без перезагрузки моего microservice? Я хочу, чтобы выставить конечную точку, чтобы изменить метрики мое приложение собирает.
lewis

Просмотр дополнительных вопросов