每日百万交易的支付系统,如何设置JVM堆内存大小?
1、支付背景的引入
先来看看,如果在一个电商系统里,一个支付系统大概应该是一个什么样的位置,如下图。
只要大家网购过,大概的流程都会非常的清晰,假设我们在一个APP或者一个网站里买东西,大体上都是对一些商品加到购物车里,然后下个订单,接着对订单进行支付,钱从我们的账户划拨到人家网站的账户里去,大致如此。
2、支付的核心业务流程
接着我们来讲一下支付的核心业务流程,大家先看下面的图。
通过上图标号序号的步骤,大家可以很清晰的知道这个流程了
首先用户在我们的商城系统提交支付一个订单的请求,接着商城系统把这个请求提交给支付系统,支付系统就会生成一个支付订单,此时订单状态可能是“待支付”的状态
然后支付系统指引用户跳转到付款页面,选择一个付款方式
然后用户发起实际支付请求,支付系统把实际支付请求转交给第三方支付渠道,比如微信或者支付宝,它们会去处理支付请求进行资金转移。
如果微信或者支付宝处理完支付之后,就会返回支付结果给支付系统,支付系统可以更新自己本地的支付订单的状态变成“已完成“
当然,其实一个完整的支付系统还包含很多东西。
比如还要负责对账以及跟合作商户之间的资金清算,支付系统得包含应用管理、账户管理、渠道管理、支付交易、对账管理、清算管理、结算管理,等各种功能模块,但是我们这里就关注最核心的支付流程即可。
3、每日百万交易支付系统的压力在哪里?
接着我们来考虑一下,一个每日百万交易的支付系统的压力到底集中在哪里呢?
比如上面的那个核心支付流程,我们的这套系统每日要发生百万次交易。
一般达到百万交易,要不然是国内最大的互联网公司,要不就是一个通用型第三方支付平台,对接各种APP的支付交易。
这个支付订单需要记录清楚比如是谁发起支付?对哪个商品的支付?通过哪个渠道进行支付?还有发起支付的时间?等等,诸如此类的信息。
其实大家通过上图都能明显看到&#