Иногда простая задача кажется более сложной. Это то, с чем я сталкиваюсь сейчас.
Я занимаюсь разработкой API электронной коммерции. Приложение имеет микросервисную архитектуру. Итак, Order
, Product
, Payment
и Auth
- это разные микроуслуги. У каждого своя база данных.
Эти микроуслуги общаются друг с другом через http restful apis
. Поэтому, если пользователь размещает заказ, он обращается к микросервису оплаты, чтобы получить сгенерированную контрольную сумму, чтобы он мог произвести оплату. Платежный микросервис обращается к Order
для размещения заказа.
Заказ микросервис размещает заказ и возвращает детали к оплате. Нет проблем.
Но после размещения заказа количество товара должно быть уменьшено. У меня нет API для уменьшения количества продукта. Я не хочу иметь его.
Потому что, продукт может быть изменен только его поставщиком. Поставщик, действительно, может изменить свой продукт, но для этого он передает свой jwt
.
Если я создаю API для изменения количества продукта, любой может нажать на API и уменьшить количество.
Таким образом, одним из решений может быть API, который доступен только для микросервисов.
Как узнать, что вызов поступает от микросервиса?
Должен ли я создать hash
и передать это во время взаимодействия с другим микросервисом?
Docker -compose.yml
version: '3'
services:
users:
build: './users'
ports:
- '4001:3000'
volumes:
- './users:/src/'
products:
build: './products'
ports:
- '4002:3000'
volumes:
- './products:/src/'
orders:
build: './orders'
ports:
- '4003:3000'
volumes:
- './orders:/src/'
payments:
build: './payments'
ports:
- '4004:3000'
volumes:
- './payments:/src/'
Dockerfile
#User node js official image as a parent image
FROM node
ADD package.json /tmp/package.json
RUN cd /tmp && npm install
RUN mkdir -p /src && cp -a /tmp/node_modules /src/
COPY . /src
WORKDIR /src
RUN npm install
EXPOSE 3000
CMD npm start