理财平台架构分析

  一个理财平台可以从不同的维度来看。对于一个消费者来说,最宏观的看法,P2P公司的理财平台相当于一个中介,一边用于对接用户,一边用于对接产品提供商。这个中介系统负责用户和产品提供者之间的交互。对于一个P2P理财公司来说,最核心的两个模块是财务账目模块和运行模块。其他的模块都是基于这两个核心来扩展的。

  1. 把登陆模块单独拎出来,是为了日后进行登陆安全控制;追踪客户记录进行大数据分析;
  2. 概念:结算和清算,清算是两个系统之间,如P2P公司和银行之间,是发生在两个独立系统结算之外的。结算则是本系统内的一种账务计算,它只限于本系统。

什么是好的架构系统?看上面的业务架构图,它严格的定义了各个模块的边界。对于一个需求,我们写在哪个系统的哪个部分,都唯一确定,而不会产生模棱两可的状况。码农所做的工作就是在相应的格子中填充代码,完成相应的单元测试。架构的设计要解耦,比如一个客户购买P2P公司的一款理财产品,他在H5端下单付钱,P2P公司的理财平台要对接到银行,从客户的银行卡扣钱,银行扣钱成功要通知P2P平台,这个通知很大概率是收不到的。这就涉及到了消息传递的同步和异步。我们先举个例子,A在微信上向B发了一条微信消息,A立即接受到了发送成功,但是此时消息只是到达了A服务器,(假如A服务器有足够策略保证把接受到的消息发送到B服务器,再递推到B客户)。这就是简单的同步和异步问题。如果你问我同步好?还是异步好,一般公司的是先采用同步方式,后采用异步方式,因为异步方式需要单独的开发消息传送机制。而且是当数据体量特别大的时候,才去采用异步方式来提高效率。

OP平台的全称是Operation Platform,看上面的图:

  1. 图的最左侧,运营平台面向的对象是:产品人员(录标)、结算人员、客服人员和管理人员(测试人员,开发人员等)。
  2. 运营平台依赖于财务系统、会员系统、交易系统、合同系统。客户和平台之间的每次交易都一份合同,当然是电子合同。
  3. OP系统要做的工作是途中所标注的那些模块,这是技术研发人员向管理者和运营人员、市场人员、测试人员开放的接口。

如上图所示,是P2P理财平台的表结构的设计:

  1.  大致分为七大类,当然随着项目的运维后续还会陆续的有扩表(尤其适合后台管理部分的表结构),粗看表结构的命名规则包括有:T_、P_、OP_、相应的分别表示Trade(交易平台)、Produce(产品平台)、Operation Platform(运营平台)。
  2. 在变量的字段定义中,主要使用的类型只有:varchar(128)、char(1)、date、number(15)这四种,稍微提及一下,char的长度是固定的、varchar的长度是可变化的;char的效率比varchar效率高<这也是标记状态的字段一般均使用char(1)来定义数据类型>,因为char初始化时已经在硬盘上申请好了空间,而varchar在使用时才分配空间,所以使用时要先分配空间,故而效率低;date是日期类型,具体显示成什么样子那是显示问题,它的本质上还是一个日期类型。number类型是存数字的,varchar和char毕竟存的是字符串;当然了number(5)表示存5位整数,number(5,2)表示存5位数,其中2位小数。<如果表的主键用NUMBER类型,在用“SELECT * FROM TEST WHERE ID = xxx”这种类型的SQL语句时比之VARCHAR类型的要快?因为VARCHAR类型如果较长的话,数据库将会逐个逐个字符比较,这样,它找出该条记录的速度比较慢。>
  3. 重点看一下会员表,因为任何一个系统:电商平台、互联网金融、在线教育、O2O都需要保存用户的登陆记录。T_Login_Token表,token的原则是注册或首次登陆成功后下发,每次登陆成功后修改,同时这个表中还记录了登陆的设别手机型号,序列号等详细设备信息。T_Login_History对登陆历史做了记录,以后可以用于用户行为监控,以及万一出现金融事故之后,可以查找线索。另外还有对接第三方的短信验证表、银行卡表、身份证验证表。

上图的表示详细的表结构,应该蛮详细的,尤其是对设备号的跟踪,登陆token的记录等。

 

