我正在开发一个应用程序,需要对从域控制器 (DC) 获取的用户执行一些操作。这些操作包括启用用户然后为他们设置属性。对于用户来说,启用和应用属性是一个原子操作。
我面临的问题是 DC 复制大约需要 15 秒才能复制到站点中的所有 DC。由于这种延迟,我后来的请求有时会到达数据尚未同步的 DC,从而导致用户尚未启用的错误。
例如,假设我有一个名为“John Doe”的用户,该用户当前已被禁用。我执行以下步骤:
如何处理这种复制延迟以确保我的请求不会失败?
我正在考虑的方法是:
显式选择特定的域控制器 - 不是通过第三方负载均衡器(从您的描述来看,它似乎只用于处理读取,而不是写入),而是通过 DNS SRV 记录获取 DC 列表并选择一个用于操作的持续时间,这是 Windows 本身通常会执行的操作。
对所有更改重新使用单个 LDAP 连接(通过单个 TCP 连接,隐式绑定到特定 DC)。特别是如果所有这些更改都是“立即”完成,您的代码就没有理由在每次操作之间断开连接并重新连接到 LDAP。