当前位置 : 主页 > 大数据 > 区块链 >

SOA:跨多个服务连接数据

来源:互联网 收集:自由互联 发布时间:2021-06-22
想象一下,我们有2个服务:产品和订单。基于我对SOA的理解,我知道每个服务都可以拥有自己的数据存储(单独的数据库,或同一数据库中的一组表)。但是,不允许任何服务直接触及另
想象一下,我们有2个服务:产品和订单。基于我对SOA的理解,我知道每个服务都可以拥有自己的数据存储(单独的数据库,或同一数据库中的一组表)。但是,不允许任何服务直接触及另一个服务的数据存储。

现在,想像我们已经在产品和订单服务中独立存储产品和订单数据。在订单服务中,我们可以通过其身份识别产品。

我的问题是:使用这种架构,如何在“同一”页面上显示订单列表和产品详细信息?

我的理解是,我应该从OrderService获取OrderItem的列表。每个OrderItem都有一个ProductID。现在,如果单独调用ProductService来检索每个产品的详细信息,那将是非常低效的。

你会如何处理这个问题?

干杯,
MOSH

我做了一些研究,发现了两种不同的解决方案。

1-服务可以在本地缓存其他服务的数据。但是这需要一个pub / sub机制,所以应该发布数据源的任何更改,以便订阅服务可以更新其本地缓存。这是实现成本高的,但是是最快的解决方案,因为服务在本地具有所需的数据。它还通过防止服务依赖于其他服务的数据来增加服务的可用性。换句话说,如果其他服务不可用,它仍然可以通过其缓存数据来完成其工作。

或者,服务可以通过提供标识符列表来查询来自另一服务的对象的“列表”。这样可以防止对目标服务进行单独调用,以获取给定对象的详细信息。这更容易实现,但性能方面并不如解决方案1那么快。另外,如果目标服务不可用,则源服务无法完成其任务。

希望这能帮助遇到这个问题的其他人。

MOSH

网友评论