接下来,再来回顾一下系统依赖图, 对于用户来说,他们的视角是ios、android、pc、h5四个入口,这四个入口用于对外展现公司的产品目录,大部分情况下他们的交互是与后台通过接口来交互,也有少部分情况需要不同的设备之间进行交互。对于后台的交互,Controller对于相应的请求request,做出相应的业务逻辑处理后,封装到response返回给四个终端。

上图所示,定义的接口规范是用于终端和后台进行的数据交互,最常用的可以使用jQuery封装好的ajax来获取请求。下面是一个Android客户端需要调用H5的时候定义的一些公共接口文档。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/296460.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux下添加普通帐号

Linux下系统管理员其中一个很重要的职能就是帐号管理.一般来说很多比较好的发行版本都会不建议用户使用root用户登录系统的,因为root用户的权限实在太大了,一不小心就可能破坏了系统.因此我们一般使用普通帐号登陆系统,而要使用普通帐号登陆就必须拥有普通帐号.本文将介绍几种添…

mysql数据压缩存储_压缩文本,然后存储在mysql数据库中

I am developing a web application using php and MySQL. I am compressing the text using gzcompress() php function before storing in MySQL database / storing compressed form of text in database. My Question is that is this OK? to store compressed form? Or …

Abp VNext 集成sharding-core 分表分库

ShardingCore 易用、简单、高性能、普适性&#xff0c;是一款扩展针对efcore生态下的分表分库的扩展解决方案,支持efcore2的所有版本,支持efcore2的所有数据库、支持自定义路由、动态路由、高性能分页、读写分离的一款组件&#xff0c;如果你喜欢这组件或者这个组件对你有帮助请…

引热议!多所高校明文规定:不再给部分全日制研究生安排宿舍

全世界只有3.14 % 的人关注了爆炸吧知识本文转自募格学术。近日&#xff0c;高校宿舍问题频发。矛盾点基本都集中在宿舍加塞人&#xff0c;宿舍环境不好&#xff0c;为了迎接新生强制老生搬宿舍但宿舍环境一言难尽等...... 不过好歹也都算解决了研究生住宿的问题。但近日&#…

学习笔记:log4j.properties配置

示例&#xff1a; 1 log4j.debugtrue 2 log4j.rootLoggerDEBUG,stdout,D //所有输出都会用到这里的appedder3 log4j.logger.com.test.serverDEBUG,E //为特定的的包指定输出4 //output log to console5 log4j.appender.stdoutorg.apache.log4j.ConsoleAppender 6 log4…

Unity 游戏开发技巧集锦之使用忍者飞镖创建粒子效果

Unity 游戏开发技巧集锦之使用忍者飞镖创建粒子效果 使用忍者飞镖创建粒子效果 游戏中&#xff0c;诸如烟、火、水滴、落叶等粒子效果&#xff0c;都可以使用粒子系统&#xff08;particle system&#xff09;来实现。例如&#xff0c;《明朝传奇》中的篝火&#xff0c;如图2-3…

“.NET研究”【Android开发教程】一、基础概念

Android操作系统 Android是一个基于Linux、使用java作为程序接口的操作系统。他提供了一些工具&#xff0c;比如编译器、调试器、还有他自己的仿真器&#xff08;DVM — Dalvik Virtual Machine&#xff09;。Android是由google领导的Open Handset Alliance开发的。 Android使用…

落在我手里,今天你能嫁出去算我输!

1 今天你能嫁出去算我输▼2 好像拍到了某些不可描述的画面▼3 猫猫&#xff1a;人呢&#xff1f;掉哪儿了&#xff1f;▼4 像极了下决心运动的你▼5 据最新研究欲火焚身这个词是很有科学依据的▼6 按这么说至少能保证说上话▼7 这不是普通狗仔了已经是海狗仔了▼你点的每…

mysql 5.6 slave stop_mysql 5.6 Replication 参数

花了一天的时间&#xff0c;看了mysql 5.6 Replication 章节内容&#xff0c;其中的一些参数做了一下笔记1&#xff1a;binlog_format 默认值是&#xff1a;statement有效值: ROW,基于行的复制STATEMENT 基于语句级别的复制MASTER_LOG_POS,MIXED 基于以上2种混合都有个各自的…

