SOA:跨多个服务连接数据

2024-02-11

假设我们有 2 项服务:产品和订单。根据我对SOA的理解,我知道每个服务都可以有自己的数据存储(一个单独的数据库,或者同一数据库中的一组表)。但任何服务都不允许直接接触另一个服务的数据存储。

现在,假设我们已将产品和订单数据独立存储在产品和订单服务中。在订单服务中,我们可以通过产品 ID 来识别产品。

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

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

您将如何解决这个问题?

干杯, 莫什


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

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

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

希望这对遇到此问题的其他人有所帮助。

Mosh

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SOA:跨多个服务连接数据 的相关文章

  • PRIME ng 确认服务的 Angular 单元测试

    首先 我是角度单元测试的新手 我想对以下从数据中删除记录的方法进行单元测试 方法是 Confirm Button for deletion confirm name string id any this confirmationServic
  • CreateProcessAsUser 和 LogonUser 无密码

    使用 WTSGetActiveConsoleSessionId 和 WTSQueryUserToken 我知道作为 SYSTEM 运行的服务可以在当前桌面上启动应用程序 http blog dcuktec com 2009 05 pytho
  • Android:从服务中关闭屏幕

    我正在尝试找出如何从服务中关闭屏幕 我已经读过this https stackoverflow com questions 1875669 calling hidden api in android to turn screen off但我
  • 在 Play 应用程序中启动时调用服务

    我有一个 Play 2 4 应用程序 尝试在应用程序启动时启动每周任务 当前的建议是在急切注入的类的构造函数中执行此操作 Guice 但是 我的任务需要访问服务 如何将该服务注入到我的任务中而不出现错误 Error injecting co
  • Angular 服务测试出了什么问题?

    我有一个调用外部网络服务的服务 angular module myApp services service autoCmpltDataSvc function http var innerMatch function data return
  • 在 Android 中检测传入电子邮件通知

    android 中有传入电子邮件时我们可以检测到通知吗 有什么解决方案 教程或示例代码我可以尝试吗 Thanks 尝试实现NotificationListenerService 这是官方文档https developer android c
  • Windows服务之间如何通信

    我有 2 个使用 C 创建的 Windows 服务 我希望其中一个服务调用第二个 Windows 服务中的函数 我该怎么做呢 EDIT 问题是我必须运行该应用程序 我不需要它们 相反服务进程也很好 但我need这2个应用程序进行通信 这2个
  • Android 前台服务在 MI 4 设备(版本 5.0.2)上被终止

    我知道这个问题被问了很多次 但我没有找到任何解决方案来保持服务 即使我的应用程序被杀死 我的应用程序在所有设备上运行 但是一些设备如果我杀死该应用程序 那么我的服务也会被杀死 设备名称 MI 4 版本和 asus 5 0 3 以下是我启动前
  • Windows 7下PostgreSQL pg_ctl注册错误

    在 Windows 7 PostgreSQL 9 3 2 下 我尝试使用不同的端口号和数据目录将同一服务器上的第二个 PostgreSQL 实例注册为服务 使用 initdb 命令在 C Program Files PostgreSQL 9
  • Angular2 - 多个依赖的顺序 http api 调用

    我正在构建一个 Angular2 应用程序 其中一个组件需要进行多个 API 调用 这些调用依赖于之前的调用 我目前有一项服务可以调用 API 来获取电视节目列表 对于每个节目 我需要多次调用不同的 API 来逐步检查该结构 以确定该节目是
  • AngularJS 服务 http 成功函数使用错误的“this”范围

    a 的成功函数 http put无权访问this内部调用的服务的范围 我需要在 PUT 请求的回调中更新服务的属性 这是我在服务中尝试做的事情的简化示例 var myApp angular module myApp function rou
  • 如何从与桌面交互的应用程序与 Windows 服务进行通信?

    使用 Net 与服务交互的最佳方式是什么 即大多数托盘应用程序如何与其服务器通信 如果这个方法也是跨平台的 那就更好了 在 Mono 中工作 所以我猜远程处理已经过时了 Edit 忘了说了 我们仍然需要在现场支持 Windows 2000
  • 多个Android IntentService可以同时运行吗?

    据我了解 一个IntentService一次只能处理一个 Intent 因为它共享一个工作线程来完成所有工作 但如果我有多个IntentService在我的应用程序中 它们可以并行运行 还是都共享单个工作线程 但是如果我的应用程序中有多个
  • 如何使用Android读取Service中的加速度计数据

    通常 在 Android 中 我们通过重写 OnSensorChanged 函数来读取 Activity 中的加速度计数据 我很好奇我们如何在 服务 中做到这一点 谢谢 文森特 实际上OnSensorChanged SensorEvent
  • 如何在视图中调用 Grails 服务?

    简单的问题 我有一个服务类 比方说helpersService 和一个方法def constructURI params 如何从模板视图调用此方法 我尝试了以下代码但没有成功 img src 但我得到以下结果 No signature of
  • 尝试从 C# 服务查询 IIS 时出现异常

    我从使用 C 编写的 Windows 服务调用以下代码 try ServerManager m new ServerManager if m null SiteCollection sites m Sites I get exception
  • 面向服务的架构通信标准

    我过去致力于构建使用面向服务的架构构建的数据处理应用程序 我有一系列服务 这些服务全部由主服务管理 该主服务将串行调用所有服务来处理我的数据 我遇到了一些我不喜欢的事情 因为服务必须向主服务提供状态和错误反馈 而我必须从头开始编写所有代码
  • 无法从 Windows 7 上的 Windows 服务启动桌面应用程序

    HI 我在 Windows 7 上有 C WCF Windows 服务 以具有管理员权限的用户身份登录 我正在尝试在服务启动后启动桌面应用程序 我发现的所有讨论都是关于 Windows 工作站和桌面 我创建了一个单独的线程 设置线程工作站和
  • 服务作为 SOA 中的中介

    我知道什么是 通常的 中介设计模式 维基百科中有一些描述 http en wikipedia org wiki Mediator pattern http en wikipedia org wiki Mediator pattern 在我的
  • 面向服务的架构 - AMQP 或 HTTP

    一点背景 非常大的整体 Django 应用程序 所有组件都使用相同的数据库 我们需要分离服务 以便我们可以独立升级系统的某些部分而不影响其余部分 我们使用 RabbitMQ 作为 Celery 的代理 现在我们有两个选择 使用 REST 接

随机推荐