【发布时间】:2014-10-17 11:24:04
【问题描述】:
我正在开发具有大量集成任务的 Web 服务。我们将我们的服务与数十个其他服务连接起来,每个服务都有自己的持久存储。当然,我们有几个不同的环境用于开发、阶段和生产目的。每个集成服务至少有两个环境:dev 和 prod。我考虑了两种可靠地分离环境的方法:
第一个是使用 两个不同的 DB 用于开发和(阶段 + 产品)电路。这种方法允许每个域对象只有一个 ID 序列,因此在第三方服务中不会发生一次冲突。优点:简单。缺点:从舞台到产品数据库的危险访问。
第二个是使用三个不同的数据库并为用于集成的对象的主键保留范围(例如,用户pk、订单号等)。在这种情况下,我们将来自不稳定阶段 env 的访问限制为仅对阶段 DB 进行访问,并防止保留范围内的任何冲突。
但使用保留范围或 ID 的想法对我来说似乎很奇怪。有什么建议吗?
UPD:让我以另一种方式澄清我的情况。对于每个第三方服务生产环境,我都有两个环境:舞台和生产。因此,如果我的 prod 和 stage envs 有两个不同的数据库,而没有指定从我这边传输到第三方服务的对象 ID 的非相交范围,那么我的 stage 和第三方服务端的 prod 环境之间将会发生冲突。我应该将一个 DB 用于 stage 和 prod 环境还是引入 ID 范围?
【问题讨论】:
标签: database architecture integration primary-key