记一次 .NET 某资讯论坛 CPU爆高分析

大概有11天没发文了&#xff0c;真的不是因为懒&#xff0c;本想前几天抽空写&#xff0c;不知道为啥最近求助的朋友比较多&#xff0c;一天都能拿到2-3个求助dump&#xff0c;晚上回来就是一顿分析&#xff0c;有点意思的是大多朋友自己都分析了几遍或者公司多年的牛皮藓问题&…

内存调试技巧

内存调试技巧 2007 年 6 月 21 日 本文将带您了解一些良好的和内存相关的编码实践&#xff0c;以将内存错误保持在控制范围内。内存错误是 C 和 C 编程的祸根&#xff1a;它们很普遍&#xff0c;认识其严重性已有二十多年&#xff0c;但始终没有彻底解决&#xff0c;它们可能严…

CSS中的!important属性用法

由于IE并不严格执行W3C标准&#xff0c; 而又几乎垄断了浏览器市场。 所以作为一名合格的网站制作人员&#xff0c; 必须要针对不同的浏览器进行微调。 实现不同浏览器之间兼容的方法有很多&#xff0c; 比如利用JS探测用户的浏览器类型&#xff0c;从而调用不同的样式表。 或者…

java中equals和==的区别

值类型是存储在内存中的堆栈&#xff08;以后简称栈&#xff09;&#xff0c;而引用类型的变量在栈中仅仅是存储引用类型变量的地址&#xff0c;而其本身则存储在堆中。操作比较的是两个变量的值是否相等&#xff0c;对于引用型变量表示的是两个变量在堆中存储的地址是否相同&a…

数学课本上的几大变态之处

全世界只有3.14 % 的人关注了爆炸吧知识数学课本上的几大变态--完--

使用Redis set 解决数据的唯一性问题

前言最近遇到一个问题&#xff0c;就是接收第三方数据的时候&#xff0c;类似这种直播数据&#xff0c;由于业务的缘故&#xff0c;导致对方给的数据每次都是全量的&#xff0c;而且请求很频繁&#xff0c;有时候一秒好几十次。直播数据一般都是刷刷刷的&#xff0c;这个大家或…

mysql集群从节点无法启动_一次galera cluster集群故障节点无法启动问题排查

现象环境&#xff1a;Server version: 10.0.25-MariaDB-wsrep MariaDB Server, wsrep_25.13.raf7f02e配置文件&#xff1a;[rootnode-23 mariadb]# more /etc/my.cnf[mysqld]server_id3bind_address node-23port 3306datadir/var/lib/mysqllog-error/var/log/mariadb/mariadb…

DbVisualizer 8 解决中文乱码问题

DbVisualizer 8 解决中文乱码问题 原文http://blog.chinaunix.net/uid-26640696-id-3128544.html 在SQL Commander中&#xff0c;sql语句中如果有中文&#xff0c;显示是‘口口口’。解决办法如下&#xff1a; 在Tools->tool Properties->General->Appearance->Fon…

webform 页面传值的方法总结

ASP.NET页面之间传递值的几种方式 页面传值是学习asp.net初期都会面临的一个问题&#xff0c;总的来说有页面传值、存储对象传值、ajax、类、model、表单等。但是一般来说&#xff0c;常用的较简单有QueryString&#xff0c;Session&#xff0c;Cookies&#xff0c;Application…

【转】Android编程点滴(14) -- Android中资源文件夹res/raw和assets的使用

*res/raw和assets的相同点&#xff1a; 1.两者目录下的文件在打包后会原封不动的保存在apk包中&#xff0c;不会被编译成二进制。 *res/raw和assets的不同点&#xff1a;1.res/raw中的文件会被映射到R.java文件中&#xff0c;访问的时候直接使用资源ID即R.id.filename&#xff…

iNeuOS工业互联网操作系统,智慧用电测控应用案例

目 录1. 概述... 22. 系统部署结构... 23. 用电测控终端... 34. 系统应用介绍... 61. 概述通过物联网技术对引发电气火灾的主要因素(导线温度、电流和漏电流等)进行不间断的数据跟踪与统计分析&#xff0c;实时发现电气线路和用电设备存在的安全隐…