再讲解如何设计复杂多变的清分系统之前 先看下咱们整体架构清分

我们接入服务是两台服务器,一个缓存服务器,共享目录设置在接入服务服务器其中之一,一天缓存服务器,oracle数据库主备库 这是目前大致情况,由于清分服务 主要是内部人员使用,使用人数不多,对高并发要求不高,主要用于清算,所以系统必须稳定

问题一 为何设置主备库

因为私网对账清分有很多统计服务 主要以查询为主,一般查询使用备库,减少压力,而对账清分使用主库,目前 改架构情况是对账清分5亿,100万笔左右 对账时间10分分钟左右,清分时间10分钟左右

问题二 对账清分服务为何只使用单台服务器

由于历史原因,首先私网搭设时部分银行不容许使用一些中间件(后面专门会写一节模拟redis分布式锁的文章) 而多台服务器对账清分必然需要使用分布式锁,另外 清分服务需要调用银行服务 有些银行服务可能无法支持这种并发调用,基于这些考虑对账清分私网采用的单台服务器,而查询服务ng分压到另一台服务器上,总之私网对账清分主要是计算金额要对,对账数据要稳,质量要高。

私网对账和公网对账流程上差不多,具体可以参考前面章节,而清分到底干了些什么,为何复杂多变呢?

其实清分就是根据商户出款,机构的费率设置,算各级分润差,对接银行接口 就这么简单(具体业务可以参考前面章节)具体大致流程如下

费率差计算:不同的机构费率差设计不一样

商户打款:商户打款不是简单的第三方账单的出款金额,有商户减免 、商户补贴、 还有各通道方的不定期打折政策 比如微信的蓝海行动 支付宝的绿洲活动等

通道手续费:通道有0通道比如针对医院 福利机构 千二 千6通道等

接口对接:接口对接是最复杂的,基本上每对接一次 就需要重新写接口,有传输上sftp ftp socket http 文件格式上有txt xls pdf csv 语言上有java c c++ 加解密算法上有国密算法 rsa算法 des算法 以及内部算法 等等

还有其它各种统计报表差异等等 这里不再一一表述

针对以上各种复杂多变的需求,我们必须需要设计好整个清分流程。目前我们使用的是模板方法模式+策略模式+抽象工程模式

模板模式:将整个清分流程固定好,基础数据+抽象方法+默认实现,如果有定制 重写抽象方法即可

public final 模板{

初始化参数();

abstract开始();

provider.getService(...).计算分润();

provider.getService(...).计算商户出款();

....

abstract结束();

}

其中 abstract是抽象方法 provider是工厂模式

策略模式:每家银行算法逻辑不一样,这里将其算法抽象,有具体需要重写的 可以根据定制

抽象工程模式:每家银行各个环节算法其实根据部署环境 可以打包成一整套算法产品逻辑,这样完全 根据不能的银行 打包成自己独立的一套算法逻辑,最终部署的包就是接口+算法产品簇lib

