某系统架构

架构图

架构图

概览

本系统架构,是以实现一个高可用、可伸缩性强、用户体验佳、安全性好为目标而设计的。

各层说明

前端层

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远程服务调用方案。

1
2
3
透明:使得RPC接口管理变得透明;
伸缩性:系统平行扩展很方便,可以根据业务量,很简单的弹性上下架服务实例;
监控:可对接口的调用做监控,次数、效率等等,对暴露的问题提前优化;
  • MQ

使用了可靠的消息队列,添加了ack机制及发送策略;

使得系统间解耦,可靠消息机制,也保证了系统间数据的一致性;

监控

采用zabbix,对各中间件、服务进程进行了监控,出现问题实时报警;

第三方依赖

  • 天翼

    发短信

  • 创蓝

    发短信

  • 微信

    使用其提供的公众号相关接口,以及支付功能;

  • 支付宝

    使用其提供的支付功能;

  • 拉卡拉

    使用其提供的支付功能;

  • APPLE PAY

    使用其提供的支付功能;