发现自己经常会一篇文章写了(一)之后,很久都不写(二),搞得最后自己都快要忘记了,所以这次赶紧把统一支付的文章给补上。
上次的文章中将统一支付的v1版本已经讲解ok了,但是还剩下两个问题:
- 服务器端没有办法做分布式
- 客户端对支付sdk进行插件式管理十分困难
我们一个个来说
一. 解决服务器端分布式的问题
解决这个问题的核心思路比较简单:
之前我们是把event的通知放在进程内存中,现在我们做成网络通信
由于支付的请求量本身不属于高并发,所以就放弃了打算直接写通知server的想法,转而看一下有没有什么简单的解决方案。
而由于自己之前redis的使用经历,恰好知道redis有一个pubsub模式,很适合做这种监听和通知的工作。
python的实现示例代码如下:
import time import config from share.vals import rds from share.utils import safe_str from gevent.timeout import Timeout from urllib import quote, unquote class RedisPubSub(object): """ 用redis订阅/发布消息 """ # 订阅频道 sub_key ...