【发布时间】:2020-05-10 09:57:27
【问题描述】:
有时简单的任务似乎更复杂。这就是我现在所面临的。
我正在开发电子商务 API。该应用程序具有基于微服务的架构。所以,Order、Product、Payment 和 Auth 这些是不同的微服务。每个都有自己的数据库。
这些微服务通过http restful apis 相互通信。因此,如果用户下订单,它会与支付微服务通信以获取生成的校验和,以便他可以进行支付。支付微服务与Order 交谈以下订单。
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
【问题讨论】:
标签: node.js docker docker-compose microservices