高并发下的业务提交策略
最近在考虑电商平台高并发下订单处理问题,
总结如下:
1.绝大部份的BS系统最大的性能瓶颈我觉得应该在DATABASE
为什么?因为其它影响因素(网络,存储,WEB服务器......),是可以通过投入比较快速的解决
网络?通过增加带宽解决;存储?通过存储设备或区域存储,即可解决大容量,可靠性问题;
WEB服务器?可以通过四层或七层负 载均衡解决。
2.而DATABASE最大受限在INSERT,也就是业务上所说的“提交”或“保存”
为什么?对于数据的查询,可以通过缓存集群解决。提交或保存,带来的DB是write lock,是排它性;并随着数据量大或并发高,锁的粒度,锁的时长更大,问题更严重。
3.解决之道?
队列也。
HTTPSQS
● 非常简单,基于 HTTP GET/POST 协议。PHP、Java、Perl、Shell、Python、Ruby等支持HTTP协议的编程语言均可调用。
● 非常快速,入队列、出队列速度超过10000次/秒。
● 高并发,支持上万的并发连接,C10K不成问题。
● 支持多队列。
● 单个队列支持的最大队列数量高达10亿条。
● 低内存消耗,存储几十GB的数据只需不到100MB的物理内存缓冲区。
● 可以在不停止服务的情况下便捷地修改单个队列的最大队列数量。
● 可以实时查看队列状态(入队列位置、出队列位置、未读队列数量、最大队列数量)。
● 可以查看指定队列ID(队列点)的内容,包括未出、已出的队列内容。
● 查看队列内容时,支持多字符集编码。 配置使用如下 一、前期准备 依赖包 http://httpsqs.googlecode.com/files/libevent-2.0.12-stable.tar.gz http://httpsqs.googlecode.com/files/tokyocabinet-1.4.47.tar.gz http://httpsqs.googlecode.com/files/httpsqs-1.7.tar.gz
二、安装配置 tar zxvf libevent-2.0.12-stable.tar.gz cd libevent-2.0.12-stable/ ./configure --prefix=/usr/local/libevent-2.0.12-stable/ make make install
说明成功!
三、使用及帮助文档 启动: httpsqs -d -p 1218 -x /data0/queue https://code.google.com/p/httpsqs/