如何设计复杂多变的java清分系统之一相关推荐

  1. java教务系统类设计_基于Java EE体系的高校教务管理系统的设计开发

    <基于Java EE体系的高校教务管理系统的设计开发>由会员分享,可在线阅读,更多相关<基于Java EE体系的高校教务管理系统的设计开发(3页珍藏版)>请在人人文库网上搜索. ...

  2. Java消息系统简单设计与实现

    前言:由于导师在我的毕设项目里加了消息系统(本来想水水就过的..),没办法...来稍微研究研究吧..简单简单... 需求分析 我的毕设是一个博客系统,类似于简书这样的,所以消息系统也类似,在用户的消息 ...

  3. java毕业生设计宠物医院管理计算机源码+系统+mysql+调试部署+lw

    java毕业生设计宠物医院管理计算机源码+系统+mysql+调试部署+lw java毕业生设计宠物医院管理计算机源码+系统+mysql+调试部署+lw 本源码技术栈: 项目架构:B/S架构 开发语言: ...

  4. java毕业生设计中学线上作业评判系统计算机源码+系统+mysql+调试部署+lw

    java毕业生设计中学线上作业评判系统计算机源码+系统+mysql+调试部署+lw java毕业生设计中学线上作业评判系统计算机源码+系统+mysql+调试部署+lw 本源码技术栈: 项目架构:B/S ...

  5. java毕业生设计校园线上点餐系统计算机源码+系统+mysql+调试部署+lw

    java毕业生设计校园线上点餐系统计算机源码+系统+mysql+调试部署+lw java毕业生设计校园线上点餐系统计算机源码+系统+mysql+调试部署+lw 本源码技术栈: 项目架构:B/S架构 开 ...

  6. java毕业生设计医院设备管理系统计算机源码+系统+mysql+调试部署+lw

    java毕业生设计医院设备管理系统计算机源码+系统+mysql+调试部署+lw java毕业生设计医院设备管理系统计算机源码+系统+mysql+调试部署+lw 本源码技术栈: 项目架构:B/S架构 开 ...

  7. java计算机毕业设计爱心公益网站设计与制作源码+数据库+系统+lw文档+部署

    java计算机毕业设计爱心公益网站设计与制作源码+数据库+系统+lw文档+部署 java计算机毕业设计爱心公益网站设计与制作源码+数据库+系统+lw文档+部署 本源码技术栈: 项目架构:B/S架构 开 ...

  8. java毕业生设计爱心公益网站设计与制作计算机源码+系统+mysql+调试部署+lw

    java毕业生设计爱心公益网站设计与制作计算机源码+系统+mysql+调试部署+lw java毕业生设计爱心公益网站设计与制作计算机源码+系统+mysql+调试部署+lw 本源码技术栈: 项目架构:B ...

  9. java计算机毕业设计Vue垃圾分类指南平台设计与实现源码+数据库+系统+lw文档

    java计算机毕业设计Vue垃圾分类指南平台设计与实现源码+数据库+系统+lw文档 java计算机毕业设计Vue垃圾分类指南平台设计与实现源码+数据库+系统+lw文档 本源码技术栈: 项目架构:B/S ...

最新文章

  1. Windows Phone 模拟器(Emulator) 加载程序一闪而过就自动退出的解决办法
  2. 针对java程序员的好书目录 各帖总结与收集,自用送礼两相宜
  3. ELK 删除索引只保留10天
  4. 紧迫感:在危机中变革
  5. mysql数据类型优化
  6. 新春拜年被亲戚问到成绩时,怎么办?学会这6法,情商上涨蹭蹭蹭!
  7. 心情的旅行- 让自己慢下来(46)
  8. ptyhon的列表与字典操作
  9. 1503171912-ny-一道水题
  10. OpenGL基础13:第一个正方体
  11. 随风潜入夜,润物细无声
  12. python学习笔记7-读取pdf并输出到excel
  13. 黑马程序员-ios入门初体验及个人体会
  14. 微信识图之面向多源异构数据的检测器设计
  15. 微信小程序校园介绍板
  16. Python问题:UnboundLocalError: local variable 'xxx' referenced before assignment
  17. VA_X的EnterKey解决
  18. 使用mapreduce进行流量汇总程序开发
  19. 项目管理基础之逻辑思维学习
  20. 分子间相互作用力——氢键,卤键,硫键,π-π堆积,盐桥,阳离子-π,疏水作用力

热门文章

  1. codeforces_#242 (Div. 2)
  2. Python 爬取火车票信息(易于理解版)
  3. 把数据库中的数据写出到excel表格中
  4. Docker基础26--6.1 Etcd—高可用的键值数据库
  5. 【Unity】M_studio-随机RoughLike项目优化:动态代码生成对象
  6. 第9章 maven的插件和生命周期
  7. 计算机键盘上切换账户怎么办,笔记本切换小键盘,详细教您笔记本小键盘怎么切换...
  8. 电巢:上海半导体投资浪潮的前奏、高潮与转折
  9. cocosCreator 控制音乐,音效的图片转换
  10. 手把手教你搭建一个属于自己的网站