15:56:30 张金魁-互金-北京@zeroto.tech
有接入银行存管 系统的研发人员在群里嘛?
15:57:07 张金魁-互金-北京@zeroto.tech
在开户后,激活接口上遇到了点问题。想请教下
16:16:36 张金魁-互金-北京@zeroto.tech
没事了,可以了。
18:49:59 程琳Wa-杉德支付-产品-上海
今天请到一位朋友,@高远-同方软银 给大家做分享,主题是 “我所知道的银行核心系统24小时设计” 开始时间为【19:30】;欢迎欢迎[鼓掌][鼓掌][鼓掌]!(注: 1.嘉宾分享期间其他人不要发言打断嘉宾分享。2.分享完成后请大家积极补充和提问;3.烦请领取红包签到,谢谢!)
18:50:16 程琳Wa-杉德支付-产品-上海
微信红包
18:50:25 程琳Wa-杉德支付-产品-上海
欢迎欢迎[鼓掌][鼓掌][鼓掌]
18:50:38 Frankly-铜板街科技-信贷产品
签到
18:51:03 七夜
签到
18:54:04 王振兴-银盛-技术-青岛
签到
18:54:35 思奇-杉德-需求-上海
签到
18:54:52 黄小亮-电信-支付运营-广州
签到
18:56:38 董华唯-盛付通-研发-上海
签到
18:57:16 Divi
签到
18:58:49 兴贺-银盈通支付-资金结算-北京
签到
18:59:59 徐希尊-大搜车
签到
19:02:06 萝卜头-产品-北京
签到
19:02:26 毛哥
签到
19:02:43 许望禄-开发-随手科技-深圳
签到
19:02:53 王菲-支付产品-互金
签到
19:03:25 司徒言午-深圳-支付PM
签到
19:03:33 翼支付-产品-胖虎
签到
19:04:07 隔壁老王
签到
19:05:15 地平线-文思-产品
签到
19:05:46 陈宏
签到
19:07:51 Alan-明师-产品-广州
签到
19:09:27 周文斌-爱客仕-支付PM-杭州
签到
19:13:49 张金魁-互金-北京@zeroto.tech
签到
19:15:42 医疗支付-杨正
签到
19:18:50 William.li_润和软件_PM_上海
签到
19:19:02 周雅雯-途虎养车-支付PM-上海
签到
19:26:41 魏磊-人人贷-产品-北京
签到
19:29:56 高远-同方软银-银行核心开发
大家好,刚过了一个季结哈,接下来我就我所了解的银行核心的24小时设计跟大家分享下,希望可以抛砖引玉,跟大家学习下哈。
19:30:41 高远-同方软银-银行核心开发
19:30:58 高远-同方软银-银行核心开发
24小时的概念及带来的问题 1. 24小时是个系统可用性的问题,比如晚上出去夜宵用银行卡结账、去KTV凌晨刷卡结账、去国外其他时区旅游刷卡消费等都要求核心系统提供24X7不间断服务。 2. 所有的时段都有交易在发生,客户账户余额24小时不间断更新,在客户账户层面如何计提客户账户利息?,如何进行会计科目的余额与账户余额总分核对?
19:31:19 高远-同方软银-银行核心开发
客户交易用到了账户余额(读写)、利息计提也用到了账户余额(读)、会计科目总分核对也用到了账户余额(读),但是由于24小时不间断服务带来了账户余额不间断发生更新变化,无法得到一个静止状态的余额(数据量小的银行可以考虑使用oralce数据库的flashback功能得到一个静止状态的余额),故24小时要解决这一矛盾,将客户账户余额解耦,将实时交易用到的余额与计提账户利息用到的余额、会计科目用到的余额进行解耦(将对客户账户余额的读和写解耦)。
19:31:38 高远-同方软银-银行核心开发
所以我们要把账户余额分成两个概念,姑且定义成1.可用余额 2.账面余额。 1. 可用余额,用户层面查询到的余额,可以24小时不间断发生变化。 2. 账面余额,计提利息用到的余额、会计总分检查用到的余额。在过账程序入账时发生变化,平时静止不变。 由于每笔交易都包含有日期、会计科目报表也包含日期,因此系统日期也要根据使用的场景解耦成 1. 联机系统交易日期 2.批量处理日期
19:31:57 高远-同方软银-银行核心开发
上述思路是对账户余额在空间上的解耦,即使用两个字段来分离存储(单表双余额)。还有一种思路是对余额在时间上解耦(多表单余额),即日终时段客户发起的交易不实时修改余额,而是登记到另外的表,事后再追账去更新账户的余额。
19:32:32 高远-同方软银-银行核心开发
下面简单介绍单表双余额的处理方法。 在包含余额的账户主表里面有账号、上笔发生日期、可用余额、账面余额,平时客户查询、存取款等操作的都是可用余额,每一笔操作都会有唯一(每日唯一,甚至是系统生命周期内唯一)的流水号对应,系统逐笔记录形成业务流水,以供后续生成会计流水用(从业务流水到会计流水可以作为另一话题展开)。流水信息里面包含了流水号、业务日期、账号、交易场景(交易码)、发生额等。 日终批处理开始之前系统日期(联机交易日期和批处理日期都为T日),先对联机系统的交易日期切换到下一天(T+1日),这样系统在此之后收到的交易都是下一天(T+1日)的,因此T日的交易不会有变动了,这样批量处理系统根据T日的业务流水信息逐笔修改账户的账面余额,待T日所有的业务流水处理完毕后,就得到了账户在T日的日终余额,批量系统可以后续对账户根据日终余额进行利息计提,也可以对T日的会计报表和分户账余额进行总分核对,在T日的全行总账生成完毕后,批量处理系统在T日的工作也就完成了,此时批量处理系统的日期切换到T+1日。
19:32:57 高远-同方软银-银行核心开发
这个设计还有一些其他的问题:
19:33:03 高远-同方软银-银行核心开发
其他问题 1. 联机系统日切时的数据库长事务对系统造成的影响 a) 在日切时,sleep一定的时间等待T日的数据库事务提交 b) 超过一定的时间仍然没有提交的,可以放在下一天修改账户的账面余额和入会计账。 c) 考虑对数据库的长事务进行监控和优化,比如对数据库会话进行日期标识,之后再根据条件kill   2. 日终批处理的任务太重,相当于要把白天的所有操作处理一遍 a) 将日终的部分任务移到日间(日切前)处理,提前完成一部分任务,从而缩短日终的处理时间。 3. 由于数据库是行级锁,存在一定的几率发生日终过账程序与联机程序处理到同一条记录的情况,这种情况下,一般导致日终过账中断或者联机交易中断。联机交易中断后,客户可以再次发起记账;日终过账程序中断可以考虑出错时保存断点,之后从断点开始继续处理。  
19:36:05 高远-同方软银-银行核心开发
需要24小时运行又需要按日出报表的系统都会遇到类似的问题,可能各家有不同的设计,上述是我所了解的一种,各位老师也可以讲讲你们的设计。
20:19:55 魏磊-人人贷-产品-北京
[强][强][强]
20:21:57 联金所-产品-马忠信-深圳
@高远-同方软银-银行核心开发?问个小白的问题,大神,日切是什么意思
20:22:35 高远-同方软银-银行核心开发
就是营业系统切换营业日期
20:23:47 联金所-产品-马忠信-深圳
切换营业日期就代表?
20:24:09 高远-同方软银-银行核心开发
特别银行日期敏感的业务,营业日期是独立于自然日期、机器日期的
20:24:25 高远-同方软银-银行核心开发
你发生业务的利息不一样了
20:35:57 William.li_润和软件_PM_上海
问下 你们的批处理用的什么技术
20:36:13 杨帆-银数-上海
可以详细介绍下 从业务流水到会计流水吗
20:36:56 高远-同方软银-银行核心开发
嗯嗯, 这些技术都是连着一串的哈。。。。
20:37:41 高远-同方软银-银行核心开发
批处理就是主要解决并行分流和重启的问题, 啥技术都可以啊
20:39:08 杨帆-银数-上海
其他问题的第三条
20:39:19 杨帆-银数-上海
为啥 会处理到同一条记录啊
20:39:58 杨帆-银数-上海
日终过账不是处理的是从上个日切到这个日切中的交易吗
20:39:59 付云-农业-开发-成都
@高远-同方软银-银行核心开发?现在银行这块核心用的什么数据库?
20:40:35 高远-同方软银-银行核心开发
某个账号在批处理时段发生交易,而恰好批处理作业也在处理这个账号(比如利息计提) 就会有锁的冲突啊
20:41:01 高远-同方软银-银行核心开发
@付云-农业-ERP&电商-成都 我了解的都是oracle
20:41:14 杨帆-银数-上海
明白了 处理同一个账号冲突是吧..
20:41:15 高远-同方软银-银行核心开发
毕竟非常依赖数据库
20:41:18 高远-同方软银-银行核心开发
是的
20:42:04 付云-农业-开发-成都
@高远-同方软银-银行核心开发?嗯,ibm大型机,小型机?
20:42:49 高远-同方软银-银行核心开发
数据库都是部署在ibm P系列小型机上
20:43:14 付云-农业-开发-成都
@高远-同方软银-银行核心开发?了解,存储呢
20:43:33 高远-同方软银-银行核心开发
应用一般是C 或者java 我认为可以集群部署到linux上的,不过银行也是把这个部分部署在ibm服务器上
20:44:00 高远-同方软银-银行核心开发
存储 都是ibm
20:44:04 高远-同方软银-银行核心开发
或者emc啊
20:44:17 杨帆-银数-上海
这个核心系统 是指贷记卡和借记卡系统吗
20:44:21 付云-农业-开发-成都
嗯,了解了,传统方案的标配
20:45:55 高远-同方软银-银行核心开发
@杨帆-银数-上海 没做过贷记卡系统,不了解呢 我了解的是常规的存款账户、贷款账户的系统
20:47:14 高远-同方软银-银行核心开发
@付云-农业-ERP&电商-成都 24小时营业的系统如果技术力量不够,做不到高可用高可靠,很难有动力做出改变啊
20:47:31 高远-同方软银-银行核心开发
一些边缘的系统创新会多点吧
20:50:14 付云-农业-开发-成都
@高远-同方软银-银行核心开发?是啊,之前运维过一段ibm emc oracle ,成本高。高可用高可靠够折腾,还要定期演练
20:50:26 高远-同方软银-银行核心开发
@杨帆-银数-上海 业务流水到会计流水通过 会计场景(交易代码)+ 账户类别 关联出来处理啊
20:51:55 高远-同方软银-银行核心开发
@付云-农业-ERP&电商-成都 现在都分布式了, 一般的银行开发、运维、管理怎么搞? 根本没有这方面的积累啊
20:53:30 付云-农业-开发-成都
@高远-同方软银-银行核心开发?我没做过银行类,电信行业和集团内部ERP项目
20:54:05 付云-农业-开发-成都
也是ibm,emc,oracle 标配
20:54:25 高远-同方软银-银行核心开发
去ioe没?
20:54:37 高远-同方软银-银行核心开发
电信的系统比银行的系统要复杂很多
20:54:40 付云-农业-开发-成都
Oracle几年前也推出了一体机
20:55:07 付云-农业-开发-成都
没有
20:55:11 杨帆-银数-上海
是根据每笔交易(交易代码) 会 配置一个会计分录是吧?
20:55:23 付云-农业-开发-成都
业务复杂
20:55:37 高远-同方软银-银行核心开发
每类交易
20:55:53 杨帆-银数-上海
嗯嗯 没类
20:56:08 杨帆-银数-上海
每种类型
20:56:22 William.li_润和软件_PM_上海
你们的业务流水号是如何生成的 sequence 么
20:56:41 杨帆-银数-上海
流水号是随机的么
20:56:48 高远-同方软银-银行核心开发
外围系统给的
20:57:03 高远-同方软银-银行核心开发
服务调用方给的
20:58:32 高远-同方软银-银行核心开发
你们关注流水号的什么? 顺序性,唯一性?
20:59:53 杨帆-银数-上海
流水号有多少位啊
20:59:55 杨帆-银数-上海
唯一性
21:00:36 William.li_润和软件_PM_上海
唯一性 高并发
21:00:58 付云-农业-开发-成都
@William.li_润和软件_PM_上海?互联网场景自定义,内存+db,算法看业务要求,比如雪花算法(snowflake)。 企业级内部自增用得多。
21:03:50 高远-同方软银-银行核心开发
在我们古典系统里面, 数据库的序列就搞定了啊, 并发很小。。。。
21:04:10 付云-农业-开发-成都
我今天看拼多多商品用的uuid,不过mysql8这块有优化
21:06:36 William.li_润和软件_PM_上海
Uuid 坑吧 排序效率低 要不就 又byte 一次
21:08:15 William.li_润和软件_PM_上海
Uuid 也没规则 一般业务流水还是有有规则的
21:12:57 董华唯-盛付通-研发-上海
用uuid的话还不如用雪花算法,性能还高一点
23:13:25 刘易坤
@付云-农业-ERP&电商-成都?请问一下数据库主键使用流水号么?没有id的概念了?
23:20:40 付云-农业-开发-成都
看业务需求吧,啥方法都有人用[呲牙]
23:22:11 付云-农业-开发-成都
自增,UUID,存储过程模仿ORACLE序列,时间戳+机器码+递增序列。。这几咱都见过
23:27:12 晴耕雨读
国外开源snawflak
23:27:52 晴耕雨读
拼音不一定对,就是个全局自赠序列
23:28:35 Kun-汇元银通-产品-北京
@天津-神州-晴耕雨读?神州商龙?产品还是开发呢
23:29:20 晴耕雨读
你是技术么
23:31:12 付云-农业-开发-成都
这是偏向技术这块的(主要技术点:唯一性,路由),偏向业务的比如订单号这块可能会有一些标识,微信订单号,支付宝交易号28位,淘宝订单号18位
23:40:30 付云-农业-开发-成都
对于业务这块的做法,我很喜欢类似科目段的设计方式,加标识在里面。对于技术这块的做法参考snawflak
23:49:45 Kun-汇元银通-产品-北京
@天津-神州-晴耕雨读?我们也做收银,市面上经常遇到神州商龙的收银软+硬
23:50:03 Kun-汇元银通-产品-北京
我负责一个项目产品和技术。
23:51:19 Kun-汇元银通-产品-北京
收银软+硬领我真是很头痛[撇嘴]
23:52:56 付云-农业-开发-成都
昨晚看了一下人人都是产品经理,作者把发现需求,管理需求,冻结需求的坑讲得太丰富了。