Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Microservices 当使用关系获取所有资源时,如何显示来自另一个微服务的关系_Microservices - Fatal编程技术网

Microservices 当使用关系获取所有资源时,如何显示来自另一个微服务的关系

Microservices 当使用关系获取所有资源时,如何显示来自另一个微服务的关系,microservices,Microservices,我只想在我的电子商务项目中实现微服务。如果我有两个微服务,即产品微服务和事务微服务,在单独的项目、数据库和服务器中。db的设计是这样的: products table: id name code price ... transactions table: id product_id qty price ... 问题是:如何制作与产品相关的“获取所有事务”API?因为产品在另一个项目&db?我是否应该获取所有事务、循环并调用get Product detail,然后逐个将产品密钥设置为产品对象

我只想在我的电子商务项目中实现微服务。如果我有两个微服务,即产品微服务和事务微服务,在单独的项目、数据库和服务器中。db的设计是这样的:

products table:
id
name
code
price
...

transactions table:
id
product_id
qty
price
...
问题是:如何制作与产品相关的“获取所有事务”API?因为产品在另一个项目&db?我是否应该获取所有事务、循环并调用get Product detail,然后逐个将产品密钥设置为产品对象?或者有没有最好的解决办法?谢谢

我想返回类似这样的内容,因为我希望这个API返回产品关系,以便在事务列表前端显示产品

{
  "transactions": [
    {
      "id": 1,
      "product": {
        "id": 1,
        "name": "Bottle",
        "code": "B1",
        "price": 50000
      },
      "qty": 1,
      "price": 50000
    }, {
      "id": 2,
      "product": {
        "id": 2,
        "name": "Cable",
        "code": "C1",
        "price": 20000
      },
      "qty": 1,
      "price": 20000
    } 
  ]
}

在进行面向服务时,最难理解的一点是,隔离和自治的好处是要付出代价的。这一成本就是数据重复。在microservices体系结构中,避免数据重复是极其困难的

然而,数据重复并不总是坏事。事实上,您可能会认为数据复制是一个重要的促成因素。将数据复制视为好的而不是坏的做法违背了常识和传统的软件培训,但是,要想在微服务方面取得成功,您需要适应这种心态

在上面的模型中,如果您希望显示带有某些产品数据的交易,则需要将该产品数据存储在与交易相同的数据库中,即交易服务数据库中

为了回答不可避免的问题“产品数据是如何到达那里的?”——有必要在以前的某个时间添加产品数据,最好是在产品首次创建时添加

如果我想更新产品,我应该在交易中更改它吗 还有服务吗

是的,这是正确的,但前提是您关心更改(从事务的角度)。如果在交易中您不关心产品的某些更改,则不要更新

我们如何知道需要更换的零件是否有重复数据


这取决于您查看事务的要求。要点是:一旦您复制了您的产品,它实际上与产品服务中的实体不同,尽管它将共享一个标识符。因此,您可以在事务服务中改进产品模型,而不用担心产品服务中的产品模型

太好了!我只知道:)但是如果我想更新产品,我是否也应该在交易服务上更改它?以及我们如何知道哪个部分需要重复数据/没有重复数据?:)@JimmyJS请在回答中看到我的回答。