金融账户系统设计
来源|呱说产品
一、卡号和账号
大家拿出自己的银行卡,发现其实卡号一般都以6位开头的,其实这是由一定的规律的。卡号通常由16位数字组成,包括发卡银行标识、账户标识、有效期和验证码等。
其实卡号只不过是便于客户记忆的一个卡id而已,在金融机构内部,通常用账户来传达资金信息。
金融机构每个账户都有一个唯一的账户标识,即账户id,客户可以在金融机构开设一个或多个账户,如储蓄账户、支票账户、定期存款账户等,以满足不同的财务需求。
在金融机构内部系统中,给客户开卡,其实第一步是开立一个账户,卡号是账户的一个字段,为了便于客户记忆的一个字段而已。
一个账户一般包括三个号:客户编号、账户号码、系统账号。
客户编号:是金融机构为客户分配的唯一标识符,客户编号是机构内部,各系统间的“身份证号”,具有唯一性,用于识别和管理客户的基本信息。
账户号码:是客户在金融机构开设账户后获得的唯一标识符,即可通常我们看到的客户卡号。
系统账号:这个是系统层面的唯一id,通常是用于金融机构内部交互的账户唯一标识符。
系统账号和账户号码是一一对应关系,一个账户只能且有且一个系统账号,一个客户号可以有多个账户号码和系统账号。
以下是一些常见的账户字段组成:
账户编号:用于唯一标识账户的编号。
账户名称:用于显示账户的名称,如个人姓名或企业名称。
账户类型:用于标识账户的类型,如个人储蓄账户、企业存款账户等。
开户日期:记录账户的开户日期。
账户状态:记录账户的状态,如正常、冻结、销户等。
账户余额:记录账户的当前余额。
可用余额:记录账户当前可用于交易的余额。
账户密码:用于账户登录和交易的密码。
账户绑定信息:记录账户绑定的其他信息,如手机号码、电子邮箱等。
交易记录:记录账户的交易明细,包括交易时间、交易类型、交易金额等。
客户编号:
系统账号:
二、账号的分类
刚入门金融行业的同学,对于一类户,二类户,对私户,结算户等名词很容易混乱,这其实是账户在不同场景下的账户分类后的不同叫法。
账户类型可以根据开户对象进行区分,主要分为个人账户和对公账户。
1、个人账户:
是自然人在金融机构开立的账户,主要用于个人资金的存储、转账、消费等。个人账户可以分为Ⅰ类账户、Ⅱ类账户和Ⅲ类账户,不同类别的账户在功能、限额等方面有所不同。
2、对公账户:
是企业在金融机构开立的账户,主要用于单位资金的收支、结算等业务。对公机构账户可以分为基本存款账户、一般存款账户、专用存款账户和临时存款账户,不同类型的账户在用途、开户条件等方面有所不同。
一类、二类、三类账户
根据客户的开户需求和资金风险等级划分的不同账户类型,它们在使用范围、功能和限额等方面有所不同,具体如下:
一类账户:是全功能账户,支持存款、购买理财产品、转账、消费和缴费支付、支取现金等业务,使用范围和金额不受限制,实体卡的账户通常是一类账户。
二类账户:是虚拟电子账户,它可以办理存款、购买投资理财产品等金融产品、限额消费和缴费。
三类账户:也是虚拟电子账户。它可以用于快捷支付比如闪付免密支付等,仅能办理小额消费及缴费支付。
区分一、二、三类账户主要的目的是账户分级管理,账户级别越高,开通和使用门槛越高,比如监管要求一类户开户需要当面开立或者远程视频,二三类户监管依次放松,分级的意义在于保障客户的资金安全的同时方便客户使用。
账户在功能和用途上,可划分为对内账户和对外账户。
对外账户分为:
贷款账户:是企业或个人在金融机构开立的用于借款和还款的账户。这种账户通常用于企业或个人向金融申请贷款、还本付息等操作。
存款账户:是企业或个人在金融机构开立的用于存款和取款的账户。这种账户通常用于企业或个人将闲置资金存入机构,以获取利息收入或保证资金安全。
对内账户分为:
资金内部户:资金内部户是指用于核算内部资金往来的账户。这种账户主要用于机构内部不同部门或不同分支机构之间的资金划转和清算。
会计内部户:会计内部户是指用于核算机构内部资金往来的账户。与资金内部户不同的是,会计内部户主要用于机构内部的会计核算和财务管理,例如用于记录机构内部的利息收入、手续费收入等。
三、账户模型
了解了账户基本概念之后,根据就可以了解账户模型,账户模型是根据账户的使用场景,进行抽象化的设计的思维。
通常包括以下账户模型。
卡账户模型:该模型主要针对银行卡账户,以卡片作为账户的物理载体,每个卡片对应一个账户。卡账户模型包括账户基本信息、卡片信息、交易明细等,方便用户进行存款、取款、转账等操作。
母实子虚账户模型:该模型主要针对企业和个人在不同金融机构开立的多个账户,通过一个主账户(母账户)对多个子账户(虚账户)进行管理和控制。
单账户模型:该模型主要针对个人用户,将用户的所有资金和信息集中在一个账户中进行管理。
企业账户模型:该模型主要针对企业用户,根据企业的不同需求和业务场景,提供多种类型的账户,如基本存款账户、一般存款账户、专用存款账户等。
四、账户生命周期
账户生成之后,也是有生命的,即账户的生命周期,主要包括以下节点
开户:是账户生命周期的起始节点,客户通过提交开户申请及相关证明文件,经过审核后开设账户。
激活:客户收到账户后,需要进行激活操作,如设置密码、绑定手机等,才能正常使用账户。
使用:客户可以通过账户进行存款、取款、转账等操作,完成各种金融交易。
风险评估:需要定期对客户的账户进行风险评估,评估异常对账户进行冻结,禁止转出金额或者交易。
休眠:如果客户在一定时间内没有发生交易行为,账户会进入休眠状态。
注销:当客户不再需要使用账户时,可以申请注销账户,当一笔贷款结清后,对应贷款账户也自动注销。
归档:注销后,机构需要将账户资料归档保存,以便后续审计和监管部门的检查。
五、账户的系统操作
账户通常是记录资金信息的载体,那么围绕账户的日常,相关财务系统会对账户信息操作。
对于存款账户,需要给客户计算利息,主要涉及计提和结息操作。
账户计提:是指机构根据规定或协议,在每个计息周期结束时,对账户应得的利息进行计提操作。计提的目的是为了在财务报表中反映出机构存款利息的费用支出。计提机构存款利息的会计分录为借:机构存款,贷:财务费用。
账户结息:是指机构根据规定或协议,在结息日对账户进行结息操作。结息的目的是为了计算账户在一个计息周期内的利息,并将利息计入账户余额。结息后,客户可以通过账户交易明细查询利息入账情况。
不管什么业务类型,当账户上的金额发生变动,那么就涉及到账户记账操作:
账户记账:是指机构根据账户发生的交易,按照规定的会计科目和记账方法,对账户进行记账操作。记账的目的是为了反映账户的资金变动情况,便于机构进行财务管理和会计核算。
例如,当客户存入一笔款项时,机构会在借方记入“机构存款”科目,同时在贷方记入“客户存款”科目。
六、热点账户设计方法
对于互联网贷款或者存款,当多个进程或线程试图在同一时间更新同一个账户时,就会产生性能瓶颈。这种现象类似于城市交通高峰时段的拥堵地段,大量的车辆试图通过同一个路口,导致交通堵塞。
由于大量交易并发处理系统中某一特定客户账户,可能会导致交易大量超时或者失败,从而严重影响客户的体验。
热点账户标准:
账户每秒有10次以上更新需求:这意味着该账户的数据非常活跃,有很多进程或线程试图对其进行更新。
串行化时账户处理延迟高于1秒以上:这说明处理这些更新的时间是相当长的,可能会导致其他进程或线程等待,进而影响到整体性能。
为了避免热点账户的产生,可以有一些设计思路:
拓展道路 - 硬件性能:这类似于增加服务器的处理能力,例如增加CPU、内存或磁盘速度。这样可以提高处理账户更新的速度。
举例:如果原来使用的是单核CPU,可以升级到多核CPU来提高处理能力。
错峰出行 - 异步处理:这意味着不是所有的进程或线程都试图在同一时间更新账户,而是采用异步方式进行更新。
举例:比如客户放款,打款成功还未记账,可以先通知客户打款成功,然后可以采用异步方式对账户进行记账。
顺序排队 - 延迟记账:这类似于让所有的进程或线程按照一个顺序来更新账户,而不是同时进行。
举例:在机构的转账业务中,所有的转账请求可以被放入一个队列中,然后按照顺序逐一处理。
限号限流 - 数据库nowait:这意味着限制同一时间内对账户的更新次数,避免过多的请求。举例:在社交媒体平台上,对用户的点赞或评论操作可以采用“nowait”模式,即如果当前请求过多,部分请求可以立即返回并告知用户稍后处理。
批量汇总记账:它将多个账户或交易的记录集中在一起进行批量处理。这种方式可以提高记账效率,减少单个账户或交易的处理时间和成本,如金融机构与企业之间的资金结算、工资发放等,多比业务合计打一笔款。
道路分流 - 业务流程优化:这涉及到重新设计业务流程,以避免过多的更新请求集中在同一个账户上。
举例:比如金融机构内部可以按不同开立产品过渡户,这样账户操作隔离互不影响。
总结:
以上就是账户的业务以及系统设计,有了账户,资金流才有才有载体,也有了后续交易的故事。