nginx+redis队列做统计系统
来源:互联网 发布:剑侠情缘手游网络异常 编辑:程序博客网 时间:2024/06/05 11:24
location /echo {
set $access '$arg_uid-$arg_pf-$arg_tm-$remote_addr-$http_x_forwarded_for-"$http_user_agent"-$http_referer-$request';
echo $access;
}
location /stat {
set $access '$arg_uid-$arg_pf-$arg_tm-$remote_addr-$http_x_forwarded_for-"$http_user_agent"-$http_referer-$request';
redis2_query lpush stat $access;
redis2_pass 127.0.0.1:6379;
}
再使用redis的C API和MYSQL的C API建立链接。多线程LPOP转移redis队列中数据到MYSQL。进行异步运算。一个统计入库就OK了。
这个里面有几个问题
1:不能把redis队列压爆了,需要多线程程序快速转移到MYSQL,最好是长链多线程接执行。
2:C并非唯一转移方案。C++/JAVA都可以。只要是多线程高效的就OK。需要判断数据是否合乎规则。
3:我原来测试的时候没有找到在nginx配置文件中的取得系统时间,这个可以放在多线程程序中。或者通过http GET方式传递过来。
如果谁找到了可以留言给我。谢谢先。($time_local编译时会出错。nginx: [emerg] unknown "time_local" variable)
4:统计最难的是异步运算机制,数据入库非常简单。具体方案就不再公开了。
5:方案不唯一,nginx_lua可以替代HttpRedis2Module半把判断数据是否合乎规则放进去。不过不建议这样做。
我没有好的理由说明,只是不方便维护。数据是否合乎规则是在不停的变化着。放在nginx配置文件维护不方便。队列组合也不唯一。
可以使用httpsqs/nginx/其他。队列数据库不唯一,ttserver/redis/其他都可以。
综合考虑nginx+redisHttpRedis2Module/nginx+tt server HttpmemcModule/httpsqs+tt server/sqsdb
各方案的高效性能和稳定性还是建议使用nginx+redisHttpRedis2Module。
有许多好方案,但合适的才是最好的。比如我善长用PHP但PHP来做这些并不太适合。HttpRedis2Module和nginx lua比PHP更高效。
- nginx+redis队列做统计系统
- redis做消息队列
- 使用Redis 做队列服务器
- 用redis做消息队列
- Php +Redis 做消息队列
- Php +Redis 做消息队列
- Php +Redis 做消息队列
- 异步系统的性能调优记录(redis做消息队列)
- windows系统下nginx+tomcat+redis做负载均衡和session粘滞附整套解决方案
- 使用Redis做任务队列(Golang)
- Redis做消息队列文章两篇
- nginx+tomcat+redis做集群负载均衡
- Nginx安装,Nginx静态缓存,Nginx Gzip压缩,Nginx负载均衡,Nginx方向代理,Nginx+Tomcat+Redis做session共享
- Nginx 做系统的前端反向proxy
- NoSql学习之路一redis做消息队列
- Laravel中用Redis来做任务队列---出现重载问题
- Redis做消息队列文章两篇 的地址
- nginx+tomcat+redis 做负载均衡时session 共享实现
- shell实现的一个图书管理系统
- poj 2195 Going Home
- main重定义
- jQuery ajax - ajax() 方法
- 用java调用oracle存储过程
- nginx+redis队列做统计系统
- 解决jquery的多次绑定事件
- 如何在Tomcat本地模拟域名访问你的项目
- Spring IOC(控制反转)容器
- 各种排序算法分析
- IOS开发-学习论坛和开源网站
- BA - Business Analyst【转载内容】
- 启动jboss报java.lang.SecurityException: Invalid authentication attempt, principal=null
- c++实现一个小型算术表达式