互联网金融平台微服务架构设计
按照孢子框架要义对互联网金融理财平台进行微服务架构设计。假设我们设计的目标是5年后的陆金所(https://www.lu.com/)。陆金所简介,平安集团旗下理财平台,是中国最大的网络投融资平台之一,2011年9月在上海注册成立,注册资本金8.37亿元,lufax结合全球金融发展与互联网技术创新,在健全的风险管控体系基础上,为中小企业及个人客户提供专业、可信赖的投融资服务,帮助他们实现财富增值。截至2014年1月末,注册用户已逾570万。
l 需求分析
参照陆金所,获得如下核心需求矩阵。
分类 |
功能 |
质量 |
约束 |
前端用户首页及其它 |
产品展示 |
及时响应、搜索引擎优化 |
|
|
本周特推 |
及时响应、搜索引擎优化 |
根据用户特性推荐 |
|
广告图片 |
及时响应、搜索引擎优化 |
可随时更换 |
|
公告 |
及时响应、搜索引擎优化 |
可随时发布 |
|
帮助中心 |
及时响应、搜索引擎优化 |
可随时发布 |
|
上证指数显示 |
及时响应 |
实时同步上证指数 |
|
促销活动 |
及时响应、搜索引擎优化 |
可随时发布 |
|
媒体报道 |
及时响应、搜索引擎优化 |
可随时发布 |
|
常见问题 |
及时响应、搜索引擎优化 |
可随时发布 |
|
产品搜索 |
及时响应、搜索引擎优化 |
|
|
投资某产品 |
及时响应、安全性、可靠性 |
多种投资品种,某些品种投资流程不一样 |
|
登录、注册 |
及时响应、安全性 |
符合国家安全等级标准 |
分类 |
功能 |
质量 |
约束 |
前端用户会员中心 |
账户总览 |
及时响应、安全性 |
|
|
我的投资 |
及时响应、安全性 |
|
|
我的借款 |
及时响应、安全性 |
|
|
资金记录 |
及时响应、安全性 |
|
|
充值、取现 |
及时响应、安全性、可靠性 |
|
|
账户安全设置 |
及时响应、安全性 |
|
|
我的陆金币 |
及时响应、安全性 |
|
|
我的商品 |
及时响应、安全性 |
|
|
我的消息 |
及时响应、安全性 |
|
|
推荐好友 |
及时响应、安全性 |
|
分类 |
功能 |
质量 |
约束 |
前端用户会员俱乐部 |
商品推荐 |
及时响应、搜索引擎优化 |
可随时设置规则,自动推荐商品 |
|
商品详情 |
及时响应、搜索引擎优化 |
|
|
购买商品 |
及时响应、安全性、可靠性 |
|
|
秒杀购买商品 |
及时响应、安全性、可靠性 |
|
|
活动类推荐 |
及时响应、搜索引擎优化 |
|
|
活动类详情 |
及时响应、搜索引擎优化 |
|
|
活动类玩法 |
及时响应、搜索引擎优化 |
目前包括:刮刮乐、抽奖、竞猜、竞拍 |
|
商品、活动搜索 |
及时响应、搜索引擎优化 |
|
|
新手指南 |
及时响应、搜索引擎优化 |
可随时更新 |
|
登录 |
及时响应、搜索引擎优化、安全性 |
会员登录后免登陆 |
分类 |
功能 |
质量 |
约束 |
后台运维业务需求 |
系统管理 |
及时响应 |
|
|
不同产品的运维管理 |
及时响应、可扩展性 |
|
|
不同产品的发布管理 |
及时响应、可扩展性 |
|
|
新闻及公告发布 |
及时响应 |
|
|
统计及报表 |
及时响应 |
|
宏观上讲,陆金所的运营目标是要打造一个互联网金融理财平台。目前产品包括:稳盈-安e、稳盈-变现通、稳盈-鑫保、安盈-票据、点金计划、大数金融等P2P理财产品,包括信托理财、粤股交等专享理财产品,还包括1000多只基金,以及零活宝、保险理财等投资理财产品。所有理财对于前端用户来说目的和操作只有一个,那就是投资,然后获取收益。从需求分析来看,互联网金融理财平台可以看做是一个金融类的电子商务网站,用户在其上选择产品并投资,这和传统电子商务选择产品进行购买操作类似。
上面的需求我简化了后台运维功能的需求,一方面我不是陆金所的开发人员,也不知道他们具体有哪些需求。另外一方面,金融产品后台运维管理及其复杂,因为涉及到钱,我们也不好去猜,所以就给出了几个简化的大项后台功能需求。
l 系统分析
要将需求进行系统分析,还需要有企业的运营目标做支持。我们假设陆金所5年后运营目标是:
产品方面:继续上线当前没有的理财产品(比如期货、现货投资)
注册人数:达到3000万
年营业额:达到1000亿
网站日访问量:3000万PV
产品购买并发:1000 QPS
那么我们按照上面的需求,进行系统分析,首先按大的职责将职责相同的划分为一个服务。并且有了上面这个经营目标,所有功能需求都需要增加一项“质量”特性,那就是“高并发”,高并发会影响到所有设计。如果只有几个用户在使用整个系统,那么显而易见一个应用,也不需要什么微服务,一个web服务器就搞定了所有事情。另外如果要将互联网金融平台质量特性排个序,很显然最重要的是安全性、可靠性,这毕竟是关系到用户的血汗钱。安全性和可靠性也会直接影响功能的技术实现,但并没有并发性影响性大。深入分析职责后把每一种功能的实现关键技术列出,如下:
分类 |
需求 |
实现子系统及服务 |
实现技术(软硬件结合) |
前端用户首页及其它 |
产品展示、产品搜索、促销活动、推荐服务 |
平台商品服务 |
集群部署、高速缓存、分布式缓存、搜索引擎技术、静态化 |
广告图片、公告、帮助中心、媒体报道、常见问题 |
平台商品服务 |
集群部署、高速缓存、分布式缓存、搜索引擎技术、静态化 |
|
投资某产品 |
平台会员服务 |
集群部署、消息队列、实时计算 |
|
用户会员中心 |
账户总览、我的投资、我的借款资金记录、账户安全设置、我的陆金币、我的商品、我的消息、推荐好友、充值 |
平台会员服务 |
集群部署 |
前端用户会员俱乐部 |
商品推荐、商品详情、活动类推荐、活动类详情、商品、活动搜索 |
俱乐部商品服务 |
集群部署、高速缓存、分布式缓存、搜索引擎技术、静态化 |
购买商品、秒杀购买商品、活动类玩法 |
俱乐部会员服务 |
集群部署、消息队列、实时计算 |
|
新增系统服务需求 |
商品推荐 |
日志采集系统 |
集群部署 |
充值、支付 |
第三方支付服务 |
集群部署 |
|
短信、邮件通知 |
通知服务 |
集群部署、调用多家第三方短信接口 |
|
安全性 |
服务授权及审计服务 |
集群部署 |
|
数据可靠性 |
自动对账服务 |
集群部署 |
|
前端页面 |
网站前端页面 |
平台网站WEB、WAP端 |
集群部署、高速缓存、分布式缓存、搜索引擎技术、静态化 |
网站前端页面 |
会员俱乐部WEB、WAP端 |
集群部署、高速缓存、分布式缓存、搜索引擎技术、静态化 |
|
运维管理 |
系统管理、不同产品的运维管理、不同产品的发布管理、新闻及公告发布、统计及报表 |
运维管理服务 |
集群部署 |
运维管理前端 |
运维管理WEB端 |
集群部署 |
|
手机客户端 |
手机客户端 |
Andriod APP及苹果APP |
|
如上所述,要支持运营目标的陆金所平台,可以分为大小十几个服务和子系统。系统划分的依据一方面是职责,一方面跟实现技术有关,同一职责下实现技术不同会被划分为两个服务,比如购买商品和商品展示原本属于同一个大的领域,但其因为实现技术和质量要求不同需要划分为两个模块。这是因为微服务和传统SOA最大的区别就是技术实现的个性化,只有个性化才能做好做专,并节省成本。另外根据系统分析,我们需要将第三方调用的地方抽取为服务,比如支付,将这些第三方调用抽取为一个单独的服务首先也是基于职责考虑,其次是基于稳定性考虑,因为调用第三方的东西通常存在很大的不稳定性,当某一厂商提供的API不能用时,我们的系统需要自动切换到可用的API。用户购买产品产生订单相关数据,订单数据关系到商品和用户两方面,如果是超高并发的系统,用户购买行为需要单独的服务,但限于互联网金融的特殊性-不会在同一时刻产生大量交易,我们将订单服务合并到用户账户服务,因为从数据角度来讲,订单属于每一个用户。
另外,金融平台和会员俱乐部从大的方面来讲是两个独立的系统。双方不共用任何基础数据,如果需要对方数据通过各自的接口进行交互。总的来说,虽然有十几个服务,但有些服务工作量并不是很大,有一些小的服务比如支付、通知等,一个开发人员可以开发好几个,所以总体上所需的开发成本比传统SOA还是要低很多,而且传统SOA技术门槛过高,对开发工程师要求较高,不像微服务只要定义好接口和规则,普通开发人员都能做。
l 逻辑架构
逻辑视图采用以下方法建立。
按照职责、通用性、技能及工作量综合考虑和计量,平台逻辑架构设计如下图:
十几个子系统分别分布在服务层、服务监控与治理、表现层。实体层和接口访问层虽然属于“层”,但它们并不单独发布,而是使用Jar包类库的方式提供给其它服务调用,是逻辑上的层。业务服务模块具有模块化,构件化的特点,并可以以各种不同的协议发布服务,包括SOAP、RMI、REST、JMS等。
l 开发架构
系统所需的工程,“[ ]”里面表示工程的名称。
所需公共模块工程:
开发环境:
编码:UTF-8
工具:Myeclipse 10
SVN:Site-1.8.22
注释插件:Jautodoc_1.8.0
Web服务器:Tomcat7
JDK: JDK1.7、 Java EE 5
开发环境:Maven 3
开发技术选型:
表现层:Bootstrap+Html+Jquery
MVC框架:Spring MVC 3.2
安全框架:Spring security 3.2
Rest接口实现:Spring MVC Rest
持久层:Mybatis3.2
缓存框架:Ehcache 2.6、Redis
日志管理:SLF4J 1.7、Log4j
数据库:MySql 5.5
l 运行架构
此架构设计视图的关注点是控制流组织。运行架构考虑一些非功能性的需求,如性能和可用性。它解决并发性、分布性、系统完整性、容错性的问题,以及逻辑视图的主要抽象如何与进程结构相配合在一起-即在哪个控制线程上,对象的操作被实际执行。
主要控制流包括:
l 页面访问控制流
由前端浏览器发起请求,部分请求首先会到缓存里查询,如果缓存里有结果则返回,如果没有缓存内容,则继续请求web服务器。也有部分无需缓存的请求直接访问web服务器获取数据。
l 日志采集
操作日志采集有两条控制流。一条是页面的采集js,直接将用户请求发送至日志采集接口,由日志采集接口提交给消息队列,再由日志采集模块从消息队列里获取数据并保存。另外一条是在web服务器层面拦截访问请求并提交给消息队列,并由日志采集模块获取和处理。
l 自动对账
由接口访问层拦截需要记账的操作,并转换成记账凭证提交到消息队列,由自动对账模块从消息队列中获取数据并保存。自动对账功能是由定时任务触发,由自动对账服务按规则进行对账计算,如果需要预警则产生预警数据。
l 手机APP访问
由手机app发起,部分请求首先会到缓存里查询,如果缓存里有结果则返回,如果没有缓存内容,则继续请求web服务器。也有部分无需缓存的请求直接访问web服务器获取数据。
l 运维管理
由浏览器发起请求,考虑到并发情况并不是很大,可不经过缓存服务器,直接与web服务器运维服务交互。
l 物理架构
此架构设计视图的关注点是物理节点(Node)分布,以及软件到硬件的具体映射关系。
主要关键技术:
l 负载均衡
1)采用负载均衡器来实现硬件级的四层交换负载均衡,或采用LVS来实现软件的四层交换负载均衡。并通过nginx实现反向代理服务器集群。
2) 使用zookeeper实现业务服务的负载均衡。
l 缓存
1)系统使用Varnish 集群以作为静态页面和图片的高速缓存。
2)使用Redis集群作为业务层的高速缓存,Redis具有高并发、高可用等特性。
l 文件存储
鉴于平台文件存储业务并不复杂,通过NFS实现文件存储集群。
l 消息队列
系统使用高并发、高稳定性消息队列rabbitmq实现异步消息处理。
l Docker集群
系统采用最新的虚拟机技术docker作为服务集群发布的载体。
相关推荐
内容概要:本文详细介绍了基于MATLAB GUI界面和卷积神经网络(CNN)的模糊车牌识别系统。该系统旨在解决现实中车牌因模糊不清导致识别困难的问题。文中阐述了整个流程的关键步骤,包括图像的模糊还原、灰度化、阈值化、边缘检测、孔洞填充、形态学操作、滤波操作、车牌定位、字符分割以及最终的字符识别。通过使用维纳滤波或最小二乘法约束滤波进行模糊还原,再利用CNN的强大特征提取能力完成字符分类。此外,还特别强调了MATLAB GUI界面的设计,使得用户能直观便捷地操作整个系统。 适合人群:对图像处理和深度学习感兴趣的科研人员、高校学生及从事相关领域的工程师。 使用场景及目标:适用于交通管理、智能停车场等领域,用于提升车牌识别的准确性和效率,特别是在面对模糊车牌时的表现。 其他说明:文中提供了部分关键代码片段作为参考,并对实验结果进行了详细的分析,展示了系统在不同环境下的表现情况及其潜在的应用前景。
嵌入式八股文面试题库资料知识宝典-计算机专业试题.zip
嵌入式八股文面试题库资料知识宝典-C and C++ normal interview_3.zip
内容概要:本文深入探讨了一款额定功率为4kW的开关磁阻电机,详细介绍了其性能参数如额定功率、转速、效率、输出转矩和脉动率等。同时,文章还展示了利用RMxprt、Maxwell 2D和3D模型对该电机进行仿真的方法和技术,通过外电路分析进一步研究其电气性能和动态响应特性。最后,文章提供了基于RMxprt模型的MATLAB仿真代码示例,帮助读者理解电机的工作原理及其性能特点。 适合人群:从事电机设计、工业自动化领域的工程师和技术人员,尤其是对开关磁阻电机感兴趣的科研工作者。 使用场景及目标:适用于希望深入了解开关磁阻电机特性和建模技术的研究人员,在新产品开发或现有产品改进时作为参考资料。 其他说明:文中提供的代码示例仅用于演示目的,实际操作时需根据所用软件的具体情况进行适当修改。
少儿编程scratch项目源代码文件案例素材-剑客冲刺.zip
少儿编程scratch项目源代码文件案例素材-几何冲刺 转瞬即逝.zip
内容概要:本文详细介绍了基于PID控制器的四象限直流电机速度驱动控制系统仿真模型及其永磁直流电机(PMDC)转速控制模型。首先阐述了PID控制器的工作原理,即通过对系统误差的比例、积分和微分运算来调整电机的驱动信号,从而实现转速的精确控制。接着讨论了如何利用PID控制器使有刷PMDC电机在四个象限中精确跟踪参考速度,并展示了仿真模型在应对快速负载扰动时的有效性和稳定性。最后,提供了Simulink仿真模型和详细的Word模型说明文档,帮助读者理解和调整PID控制器参数,以达到最佳控制效果。 适合人群:从事电力电子与电机控制领域的研究人员和技术人员,尤其是对四象限直流电机速度驱动控制系统感兴趣的读者。 使用场景及目标:适用于需要深入了解和掌握四象限直流电机速度驱动控制系统设计与实现的研究人员和技术人员。目标是在实际项目中能够运用PID控制器实现电机转速的精确控制,并提高系统的稳定性和抗干扰能力。 其他说明:文中引用了多篇相关领域的权威文献,确保了理论依据的可靠性和实用性。此外,提供的Simulink模型和Word文档有助于读者更好地理解和实践所介绍的内容。
嵌入式八股文面试题库资料知识宝典-2013年海康威视校园招聘嵌入式开发笔试题.zip
少儿编程scratch项目源代码文件案例素材-驾驶通关.zip
小区开放对周边道路通行能力影响的研究.pdf
内容概要:本文探讨了冷链物流车辆路径优化问题,特别是如何通过NSGA-2遗传算法和软硬时间窗策略来实现高效、环保和高客户满意度的路径规划。文中介绍了冷链物流的特点及其重要性,提出了软时间窗概念,允许一定的配送时间弹性,同时考虑碳排放成本,以达到绿色物流的目的。此外,还讨论了如何将客户满意度作为路径优化的重要评价标准之一。最后,通过一段简化的Python代码展示了遗传算法的应用。 适合人群:从事物流管理、冷链物流运营的专业人士,以及对遗传算法和路径优化感兴趣的科研人员和技术开发者。 使用场景及目标:适用于冷链物流企业,旨在优化配送路线,降低运营成本,减少碳排放,提升客户满意度。目标是帮助企业实现绿色、高效的物流配送系统。 其他说明:文中提供的代码仅为示意,实际应用需根据具体情况调整参数设置和模型构建。
少儿编程scratch项目源代码文件案例素材-恐怖矿井.zip
内容概要:本文详细介绍了基于STM32F030的无刷电机控制方案,重点在于高压FOC(磁场定向控制)技术和滑膜无感FOC的应用。该方案实现了过载、过欠压、堵转等多种保护机制,并提供了完整的源码、原理图和PCB设计。文中展示了关键代码片段,如滑膜观测器和电流环处理,以及保护机制的具体实现方法。此外,还提到了方案的移植要点和实际测试效果,确保系统的稳定性和高效性。 适合人群:嵌入式系统开发者、电机控制系统工程师、硬件工程师。 使用场景及目标:适用于需要高性能无刷电机控制的应用场景,如工业自动化设备、无人机、电动工具等。目标是提供一种成熟的、经过验证的无刷电机控制方案,帮助开发者快速实现并优化电机控制性能。 其他说明:提供的资料包括详细的原理图、PCB设计文件、源码及测试视频,方便开发者进行学习和应用。
基于有限体积法Godunov格式的管道泄漏检测模型研究.pdf
嵌入式八股文面试题库资料知识宝典-CC++笔试题-深圳有为(2019.2.28)1.zip
少儿编程scratch项目源代码文件案例素材-几何冲刺 V1.5.zip
Android系统开发_Linux内核配置_USB-HID设备模拟_通过root权限将Android设备转换为全功能USB键盘的项目实现_该项目需要内核支持configFS文件系统
C# WPF - LiveCharts Project
少儿编程scratch项目源代码文件案例素材-恐怖叉子 动画.zip
嵌入式八股文面试题库资料知识宝典-嵌⼊式⼯程师⾯试⾼频问题.zip