irpas技术客

中信信用卡核心升级应用&数据服务系统_银行 调度系统 查es_杨鸣洋

未知 8247

整体架构图

data-azkaban-web 前端页面 data-azkaban-web-back 后台数据控制端,执行状态刷新等等。 data-workflow-mgmt 定时任务基于springboot的Scheduled定时任务,本质他是单线程。

问题1:为啥自己封装定时任务 azkaban现在存在的问题是 基于project调度,不能跨project调用,而且基于project调度上传文件太多了,依赖关系复杂。

问题2:自己封装除了解决azkaban外,其他好处 依赖flow,依赖外部sql特殊化定制,到某个时间才能执行,文件满足等等

问题3:咋样解决规划任务状态的 默认值0, 初始值1,从批次表导入到执行表的状态 执行中2,执行中 判断条件是只要执行了azkaban的接口,有正确的返回值,就算。不异常,如果执行flow接口异常,直接设定为失败,并且把azkaban返回的失败状态和失败描述写入自己的表对应状态中。 执行成功3,不断的调用查询flow状态的接口,回刷状态。 执行失败4,不断的调用查询flow状态的接口,回刷状态。 跳过5,自己本身业务需求和azkaban没啥关系。

问题4:自动起批咋样实现的 启动一个定时任务,从批次表把数据导入执行表,不断的循环遍历,满足依赖关系的条件可以自动调起来

问题5:跨机房切换 汇天 朝阳门 合肥 一地2中心,异地灾备 需求1:汇天掉起来,朝阳门也会自动掉起来 需求2:汇天某些数据需要依赖朝阳门的等外部接口数据,可以提供sql给进行判断,sql状态的返回值规定好就行。

问题6:异常处理 一个flow失败了,我们有重跑机制,强制重跑,立马调用flow执行接口,这个flow状态设定为2执行中,如果他满足依赖也就会重新跑一次,加入重跑次数超过3次,我们会告警,有 histroyflowid字段 每次调用都会往里面添加一个 的 flowid1,flowid2,flowid3。超过3次,人工干预。 加入有个需求我想跳过这个flow,不执行也是可以的。这属于状态stauts的状态划分,java判断条件的时候执行flow直接让他过就行了。

project -> flow -> job 我们把flow调度抽取出来,当做一个原子性,因为azkaban提供了基于flow单独调度的接口,我们可以在上面做很多事情,自定义flow依赖,所以我们定义2个表,批次表,执行历史表。

批次表里面可以有很多东西 flow名字,依赖关系(依赖flow,依赖外部sql特殊化定制,到某个时间才能执行,文件满足等等) 这需要我们前一天启动就把依赖图弄好。 执行历史表,flow名字,依赖关系,执行状态

后来又增加一个需求,在一个group概念,一个group执行完后,我们再执行其他group。 增加一个group批次表,group执行表。 只有group之间的依赖没有他们依赖,其他执行逻辑和flow执行逻辑一样。

项目一 总项目名称:中信信用卡核心升级应用&数据服务系统 总项目说明:中信银行信用卡StarCard新核心系统,通过构建新一代分布式云架构,并在近线数据库中采用了分布式集群(HBASE+ES+HIVE)解决方案,搭建出了PB级数据存储能力,为中信银行信用卡业务提供了秒级时延的海量数据实时查询,也提供了数据在不同场景下横向关联的穿透能力,由此为客户服务、营销支撑、产品服务、信贷风险、运营支撑等业务提供了不同时效、复杂场景的数据服务能力。 项目1周期:2019.02-至今 软件环境:azkaban,mysql,springcloud等 开发工具: eclipse+jdk+maven 项目名称:数据组hive离线调度产品。 项目概况:基于大数据离线调度产品azkaban二次封装的产品。 需求说明:大数据离线调度产品azkaban功能是基于一个Project进行工作流顺序执行的。不满足我们的需求,我们需要个性化调度,还能个性化维度统计每天跑批时间,还有一些异常处理功能。 功能包括:1)批次调度,批次之间依赖调度 2)批次里面按照flow依赖调度 3)批次里面flow调度触发条件sql,时间,文件等满足条件 4)监控中心 重跑,中止,跳过等等操作 5)数量统计每天批次,flow成功失败跳过数,耗时多少等等。 6)自动化起批 7)主备机房切换调度 8)调度系统高可用设计 责任描述:1)springcloud环境搭建,2)核心需求分析,产品设计,3)代码规范,核心代码书写,4)生产变更维护

实时查询架构分析, 因为现实数据PD级别数据考虑,如果数据全部走goldendb查询压力太大,大部分数据查询只需要准实时查询100ms左右就可以,所有做了数据同步,那为啥需要es做二级索引,因为如果直接走hbase查询rowkey效率是够高,但是rowkey组成覆盖的字段比较少,所有先根据其他字段查询到rowkey再进行查询habse,有点像mysql索引,先普通索引,再查询主键索引。ps:一切脱离业务的技术都是耍流氓。

接口优化规则 问题1:有个授权接口压力测试300ms没有达到100ms的要求 方案1:经过分析日志时间分析,是一次性从es拉去的数据过多,再list循环遍历查询hbase次数过多导致的,因为数据之间没有关联性,我们用了countdownlatch进行分组查询,效率直接提升到100ms以内。扩展1:当然如果要实时查询2ms以内不能这样操作,大部分核心需求不宜过多,查询的字段应该都在索引范围内,甚至主键索引范围内。有些需求可以采用批量提交大事务的方法。

问题2:有些业务很类似,你接口咋样设计 方案2:泛型+接口,深交所交易终端现货交易,etf交易(10多个类型相同的业务相同的数据)就是这样做的

问题3:hive做报表有啥好处 方案3:hive是基于大数据分布式的,原则上只要机器够多,数据处理效率基本差不多,但是他启动时间过慢,查询1000万数据和查询几亿的数据效率一样,hive一般都需要做分区,提高查询效率,所有信用卡这边分区Partition 用的 卡号+会计日 (划分原则,大部分业务基于这2个字段,进行where过滤的条件),原先也用过基于spark调用hive的方式,最后发现经常oom,所有最后大部分业务基于 shell 执行 hive -f hive -e 命令执行。有些业务比较复杂,我们采用临时表进行业务跳转,还有查询字段过少也是个好方法,where过滤第一考虑。 hive能生成 text 文件,csv等等文件。文件在金融交易很重要,是和外部业务交换数据的重要途径。shell脚本调用hive必须执行可以重跑,进而满足调度失败重跑机制。

功能4:我想知道所有被调用的shell脚本中hive所有被调用的表 hive-parser 可以把sql转换成为有规律的树,从而分析 from-table to-table 及其字段,从而分析整个批次被调用表的和字段。进而有效的控制分析表的利用率。

项目2周期:2018.04-2019.02 软件环境:springcloud,kafka,elasticsearch,hbase,hive等 开发工具: eclipse+jdk+maven 中心信用卡核心数据服务系统设计与研发,中信银行信用卡中心将新信用卡核心系统分为账户处理系统、授权处理系统,大数据服务与应用系统,将大数据平台引入到信用卡核心系统中,通过业务读写分离模式让大数据平台进行查询时加快响应时间。 功能包括:1)基于(es+hbase)实时授权服务查询 2)hive离线报表 3)kafka数据外发 责任描述:1)负责springboot,spring cloud,zipkin微服务体系,elasticsearch,hbase数据库的建模设计, openshift平台环境的使用及部署微服务,信用卡核心系统运营支撑平台的技术体系架构。


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #银行 #调度系统 #查es