我有一个通过Spring-LDAP连接到Active Directory的服务。当进行调用以创建新用户,然后单独调用以立即搜索该用户时,搜索有时会发生无对象发现错误。
这似乎与复制有关,因为相同的搜索只会在片刻之后发挥作用。请注意,这些是两个单独的请求,因此无法保证从池中使用相同的物理连接。
我有什么选择来解决这个问题?如果AD无法找到对象的本地副本,那么AD是否足够智能查询其他服务器?
答案 0 :(得分:1)
LDAP客户端永远不应该添加或修改条目,然后立即读取添加或修改的条目,因为复制的最终一致性模型(以及谁知道Active Directory的作用)。正确的过程是将post read request control添加到添加或修改请求中。有关详细信息,请参阅LDAP: Programming Practices。
答案 1 :(得分:0)
正如上面所评论的那样,复制延迟对于假设写入 - 读 - 读一致性类型的保证的应用程序是有问题的。 通常人们会通过以下几种方式来解决这个问题: 0)提高复制速度。这是你“可调”的。虽然它永远不会达到0,但你可以使它达到订单秒。 1)更改应用程序以在确定性DC上执行写入,然后从同一位置执行读取操作。您将在同一DC上获得写入 - 读取一致性,这是有问题的x-DC读取。 2)将应用程序更改为完全不执行此操作。 :)
显然你也可以使用策略组合......