博客 / 詳情

返回

企業管理中用户數據同步機制解決思路

背景

組織人員信息管理服務是許多系統中不可缺少的核心模塊,裏面裝載着許多重要的敏感信息。當前許多企業在實際生產過程中,使用着多種系統軟件,例如 OA、CRM、財務、郵件系統等等,這些系統都有着自己獨立的一套組織管理模塊。隨之出現了一系列問題:

  • 管理成本高:一個人或多個人管理多個系統,人力成本高,工作效率低。
  • 易出現管理問題或風險:例如,公司規定各系統錄入一致的賬户,而人為錄入中極可能出現失誤,導致通知給員工的是一個賬户,實際錄入的是有誤的賬户。某個系統沒有及時關閉離職人員賬户,導致離職人員依舊可以訪問,可能損失重要信息。
  • 用户登錄體驗差效率低:一個員工拿着一個賬户卻要記不同系統的密碼,甚至是多個不同賬户登錄系統還要來回切換。

此時,一套有效的用户數據同步機制即可解決以上問題。它可以幫助企業統一管理組織信息,實現一次操作而使多系統及時響應,一次登錄便能同時管理其管轄下的任何系統。那麼如何才能達成數據同步呢?

同步前提

要達到同步,首先得有一個集中化管理用户信息的服務(以下簡稱組織中心),這個服務通過收集其它系統的組織人員信息,形成“完整”的組織信息,然後根據配置的策略向需要被同步的系統(統稱第三方系統)下發信息,以達到信息同步的效果。當然這裏面第三方系統需要提供接口、協議或者可操作的數據庫。除此之外或許還會涉及一些系統改造的工作,因為並不是所有的系統都提供暴露增刪改查的接口。

常見的同步難點及解決思路

  1. 第三方系統沒有提供增刪改查接口:一些私有化部署的系統可能不會暴露接口,那麼就要考慮是否可以直接操作其數據庫。
  2. 數據庫、相關接口均無:如果數據庫也不能知曉,那麼可考慮其是否支持 SSO 單點登錄協議,一些 SSO 單點協議支持如果登錄時信息不存在,則設為新增人員的機制。
  3. 數據庫、接口、協議均不支持:找供應商協商改造。

系統問題點及解決思路

  1. 不同系統提供的獲取人員信息的方式不同。有回調模式、提供接口查詢模式、提供 sdk 獲取模式。這些需要組織中心提供延伸服務(以下統稱清洗服務)的預置開發,儘可能做到常見模式兼容,將這些獲取的第三方數據通過清洗服務進行收集,再調用組織中心接口進行插入或修改。
  2. 不同系統的字段不同。這裏需要先為清洗服務做映射字段配置,清洗服務根據映射配置,將第三方數據清洗為組織中心可用的數據格式,未來如果接口或者字段變動,則需要人工來修改接口或者映射關係。
  3. 不同系統的 ID 類型。有的系統 ID 是數字,有的系統 ID 是字符串,多租户的模式下,還極有可能碰撞到相同的 ID。因此,第三方數據在提交時,都會按照組織中心自己的規則生成唯一字符 ID 及對應的數字 ID,保留記錄第三方 ID,並被統一轉換成字符類型。
  4. 不同系統組織目錄的根節點未知性。此時需要管理員在同步前設置根節點 ID。

事務性問題

事務管理必須在同步過程中進行,否則可能會因為一些因素導致僅部分同步成功。例如,人員與組織目錄關聯異常。

  1. 如果有組織目錄,則優先完成組織目錄的同步。
  2. 組織目錄和人員目錄在進行插入或者修改前,需進行校驗。例如校驗是否重複,手機郵箱是否正確等。如果出現異常的歸屬與失敗隊列,那麼需要讓正常數據進入新增隊列或者修改隊列。
  3. 新增或修改過程中如果出現異常(例如唯一鍵衝突),則要進入失敗隊列。
  4. 最後執行事務提交,返回失敗的數據。由清洗服務記錄失敗數據。

假如上面的問題都順利解決了,就可以開始考慮同步了。那麼問題又來了,如果第三方數據量十分龐大又該如何收集呢?下面我們來講同步方案及策略。

同步方案及策略

同步方案

全量同步

一次性下發第三方所有組織人員信息進行清洗同步。當第三方系統的組織信息量不是很大的時候可以考慮全量同步。缺點是消耗資源較大。

增量同步

如果第三方的數據量龐大且複雜,倘若機器性能夠好,也許可以順利完成同步。但這樣需要的硬件成本將會極高,大部分企業也不會採納這種方案,因此就出現了增量同步方案。增量同步是將變化的信息進行同步。具體方案如下:

  • 回調同步。每次修改了信息都會將變動後的信息同步至第三方或者組織中心,收到信息的一方自我比對然後進行修改。(此種方式一般涉及改造問題)
  • 變動記錄。假設管理者修改了組織中心的組織目錄信息,組織中心會將被修改的信息與涉及的相關信息記錄下來。當第三方來獲取增量同步或者根據策略下發增量信息時,會把記錄變動的信息發出去,第三方根據變動信息進行處理。(這裏的變動也包含刪除,這裏刪除不會真刪除只是標記為刪除)
  • 特殊的增量。分頁獲取信息,有最大頁數限制,頻次限制。
  • SSO 單點,從身份認證源獲取信息同步。這裏有個弊端就是獲取的信息一般不全,且組織目錄也不一定能獲取。
  • 如果多次修改同一條數據,這裏會以時間作為版本進行管理,第三方需要多次拉取變動記錄進行更新。

同步策略

主動同步

組織中心主動將數據下發,分為:

  • 人工手動同步
  • 定時全量/增量同步
  • 變動增量同步
被動同步

第三方主動通過接口拉取全量或者增量數據。小細節:拉取時可選擇更新舊數據,也可選擇只同步組織目錄或者人員信息。

總結

組織服務只提供相關的查詢接口與批量新增修改接口,新增修改時對失敗數據進行返回,具體的數據清洗轉化則由清洗服務實際控制。組織中心結合清洗服務可以做到雙向同步,既可以收集其它系統的組織信息,也可以把收集完善後的數據下發給第三方系統。但也可能與某些系統結合成環,因此如果一個企業有多個組織源,建議採用其中一個作為上游源,以組織中心作為中間同步件,避免成環。

組織中心結合其它協議及安全策略後,可成為唯一身份認證源中心。其它系統在一定條件下就可以通過這個身份認證中心,達到員工一次登錄即可多系統登錄的效果,解放 IT 管理員的雙手,提高了工作效率的同時也提升了系統的安全性。

公眾號:全象雲低代碼
GitHub:https://github.com/quanxiang-...

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.