2017-04-26 39 views
0

我们有一个天蓝色的网络应用程序&我们希望在全球范围内复制的分贝。天蓝色如何处理引擎盖下的地理复制

因此,我们使用流量管理器将用户重定向到最近的托管Web应用程序,并在Web应用程序中设置位置,它知道它应该违反哪个数据库。

现在,我的问题是,作为模式是一个数据库可写(主)和副本只能读取,我或azure如何处理在调用数据库时?

例如,如果从我的应用程序我要添加一条记录到数据库,我不能使用最近的数据库连接字符串,我需要去反对主要的一个。

我应该如何处理?或者即使它的只读天蓝色将处理将其转移到主分区的写入,我也将始终对最近的分区进行分区?

如果我是应该管理的那个,那么我应该处理2个连接字符串,一个用于主数据库可写,另一个用于最接近可读的数据库,我应该拆分我的服务,按写/阅读操作

并且在此方案之后,如果我有一个存储过程,其中包含WIRTES AND READS,那么我将如何处理?

+0

不确定,确切地说,你在问什么。流量管理器不处理数据库。你的应用程序将处理数据库连接。不知道你指的是什么,将数据库句柄重定向到主数据库。而且:你指的是哪个数据库?有SQL数据库和DocumentDB作为托管的PaaS数据库服务。请相应地编辑您的问题以更具体。 –

回答

0

这是在地理复制模式下使用Azure SQL时的常见问题。您不能使用传统的LB技术,例如Azure流量管理器。在这种情况下,您应该在数据库连接上使用retry模式,根据需要从主数据库下载到备用名称。

AFAIK,在连接到数据库之后,如果您处于主服务器或只读服务器上,没有简单的方法可以告诉您。根据this link,您可以调用一些存储过程来了解拓扑。您可以使用Azure PS/API理解这一点,但是您必须将该逻辑构建到您的应用程序中。

简而言之:

  1. 您需要处理您的数据库连接,并采用重试 模式等
  2. 你应该实现CQRS到单独的读/写工作负载从 对方如果你想利用只读辅助

希望有所帮助。