架构图
概览
本系统架构,是以实现一个高可用、可伸缩性强、用户体验佳、安全性好为目标而设计的。
各层说明
前端层
WEB、MOBILE、MERCHANT(商户服务器)
优点
- 提升开发效率
- 结构清晰
- 可读性强
- 可维护性强
- 前后端充分解耦
- 利于页面的加载优化
WEB/MOBILE模块层,为纯js、css、html(angularjs+requirejs)架构,与服务器交互使用restful api接口;
采用angularjs+requirejs前端js框架,在提升开发效率的同时,使得前端代码结构分明、清晰、可读性强,增加前端代码的可维护性,这是传统页面无法做到的。
同时,这种方式有助于前后端充分解耦,完全面向restful接口开,使得前后端开发人员剥离开,与传统的jsp相比,前端开发不需要参和后端服务器代码,更纯粹、更专注;
另外这种纯静态的结构,借助CDN可大大提高页面加载速度,提升用户提现;
API层
API(为商户后台提供接口)、MERCHANT-API(为商户提供交易接口)
这两个API模块都采用了Restful接口规范,均使用SSL保证通信安全:
- 安全性
- API 采用Oauth2.0标准协议,确保了接口安全性;
- MERCHANT-API 采用双向非对称加密,确保了接口安全;
- 高可用:前端采用SLB(阿里负载均衡),服务器内部使用nginx做反向代理;
- 缓存:REST设计的一个原则为有效利用缓存,所有POST、PUT和DELETE请求均不缓存,这一点由浏览器自身保证,无需额外的配置。对于GET请求,必须合理地配置缓存头,从而提高部分接口的响应效率;
业务层
所有业务逻辑都在这里
- 交易回调:处理各第三方支付系统的回调;
- BUSINESS:串联所有基础服务模块,通过Dubbo连接(下面中间件会介绍);
- 微信网关:处理所有与微信接口的调用;
- 后台:内部运营管理后台;
基础服务层
微服务架构(MSA)是一种架构概念,旨在通过将功能分解到各个离散的服务中以实现对解决方案的解耦,基础服务层之间,不直接调用,通过可靠的MQ来通信(下面中间件会介绍);
用户服务
提供用户相关基础逻辑接口,登录、注册等等;
订单模块
处理所有订单交易相关逻辑接口,提供查询接口、统计接口;
渠道模块
连接外部各种第三方支付系统,内部与订单模块交互;
账单模块
提供下载、存储所有商户在paymax的交易账单;
门店模块
提供所有门店系统相关接口;
商户服务
包含商户接入信息、资料等相关接口;
购物车模块
商户可在购物车下单购买所需要的渠道;
消息模块
提供sms、email发通知的功能;
api模块
提供商户后台接口,接口安全使用oauth;
merchant-api模块
提供交易相关接口,供商户服务器调用;
中间件层
ZOOKEEPER、REDIS、RDS、OSS、DUBBO、MQ
- Zookeeper
ZooKeeper是一个高可用的分布式数据管理与系统协调框架。基于对Paxos算法的实现,使该框架保证了分布式环境中数据的强一致性
使用zookeeper来处理分布式系统之间的协作,同时也保证了系统的一致性;
- Redis
配合zookeeper的leader模式,开发出高可用的redis集群,保证了系统的稳定;
在系统中主要是提供了高可用的内存缓存角色,从而大大提高了系统效率;
RDS
使用的是阿里高可用的mysql,很好的解决了单点故障等问题;
OSS
分布式文件存储系统,高可用;也利于做CDN优化加载,提升用户体验;
DUBBO
DUBBO是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案。
|
|
- MQ
使用了可靠的消息队列,添加了ack机制及发送策略;
使得系统间解耦,可靠消息机制,也保证了系统间数据的一致性;
监控
采用zabbix,对各中间件、服务进程进行了监控,出现问题实时报警;
第三方依赖
天翼
发短信
创蓝
发短信
微信
使用其提供的公众号相关接口,以及支付功能;
支付宝
使用其提供的支付功能;
拉卡拉
使用其提供的支付功能;
APPLE PAY
使用其提供的支付功能;