我们如何在两个不同的服务之间共享数据

Posted

技术标签:

【中文标题】我们如何在两个不同的服务之间共享数据【英文标题】:How do we share data between two different services 【发布时间】:2009-10-28 02:30:24 【问题描述】:

我目前正在开发一个定期轮询的网络服务。它不存储其状态,每次查询时都会实例化。本质上,它检索其他外部实体的状态,例如数据库并将其返回给请求者。

最近出现了存储状态的需求

需要不断地从特定来源收集数据并存储重要/相关的位 需要在一段时间内收集特定数据源的聚合

我想出了以下想法:

我主要关心的是我使用静态类(本质上是全局类)在两个服务之间共享数据。有没有更好的方法来做到这一点?

编辑:感谢迄今为止的回复。为这个问题的模糊性道歉:只是试图找出在不同服务之间共享数据的最佳方式是什么,并且不确定具体细节(即需要什么)。我正在开发的平台是 .NET 框架,这两个服务都只是作为 Windows 服务托管的 WCF 服务。

数据库路由听起来像是最传统的方式 - 但是我现在不愿意走这条路(主要是为了部署/设置问题;它引入了创建新表等的需要,除了简单地安装软件),用于此时传输相对少量的数据。当然,这在未来可能会发生变化,并且走数据库路线可能是那时要走的路。

除了添加数据库持久层,还有其他方法吗?

【问题讨论】:

您是否使用任何特定的语言或框架? 【参考方案1】:

如果您需要收集和汇总数据,您可能需要考虑在两层之间使用数据库。还是我误会了什么?

您应该考虑通过更多要求来增强您的问题:几乎所有选项都在这里打开。

【讨论】:

【参考方案2】:

当然 - 数据绑定怎么样?我没有太多信息可以在这里继续 - 关于您的平台,但大多数足够先进的系统以某种形式提供它。

【讨论】:

【参考方案3】:

你可以用一些数据库表示来替换你的静态共享数据,在数据库和 web 服务之间有一个缓存层(如 memcached),这样大多数时候数据可以从缓存中快速获得,但可以检索根据需要从数据库中获取。

【讨论】:

【参考方案4】:

感谢您希望保持架构简单。根据您必须查找的项目的数量和持久性,您可能只考虑利用您的文件系统或消息队列。听起来您想要一个文件系统,因为这听起来对您的设计影响最小。

如果您开始处理数以万计的小文件,您的目录可能会难以导航并且文件查找速度会变慢。我通常会为每个目录拍摄大约 1000 - 10000 个文件,并编写一个可以根据文件名模式生成文件路径的例程。保持子目录的数量均匀很重要,一些文件系统在父目录中有一个limit on the number of subdirectories。

【讨论】:

以上是关于我们如何在两个不同的服务之间共享数据的主要内容,如果未能解决你的问题,请参考以下文章

如何在两个模块之间共享数据库模型?

如何在 django 服务器和 python websocket 服务器之间共享数据

如何在两个线程之间共享数据

我们如何在 Spring Batch 中 Job 的不同步骤之间共享数据?

不同App之间共享数据

我们如何在Spring Batch的作业的不同步骤之间共享数据?