分布式消息系统尝试(rabbitmq, celery, redis)
浏览:2769次 出处信息
最近在调整游戏的后台架构,之前因为需要快速出产品,所以整个代码都揉成一团,也基本没有做任何分层处理。现在服务器端的开发也开始逐渐招进来,所以打算打算换一套统一的架构,以后做新游戏只要做其中的业务逻辑即可。
其实之前在腾讯的时候,基本不会用到message queue这种,所有的分布式处理都是由自己写c++ server来互相通信的。这样的处理虽然开发量稍微大一点,但是性能和灵活性确实很高。
现在自己在外面做,虽然自己已经封装了一套server的框架出来,但是毕竟还有太多的轮子需要自己制造,所以就想到了之前一直有了解过celery,来看一下这种基于message queue的任务系统能达到什么性能。
RabbitMQ
celery首推的mq是rabbitmq,所以需要先安装一下:
在mac下用brew 安装:
brew install rabbitmq
安装成功之后,即可启动server了。
不过在这之前,我们先把后台管理的插件打开:
rabbitmq-plugins enable rabbitmq_management
之后执行如下命令,启动server:
rabbitmq-server
这个时候就可以通过 http://127.0.0.1:15672/ 来访问后台管理端了,默认的用户名和密码是guest guest,可以自己在页面上修改。截图如下:
Redis
celery也支持redis作为broker和backend,所以redis也需要安装一下,这里就不赘述了
Celery
安装命令为:
pip install celery
性能测试
新建 t.py:
from celery import Celery app = Celery(backend='amqp', broker='amqp://') @app.task def add(x, y): return x + y
以及测试文件 test.py:
import time from t import add t1 = time.time() result = add.delay(1, 2) print result.get() print time.time() - t1
启动celery worker:
celery -A t worker --loglevel=info -c 2
执行 python test.py 输出结果为:
0.545017004013
修改 t.py 为:
from celery import Celery app = Celery(backend='redis', broker='redis://') @app.task def add(x, y): return x + y
测试结果为:
0.603708028793
建议继续学习:
- 分布式缓存系统 Memcached 入门 (阅读:14888)
- Zookeeper工作原理 (阅读:10665)
- GFS, HDFS, Blob File System架构对比 (阅读:9520)
- Zookeeper研究和应用 (阅读:8656)
- 分布式日志系统scribe使用手记 (阅读:8200)
- 一致性哈希算法及其在分布式系统中的应用 (阅读:8087)
- 分布式哈希和一致性哈希 (阅读:7829)
- HBase技术介绍 (阅读:6977)
- 分布式系统的事务处理 (阅读:6227)
- Memcache分布式部署方案 (阅读:5599)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:规则引擎简介
后一篇:跨平台移动框架iMAG开发入门 >>
文章信息
- 作者:Dante 来源: Vimer
- 标签: celery redis) rabbitmq 分布式 消息系统
- 发布时间:2014-11-19 23:07:06
建议继续学习
近3天十大热文
-
[63] memory prefetch浅析
-
[53] 转载:cassandra读写性能原理分析
-
[52] 深入浅出cassandra 4 数据一致性问
-
[41] MySQL半同步存在的问题
-
[40] 字符引用和空白字符
-
[40] 获取Dom元素的X/Y坐标
-
[39] 《web前端最佳实践》—高维护性css
-
[37] 基本排序算法的PHP实现
-
[36] javascript插入样式
-
[36] JS中如何判断字符串类型的数字