0

我们有一个 azure web 应用程序和一个我们想要在世界各地复制的数据库。

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

现在,我的问题是,由于模式是 One database Writeable (Primary) 并且副本是只读的,我或 azure 在调用数据库时如何处理?

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

我应该处理这个吗?或者我会一直反对最近的,即使它是只读的,天蓝色会处理将其传输到主数据库的写入?

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

在这种情况下,如果我有一个写入和读取的存储过程,我将如何处理?

4

1 回答 1

0

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

AFAIK,在连接到数据库后,没有简单的方法可以判断您是在主数据库还是只读辅助数据库上。根据此链接,您可以调用一些存储的过程来了解拓扑。您可以使用 Azure PS/API 来理​​解这一点,但是您必须将该逻辑构建到您的应用程序中。

简而言之:

  1. 您需要处理数据库连接并使用重试模式等
  2. 如果您想利用只读辅助节点,您应该实施CQRS以将读/写工作负载相互分离

希望有帮助。

于 2017-04-26T17:45:33.487 回答