企业管理中用户数据同步机制解决思路
背景
组织人员信息管理服务是许多系统中不可缺少的核心模块,里面装载着许多重要的敏感信息。当前许多企业在实际生产过程中,使用着多种系统软件,例如 OA、CRM、财务、邮件系统等等,这些系统都有着自己独立的一套组织管理模块。随之出现了一系列问题:
管理成本高:一个人或多个人管理多个系统,人力成本高,工作效率低。
易出现管理问题或风险:例如,公司规定各系统录入一致的账户,而人为录入中极可能出现失误,导致通知给员工的是一个账户,实际录入的是有误的账户。某个系统没有及时关闭离职人员账户,导致离职人员依旧可以访问,可能损失重要信息。
用户登录体验差效率低:一个员工拿着一个账户却要记不同系统的密码,甚至是多个不同账户登录系统还要来回切换。
此时,一套有效的用户数据同步机制即可解决以上问题。它可以帮助企业统一管理组织信息,实现一次操作而使多系统及时响应,一次登录便能同时管理其管辖下的任何系统。那么如何才能达成数据同步呢?
同步前提
要达到同步,首先得有一个集中化管理用户信息的服务(以下简称组织中心),这个服务通过收集其它系统的组织人员信息,形成“完整”的组织信息,然后根据配置的策略向需要被同步的系统(统称第三方系统)下发信息,以达到信息同步的效果。当然这里面第三方系统需要提供接口、协议或者可操作的数据库。除此之外或许还会涉及一些系统改造的工作,因为并不是所有的系统都提供暴露增删改查的接口。
常见的同步难点及解决思路
第三方系统没有提供增删改查接口:一些私有化部署的系统可能不会暴露接口,那么就要考虑是否可以直接操作其数据库。
数据库、相关接口均无:如果数据库也不能知晓,那么可考虑其是否支持 SSO 单点登录协议,一些 SSO 单点协议支持如果登录时信息不存在,则设为新增人员的机制。
数据库、接口、协议均不支持:找供应商协商改造。
系统问题点及解决思路
不同系统提供的获取人员信息的方式不同。有回调模式、提供接口查询模式、提供 sdk 获取模式。这些需要组织中心提供延伸服务(以下统称清洗服务)的预置开发,尽可能做到常见模式兼容,将这些获取的第三方数据通过清洗服务进行收集,再调用组织中心接口进行插入或修改。
不同系统的字段不同。这里需要先为清洗服务做映射字段配置,清洗服务根据映射配置,将第三方数据清洗为组织中心可用的数据格式,未来如果接口或者字段变动,则需要人工来修改接口或者映射关系。
不同系统的 ID 类型。有的系统 ID 是数字,有的系统 ID 是字符串,多租户的模式下,还极有可能碰撞到相同的 ID。因此,第三方数据在提交时,都会按照组织中心自己的规则生成唯一字符 ID 及对应的数字 ID,保留记录第三方 ID,并被统一转换成字符类型。
不同系统组织目录的根节点未知性。此时需要管理员在同步前设置根节点 ID。
事务性问题
事务管理必须在同步过程中进行,否则可能会因为一些因素导致仅部分同步成功。例如,人员与组织目录关联异常。
如果有组织目录,则优先完成组织目录的同步。
组织目录和人员目录在进行插入或者修改前,需进行校验。例如校验是否重复,手机邮箱是否正确等。如果出现异常的归属与失败队列,那么需要让正常数据进入新增队列或者修改队列。
新增或修改过程中如果出现异常(例如唯一键冲突),则要进入失败队列。
最后执行事务提交,返回失败的数据。由清洗服务记录失败数据。
假如上面的问题都顺利解决了,就可以开始考虑同步了。那么问题又来了,如果第三方数据量十分庞大又该如何收集呢?下面我们来讲同步方案及策略。
同步方案及策略
同步方案
全量同步
一次性下发第三方所有组织人员信息进行清洗同步。当第三方系统的组织信息量不是很大的时候可以考虑全量同步。缺点是消耗资源较大。
增量同步
如果第三方的数据量庞大且复杂,倘若机器性能够好,也许可以顺利完成同步。但这样需要的硬件成本将会极高,大部分企业也不会采纳这种方案,因此就出现了增量同步方案。增量同步是将变化的信息进行同步。具体方案如下:
回调同步。每次修改了信息都会将变动后的信息同步至第三方或者组织中心,收到信息的一方自我比对然后进行修改。(此种方式一般涉及改造问题)
变动记录。假设管理者修改了组织中心的组织目录信息,组织中心会将被修改的信息与涉及的相关信息记录下来。当第三方来获取增量同步或者根据策略下发增量信息时,会把记录变动的信息发出去,第三方根据变动信息进行处理。(这里的变动也包含删除,这里删除不会真删除只是标记为删除)
特殊的增量。分页获取信息,有最大页数限制,频次限制。
SSO 单点,从身份认证源获取信息同步。这里有个弊端就是获取的信息一般不全,且组织目录也不一定能获取。
如果多次修改同一条数据,这里会以时间作为版本进行管理,第三方需要多次拉取变动记录进行更新。
同步策略
主动同步
组织中心主动将数据下发,分为:
人工手动同步
定时全量/增量同步
变动增量同步
被动同步
第三方主动通过接口拉取全量或者增量数据。小细节:拉取时可选择更新旧数据,也可选择只同步组织目录或者人员信息。
总结
组织服务只提供相关的查询接口与批量新增修改接口,新增修改时对失败数据进行返回,具体的数据清洗转化则由清洗服务实际控制。组织中心结合清洗服务可以做到双向同步,既可以收集其它系统的组织信息,也可以把收集完善后的数据下发给第三方系统。但也可能与某些系统结合成环,因此如果一个企业有多个组织源,建议采用其中一个作为上游源,以组织中心作为中间同步件,避免成环。
组织中心结合其它协议及安全策略后,可成为唯一身份认证源中心。其它系统在一定条件下就可以通过这个身份认证中心,达到员工一次登录即可多系统登录的效果,解放 IT 管理员的双手,提高了工作效率的同时也提升了系统的安全性。
版权声明: 本文为 InfoQ 作者【全象云低代码】的原创文章。
原文链接:【http://xie.infoq.cn/article/0ffb8fa1050fd0304cb79619c】。文章转载请联系作者。
评论