万信金融 -项目介绍
这个项目所有的资料 链接:https://pan.baidu.com/s/1U0ii8hCK76yzm-8yvrSXzQ 提取码:9i2z
b站视频连接 https://www.bilibili.com/video/BV1Ub4y1f7rk
1 项目介绍
1.1 项目背景
P2P金融又叫P2P信贷,P2P是 peer-to-peer 或 person-to-person 的简写,意思是个人对个人,P2P金融是指个人与个人间的小额借贷交易,一般需要借助电子商务专业网络平台帮助借贷双方确立借贷关系并完成相关交易手续。 目前,国家对P2P行业的监控与规范性控制越来越严格,出台了很多政策来对其专项整治,P2P平台之前所采用的“资金池模式”与“第三方支付托管”(见下文定义)已经不合规了,国家主张采用“银行存管模式”来规避P2P平台挪用借投人资金的风险,通过银行开发的“银行存管系统”管理投资者的资金,每位P2P平台用户在银行的存管系统内都会有一个独立账号,P2P平台来管理交易,做到资金和交易分开,让P2P平台不能接触到资金,就可以一定程度避免资金被挪用的风险。 什么是资金池模式? 此模式下,投资人利用第三方支付/银行的通道先把资金打到平台的银行账户,P2P的平台就池子一样, 汇聚了投资人和借款人的资金,这个汇集资金的池子叫做资金池,是P2P平台方最容易跑路的模式。 什么是第三方支付托管模式? 此模式下,投资人/借款人除了要在P2P平台注册外,还要在第三方支付平台注册,也就是平台和第三方 各有一套账户体系。经过第三方支付的资金托管后,由于资金沉淀发生在第三方支付在银行的备付金账户上,P2P平台运营方只能看到投资人/借款人账户余额的变化及债权匹配关系,不能像资金池那样擅自挪用投资人的钱,但是这里存在安全风险的是第三方支付机构。 什么是银行存管模式? 此种模式下,涉及到2套账户体系,P2P平台和银行各一套账户体系。投资人在P2P平台注册后,会同时跳转到银行再开一个电子账户,2个账户间有一一对应的关系。当投资人投资时,资金进入的是平台在银行为投资人开设的二级账户中,每一笔交易,是由银行在投资人与借款人间的交易划转,P2P平台仅能看到信息的流动。
1.2 项目概述
本次课程开发的万信金融是一款面向互联网大众提供的理财服务和个人消费信贷服务的金融平台,依托大数据风控技术,为用户提供方便、快捷、安心的P2P金融服务。本项目包括交易平台和业务支撑两个部分,交易平台主要实现理财服务,包括:借钱、出借等模块,业务支撑包括:标的管理、对账管理、风控管理等模块。项目采用先进的互联网技术进行研发,保证了P2P双方交易的安全性、快捷性及稳定性。
1.3 功能模块
1.4 核心业务流程
通过项目原型进一步了解项目的业务流程,包括:首页、借钱、出借等等(参考“项目原型”)。
2 项目的技术架构
2.1 技术架构
万信金融采用当前流行的前后端分离架构开发,由用户层、UI层、微服务层、数据层等部分组成,为PC、App、H5等客户端用户提供服务。下图是系统的技术架构图:
各模块说明如下:
序号 | 名称 | 功能描述 |
---|
1 | 用户层 | 用户层描述了本系统所支持的用户类型包括:pc用户、app用户、h5用户。pc用户通过浏览器访问系统、app用户通过android、ios手机访问系统,H5用户通过h5页面访问系统。 | 2 | CDN | CDN全称Content Delivery Network,即内容分发网络,本系统所有静态资源全部通过CDN加速来提高访问速度。系统静态资源包括:html页面、js文件、css文件、image图片、pdf和ppt及doc教学文档、video视频等。 | 3 | 负载均衡 | 系统的CDN层、UI层、服务层及数据层均设置了负载均衡服务,上图仅在UI层前边标注了负载均衡。 每一层的负载均衡会根据系统的需求来确定负载均衡器的类型,系统支持4层负载均衡+7层负载均衡结合的方式,4层负载均衡是指在网络传输层进行流程转发,根据IP和端口进行转发,7层负载均衡完成HTTP协议负载均衡及反向代理的功能,根据url进行请求转发。 | 4 | UI层 | UI层描述了系统向pc用户、app用户、h5用户提供的产品界面。根据系统功能模块特点确定了UI层包括如下产品界面类型: 1)面向C端用户的万信金融交易平台。 2)面向B端服务的万信金融业务支撑系统。 | 5 | 微服务层 | 微服务层将系统服务分类两类:业务微服务、基础微服务。 业务微服务:主要为C端和B端服务提供业务服务,包括统一认证、交易中心、还款服务等。 基础微服务:为系统级的公共服务,不涉及具体的业务,包括文件服务、配置服务、调度服务等。 | 6 | 数据层 | 数据层描述了系统的数据存储的内容类型,持久化的业务数据使用MySQL。消息队列:存储系统服务间通信的消息,本身提供消息存取服务,与微服务层的系统服务连接。 索引库:存储标的信息的索引信息,本身提供索引维护及搜索的服务,与微服务层的系统服务连接。 缓存:作为系统的缓存服务,存储标的信息、验证码信息、用户信息等,与微服务层的所有服务连接。 文件存储:提供系统静态资源文件的分布式存储服务,文件存储服务器作为CDN服务器的数据来源,CDN上的静态资源将最终在文件存储服务器上保存多份。 | 7 | 外部系统接口 | 1)银行存管系统接口,借钱、出借交易全部通过银行存管系统存储订单信息。 2)支付宝、微信、网银支付接口,本系统提供支付宝、微信、网银三种支付接口。 3)短信接口,本系统与第三方平台对接短信发送接口。 4)邮件接口,本系统需要连接第三方的smpt邮件服务器对外发送电子邮件。 5)文件存储 ,静态资源文件的存储采用第三方文件服务方式,本系统初期采用七牛云文件存储 6)CDN,本系统与第三方CDN服务对接,使用CDN加速服务来提高本系统的访问速度。 | 8 | 银行存管系统 | 目前国家主张采用“银行存管模式”来规避P2P平台挪用借投人资金的风险,通过银行开发的“银行存管系统”管理投资者的资金,每位P2P平台用户在银行的存管系统内都会有一个独立账号,P2P平台来管理交易,做到资金和交易分开。P2P平台需要与银行存管系统接口,存储借款人和投资人之间的交易信息。 | 9 | DevOps | DevOps(英文Development和Operations的组合)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。本项目供了许多开发、运营、维护支撑的系统,包括: Eureka服务治理中心:提供服务治理服务,包括:服务注册、服务获取等。 Spring Cloud Config服务配置管理中心:提供服务配置管理服务,包括:配置文件更新、配置文件下发等。 Hystrix Dashboard服务熔断监控:监控熔断的请求响应时间、成功率等 。Zipkin服务追踪监控:监控服务调用链路健康情况。 Jenkins持续集成服务:提供系统持续集成服务。Git/GitLab代码管理服务:提供git代码管理服务。 ELK日志分析服务:提供elk日分析服务,包括系统运行日志分析、告警服务。 Docker容器化部署服务:将本系统所有服务采用容器化部署方式。 Maven项目管理工具:提供管理项目所有的Java包依赖、项目工程打包服务。 |
业务流程举例: 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+
|