如何基于日志,同步实现数据的一致性和实时抽取?(5)
具体思路是:
A:不存在的数据,即这部分数据insert就可以; B:存在的数据,比较_ums_id_,最终只将哪些_ums_id_更新较大row到目标数据库,小的直接抛弃. 使用Spark的同学都知道,RDD/dataset都是可以partition的,可以使用多个worker并进行操作以提高效率. 在考虑并发情况下,插入和更新都可能出现失败,那么还有考虑失败后的策略. 比如:因为别的worker已经插入,那么因为唯一性约束插入失败,那么需要改为更新,还要比较_ums_id_看是否能够更新. 对于无法插入其他情况(比如目标系统有问题),Wormhole还有重试机制.说起来细节特别多.这里就不多介绍了. 有些还在开发中. 插入到其他存储中的就不多介绍了,总的原则是:根据各自存储自身特性,设计基于集合的,并发的插入数据实现.这些都是Wormhole为了性能而做的努力,使用Wormhole的用户不必关心 . 五、运用案例实时营销 说了那么多,DWS有什么实际运用呢?下面我来介绍某系统使用DWS实现了的实时营销. 如上图所示: 系统A的数据都保存到自己的数据库中,我们知道,宜信提供很多金融服务,其中包括借款,而借款过程中很重要的就是信用审核. 借款人需要提供证明具有信用价值的信息,比如央行征信报告,是具有最强信用数据的数据. 而银行流水,网购流水也是具有较强的信用属性的数据. 借款人通过Web或手机APP在系统A中填写信用信息时,可能会某些原因无法继续,虽然可能这个借款人是一个优质潜在客户,但以前由于无法或很久才能知道这个信息,所以实际上这样的客户是流失了. 应用了DWS以后,借款人已经填写的信息已经记录到数据库中,并通过DWS实时的进行抽取、计算和落地到目标库中.根据对客户的打分,评价出优质客户.然后立刻将这个客户的信息输出到客服系统中. 客服人员在很短的时间(几分钟以内)就通过打电话的方式联系上这个借款人(潜客),进行客户关怀,将这个潜客转换为真正的客户.我们知道借款是有时效性的,如果时间太久就没有价值了. 如果没有实时抽取/计算/落库的能力,那么这一切都无法实现. 实时报表系统 另外一个实时报表的应用如下: 我们数据使用方的数据来自多个系统,以前是通过T+1的方式获得报表信息,然后指导第二天的运营,这样时效性很差. 通过DWS,将数据从多个系统中实时抽取,计算和落地,并提供报表展示,使得运营可以及时作出部署和调整,快速应对. 六、总结 说了那么多,大致总结一下:
适合场景包括:实时同步/实时计算/实时监控/实时报表/实时分析/实时洞察/实时管理/实时运营/实时决策 感谢大家的聆听,此次分享到此为止. Q1:Oracle log reader有开源方案吗? A1:对于Oracle业界也有许多商业解决方案,例如:Oracle GoldenGate(原来的goldengate),Oracle Xstream,IBM InfoSphere Change Data Capture(原来的DataMirror),Dell SharePlex (原来的Quest),国内的DSG superSync等,开源的方案好用的很少. Q2:这个项目投入了多少人力物力?感觉有点复杂. Q2:DWS是三个子项目组成,平均每个项目5~7人.是有点复杂,其实也是试图使用大数据技术来解决我们公司目前遇到的困难. 因为是搞大数据相关技术,所有团队里面的兄弟姐妹都还是比较happy的:) 其实这里面,Dbus和Wormhole相对固定模式化,容易轻松复用.Swifts实时计算是与每个业务相关比较大的,自定义比较强,相对比较麻烦一些. Q3:宜信的这个DWS系统会开源么? A3:我们也考虑过向社区贡献,就像宜信的其他开源项目一样,目前项目刚刚成形,还有待进一步磨炼,我相信未来的某个时候,我们会给它开源出来. Q4:架构师怎么理解,是不是系统工程师? A4:不是系统工程师,在我们宜信有多位架构师,应该算是以技术驱动业务的技术管理人员.包含产品设计,技术管理等. Q5:复制方案是否是OGG? A5:OGG与上面提到的其他商业解决方案都是可选方案. 文章出处:DBAplus社群(dbaplus) (编辑:ASP站长网) |