2015-02-09 48 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