2015-02-09 42 views
1

我们正在运行到臭名昭著的1000+子节点问题在JCR的用户,我们试图提供一个解决方案没有移动到SSO或LDAP解决方案,客户没有足够的预算对这样的解决方案。在AEM 5.6.1中使用带UserManager的BTreeManager进行用户管理?

鉴于BTreeManager提供的文档很少,我想知道是否有一种方法可以实现BTreeManager UserManager来处理帐户创建和登录,或者我们将不得不创建自己的UserManager类来处理帐户创建一个BTreeManager实现?

回答

1

我不建议你无论如何要实现自己的UserManager,因为它完全过冲的标志。 UserManager使您可以使用现有的中间路径,例如可以是由一些自定义算法或BTreeManager创建。

我对这种方法有很好的体会,在一个拥有大约11万用户(仍在增长)的AEM环境中。在这种情况下,我们使用的用户名,从而生成中间路径:如果您希望充分利用BTreeManager照顾平衡usertree的话,最好在使用定制的“AccountCreationService”封装您的自定义功能

/home/users/project-prefix/[first-char][second-char]/[third-char][fourth-char]/[username] 

BTreeManager为每个用户创建一个中间路径,并将Authorizable的实际创建委托给UserManager。

+0

所以这是可能的,但是有没有一个如何使用BTreeManager的例子? 我们甚至没有考虑建立我们自己的UserManager - 只是问我们是否需要。 反对我的判断,我们最初的做法是与你相似,但只去了两个字符深 -/[第一字符]/[第二字符]/[usernode。这可怕地发生了。我创建了一个新的中间路径,包含创建帐户时的时间戳MD5散列的2个字符的子字符串集。例如:/ home/users/project/e2/81/ca /​​ 5c/b7/[usernode]。 – ImKevinJones 2015-02-19 20:53:34

+1

恐怕我还没有看到任何关于如何在网络中使用BTreeManager的例子,除了API文档。但它并没有说明初始化的成本。我可能会建立一个服务来保存内存中的树,但是您必须考虑将更改事件并入您的服务中。 更好的路径方法。我使用了3个字符的分段用于我提到的用例,用户数为10万,并且工作得非常好。但是,我们在决定是否使用2或3个字符之前评估了这些段中的用户分布。 – Thomas 2015-02-20 10:23:43