程序员人生
网站导航
返回首页
php框架
web前端
程序人生
php开源
数据库
服务器
互联网
联系我们
[置顶] 大学毕业4年-回顾和总结(10)-资金账务系统的架构设计(产品视角+技术视角)(图文并茂)
栏目:
框架设计
时间:2016-06-06 16:58:44
背景
2014年和2015年开发P2P网贷系统的时候,某大牛有设计了1套简洁实用的资金账户系统。
系统设计主要是为了服务于P2P网贷等系统,资金账务系统可以作为1个独立的子系统对外提供服务。
本系统,我基本没有写过几行代码,更多是学习,理解他人的架构设计。
之前,有写过相干总结。
大学毕业4年之际,想把之前各方面的积累都好好总结1番。
从本篇开始,写点之前做过的产品和技术架构等。不玩高大上,要简单直白。
友谊提示
:
注释,是不会太多的。英文过关的朋友,基本都看得懂。“约定优于配置”,“约定优于注释”。
产品核心功能
业界“最好实践”
殊途同归
:支付宝、微信支付、京东商城,和钱相干的功能,最核心的都是:资金账户、交易(充值、提现、转账、支付)、查询(资金流水、分类查询、交易明细)。
支付宝图
:
雷观
:
技术研发,懂产品对提升自己的架构能力,可以说是有巨大帮助的。
1.开户
功能描写:创建1个账户。
账号和账户是不同的概念,前者侧重普通系统登录,后者侧重“资金类系统”。
2.交易
充值:为1个账户增加1笔钱。
提现:从1个账户减少1笔钱。
转账:把1个账户中的钱,转移到另外1个账户。
批量转账:转账的增强版。
冻结资金:把1个账户的资金,冻结1部份,可用余额会减少相同的数额。
解冻资金:把1个账户的资金,解冻1部份,可用余额会增加相同的数额。
3.查询
基本信息查询:查询1个账户的总金额、可用余额、冻结余额等信息。
批量查询:查询多个账户的金额等信息。
开户-冻结账户-解冻账户
冻结资金、解冻资金等日志
交易明细:包括了充值、提现、交易等所有的账户资金变动日志。
4.冻结账户/解冻账户
冻结;把1个账户给冻结了,冻结的账户可能没法进行提现等操作。
解冻:把账户从冻结状态,变成正常状态。
技术架构
技术架构图/产品架构图
3种模式:本地jar包或源码、WebService、Dubbo。
当使用WebService/Dubbo的时候,需要注意“散布式事务”。我们在做的时候,没有过量斟酌。
数据库
设计
账户表
内部账户表
账户资金冻结记录
账户资金流水
充值返回通知
充值记录
交易记录
提现
详细设计
接口包
外界调用账务服务,先引入接口包就,再引入实现类jar。如果是WebService和Dubbo,只需要引入接口jar包就好了。
facade
: 对外提供的服务,是通过facade包下的3个接口来暴露的。
enums
:枚举类
model
:各种模型
result
:结果集,code+实体。毛病码code,也能够通过Exception+code来实现。
util
:工具类。
AccountOpenFacade
:
主要提供开户类的功能,外部账户、内部账户等是有点辨别的。
AccountQueryFacade
:
查询类功能,查询账户、资金流水、资金冻结记录等。
AccountTransFacade
:
交易类功能,充值、提现、冻结、取消冻结、转账。
实现包
facade.impl:
对外提供服务的实现类
account
:账户模型,账户本身也能够有多重实现,这个还真是没有想到。比如,DummyAccount可以空实现,有的时候会用到。
constants
:常量
dal
:
数据库
CRUD
exception
:异常
service
:内部业务逻辑,主要是查询类的。
trans
: 内部业务逻辑,主要是交易类的。
util
:工具类。
vo
:只有1个LockAccountVO,可能要锁账户时的临时VO。这个地方略显高端!!!
查询类功能service
:
交易类功能trans
:
不足的地方
当时做P2P网贷系统的时候,资金账务系统只实现了这些“利用类”的核心功能。
刚刚把产品架构图画好了,和某电商大牛交换了下,他觉得漏掉了2个核心功能:对账和结算。
先记下来,下周认真学习下。
总结
1.资金账务系统,是比较通用的。
2.先有产品设计,再有技术架构,再细节设计和编码。
3.面向接口编程。
4.外界系统,只需要知道接口就能够了。
5.资金账务类系统,需要1点业务能力。部份功能,需要懂财务会计等概念。
1转眼,2016年5月,马上就要过去了。
这个月,写得大多是“创业投资和商业模式” 类的文章,效果还是非常好的。
但是,目前还是“技术立身” ,写点技术类的总结,压压惊,嘿嘿!!!
小雷FansUnion
-
1个有创业和投资经验的资深程序员-全球最大中文IT社区CSDN知名博主
-
排名第
120
投资
案例:
好狗狗
、
皇包车
、
职业梦
、
比呀比
、
易途8
2016年5月29日
湖北-武汉-晴
雷观
:
技术研发,懂产品对提升自己的架构能力,可以说是有巨大帮助的。
------分隔线----------------------------
上一篇
一起talk C栗子吧(第一百五十九回:C语言实例--基于AF_INET域的数据报套接字通信)
下一篇
[置顶] 架构设计:系统间通信(33)——其他消息中间件及场景应用(下3)
------分隔线----------------------------
最新技术推荐
1
Excel的筛选的使用技巧
2
Rails在MacOS上搭建Heroku部署环境
3
Spring(十二)AspectJ框架开发AOP(基于注解)
4
MacOS下安装rvm的几点注意
5
mysql 协议的退出命令包及解析
6
深入浅出Mybatis-分页
7
Spring(十一)AspectJ框架开发AOP(基于xml)