基于P2P万信金融--day01 分布式事务

本次国庆做的是万信金融项目,可以利用本次的时间在熟悉熟悉里面的Swaggui和Apllo项目的相关经验,可以增强自己对里面各个中间件,熟悉里面的过程,了解项目流程。下面这个是项目介绍的相关背景,这个就是最新的P2P的项目。

下面是项目的初始化的过程,里面包含由项目的各个部分,接下来则分别各个介绍,则进行部分讲解

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.1 技术架构 
万信金融采用当前流行的前后端分离架构开发,由用户层、UI层、微服务层、数据层等部分组成,为 PC、App、H5等客户端用户提供服务。下图是系统的技术架构图:

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

万信金融 -开发环境搭建

1 服务端搭建

1.1 数据库环境

本项目使用MySQL数据存储数据。
1)安装MySQL数据库(v5.6.5+) 端口号默认使用3306,请自行安装并启动MySQL数据库
2)执行下列SQL脚本导入数据 执行wanxinp2p-init.sql

创建P2P平台数据库并导入初始数据 执行wanxindepository-init.sql 创建银行存管系统数据库并导入初始数据

1.2 微服务基础工程 
1.2.1 开发工具配置 
服务端工程使用Intellij IDEA开发(请使用2018以上的版本)。 1、直接用IDEA打开课件提供的基础工程wanxinp2p(在day01课件的代码文件夹中)。

2、配置maven环境 关于maven仓库有以下配置方法:
1)在setting.xml中配置私服地址(企业最常用)

2)从中央仓库下载 不作任何配置,maven自行从中央仓库下载。
3)使用本地仓库(学习期间使用) 本课程使用本地仓库配置。

1.2.2 了解基础工程 
1)直接用IDEA打开课件提供的基础工程wanxinp2p(在day01课件的代码文件夹中),打开后的基础工 程结构如下图所示

 
wanxinp2p:这是整个项目的父工程,管理依赖环境

wanxinp2p-api : 存放整个项目的API( 接口+各种实体类 )

wanxinp2p-common: 存放整个项目的通用组件( 各种业务封装类+工具类 )

wanxinp2p-gateway-service :网关微服务,端口号53010

wanxinp2p-consumer-service:用户中心微服务,端口号53050

wanxinp2p-discover-server:服务注册中心(Eureka),端口号5300

2)基础工程关系

1.3 Apollo配置中心 

在动手编程之前需要先学习下Apollo配置中心,本项目中各个微服务的大部分配置信息由Apollo统一管理

1.4.2 打开基础工程(Apollo环境)并测试 
在“代码”文件夹中,有一个“wanxinp2p_apollo”项目,这是使用Apollo环境的微服务基础工程,直接右 键用IDEA打开即可,可以浏览一下这些基础工程与前面的变化。
分别启动这几个基础工程,然后进行测试:
1、访问Eureka服务注册中心
2、直接访问一个Controller进行测试

2.1.4 Swagger生成文档

猜你喜欢

转载自blog.csdn.net/zgz102928/article/details/108904431