1 项目介绍
1.1 项目背景
P2P金融又叫P2P信贷,个人与个人间的小额借贷交易,借助电子商务网络平台帮助借贷双方确立借贷关系并完成相关交易手续。
什么是银行存管模式?
涉及到 2 套账户体系,P2P平台和银行各一套账户体系。投资人在P2P平台注册后,会同时跳转到银行再开一个电子账户, 2个账户间有一一对应的关系。当投资人投资时,资金进入的是平台在银行为投资人开设的二级账户中,每一笔交易,是由银行在投资人与借款人间的交易划转,P2P平台仅能看到信息的流动。
1.2 项目概述
项目包括交易平台和业务支撑两个部分,交易平台主要实现理财服务,包括:借钱、出借等模块,业务支撑包括:标的管理、对账管理、风控管理等模块。
1.3 功能模块
1.4 核心业务流程
2 项目的技术架构
2.1 技术架构
万信金融采用当前流行的前后端分离架构开发,由用户层、UI层、微服务层、数据层等部分组成,为PC、App、H5等客户端用户提供服务。下图是系统的技术架构图:
各模块说明如下:
业务流程举例:
1 、用户可以通过pc、手机等客户端访问万信金融平台。
2 、 系统应用CDN技术,对一些图片、CSS、视频等资源从CDN调度访问。
3、所有的请求全部经过负载均衡器。
4 、首先请求UI层,渲染用户界面。
5 、借款人登录系统发布标的,UI层通过网关请求服务层,服务层完成业务处理,将数据持久化到数据层。
6、投资人登录系统查询新的标的进行投标,其系统执行流程和发标过程一致,UI层请求服务层业务处理,服务层查询数据层并将数据持久化到数据层。
2.2 技术栈
下图是项目技术架构的简图,通过简图了解项目所使用的技术栈。
重点了解微服务技术栈:万信金融服务端基于Spring Boot构建,采用Spring Cloud微服务框架。
1 )基础设施
业务数据持久化采用MySQL,数据缓存采用Redis,采用RocketMQ的事务消息机制完成部分场景下的分布式事务控制,采用Elasticsearch完成标的信息搜索,与自研的分布式文件系统进行接口完成文件上传与分布式存储。
2 )组件
系统微服务基于SpringBoot+SpringCloud开发,数据库连接池采用Druid,POJO构建采用Lombok,日志系统采用Log4j2,Guava工具类库,Mybatis Plus持久层接口实现,Sharding-jdbc分库分表组件,Swagger接口规范组件,Elastic-job分布式任务调度组件,sentinel限流组件。
3 )接入
Zuul网关完成客户端认证、路由转发等功能,Ribbon完成客户端负载均衡,Feign完成微服务远程调用,Hystrix完成熔断降级处理,JWT提供前后端令牌管理方案。
4 )视图
平台支持H5、App等各种前端。
2.3 技术解决方案
1 、微服务技术应用于P2P金融业务解决方案
2 、接口规范SpringBoot+Swagger
3 、持久层编码 MyBatis Plus
4 、分布式系统配置中心:Apollo
5 、UAA认证方案:Spring Security Oauth2+JWT+ZUUL
6 、分布式事务解决方案(RocketMQ、Hmily、requestNo同步机制)
7 、分库分表解决方案:Sharding-jdbc
8 、分布式任务调度方案:Elastic-job
9 、安全交易方案:HTTPS+SHA1withRSA
10 、身份认证方案:百度AI
11 、短信验证系统方案:短信验证服务+第三方短信平台(腾讯)
2.4 软硬件环境
windows 7以上操作系统(64位)
至少8G内存,推荐12G以上
JDK 8+
Maven 3.2+
IDEA 2018+
MySQL 5.6.5+