近期刚改版了上月上线的一个产品应用,以应对将来可能的高并发问题。
第一版产品采用的是Jquery,Nginx,PHP(CI框架),Memcache,Mysql这种常用的架构。作为一名PHP工程师对于这种架构已经非常的熟悉了,目前站点并发并不是很高,线上环境使用的是阿里云主机,1.5G的内存,PHP并发能支持400~500左右。因为使用memcache的原因,如果在并发特别高的情况下,除了带宽瓶颈以外就可能会是一直引以为傲PHP瓶颈了。增加机器便会增加成本,对于一个刚刚上线运行的项目,要求公司扩大投入是不合理的。
于是在第二次改版的过程中我们尝试放弃PHP,采用OpenResty中的LuaJit模块直接读取redis中的数据以Json的格式返回给前端页面展示,使用PHP脚本定时执行向redis里面更新内容。这样整合个前端过程就没啥php与mysql哈事了(除后端定时执行脚本之外)。凭着nginx与redis的高并发,还怕啥呀!。下图为新的架构主要结构。
Redis是一个高性能的key-value数据库。redis的出现,很大程度补偿了memcache这类key-value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。它提供了Python,Ruby,Erlang,PHP客户端,使用很方便。 性能测试结果:SET操作每秒钟110000 次,GET操作每秒钟81000 次 有了Redis作为保障,新架构就可以开搞了,使用到的主要关键词由openResty,LuaJit,Lua,Redis,PHP,PHPRedis,JSon,JQuery等组成。读者可以搜索下各名词了解它们的功能。下面是openResty中的Nginx配置: nginx.conf server { listen 80; root/home/boolean/Htdocs/lib.bincent.com; index index.htmlindex.htm; server_namelib.bincent.cn; #默认请求Html转发到apache,这里你可以根据自己情况配置 location / { proxy_redirect off; proxy_set_header HOST$host; proxy_set_headerSERVER_ADDR $server_addr; proxy_set_headerSERVER_PORT $server_port; proxy_set_headerREMOTE_ADDR $remote_addr; proxy_set_headerREMOTE_PORT $remote_port; proxy_pass http://lib.bincent.cn:8080; } #更新redis location /set_redis { internal; set_unescape_uri$key $arg_key; set_unescape_uri$val $arg_val; redis2_queryset $key $val; redis2_pass127.0.0.1:6379; } #读取redis location /get_redis { internal; set_unescape_uri$key $arg_key; redis2_queryget $key; redis2_pass127.0.0.1:6379; } # 模拟的简单请求 location /json { default_typetext/html; content_by_lua_file/home/boolean/Htdocs/lib.bincent.com/lua/redis.lua; } } redis.lua文件 #通过URL更新redis functionsetRedis(key, val)
localres = ngx.location.capture('/set_redis', {
args= {
key= key,
val= val
}
})
ifres.status == 200 then
returntrue
else
returnfalse
end
end
#通过URL读取redis
functiongetRedis(key)
localcapture = ngx.location.capture('/get_redis', {
args= {
key= key
}
})
localparser = require 'redis.parser' --require redis.parser
localres, err = parser.parse_reply(capture.body)
returnres
end
#URL参数$_GET['a']
locala = ngx.var.arg_a
if'clean' == a then
--重置redis
ifsetRedis('love_number', 0) then
ngx.say("CleanRedis Is Success!")
else
ngx.say("CleanRedis Is failted!")
end
else
--读取redis
locallove_number = getRedis('love_number') + 1
setRedis('love_number',love_number)
ngx.say("CurrentLove Number Is: ", love_number)
end
|
- 浏览: 865887 次
- 性别:
- 来自: 上海
最新评论
-
zzuliuli:
很实用,一直关注
mysql的执行计划 -
rxin2009:
你好,最近在解决redis数据同步的问题,找到了tedis,但 ...
taobao/tedis的redis集群 -
zhangping2056:
楼主接下来要考虑页面静态化与细节上面的东西了
Nginx与Redis解决高并发问题 -
XieFuQ:
Tomcat的重启shell脚本 -
jovinlee:
jovinlee 写道 jov ...
Tomcat的重启shell脚本
相关推荐
springboot+Nginx+redis实现session共享,适合高并发场景有分流需求的开发者,项目里面包含了redis和nginx软件
Java高级互联网架构师系统培训班课程Java高级互联网架构师系统培训班课程Java高级互联网架构师系统培训班课程
使用Nginx+Lua+Redis来构建高并发Web应用,Curl请求Nginx,Nginx通过Lua查询Redis,返回json数据。
为处理高并发的请求,采用Nginx+Redis的非阻塞请求加内存数据库方式,采用Lua脚本处理简单业务,返回值为常用的Json
大型电商项目实战1:Redis+Rest+Linux+Nginx+Spring+SpringMVC实现JAVA高并发秒杀系统,baidu链接,谢谢
nginx 并发数问题思考:worker_connections,worker_processes与 max clients 如何在工作中提高Ngixn服务器性能?达到高效 并发 = 同步/异步/阻塞/非阻塞/进程/线程 The Complete NGINX Cookbook 如何改进 NGINX ...
提到高并发或者抗压力,有这种高qps经验的同学第一反应大都是Nginx+lua+Redis,网上也满天非那种高并发架构方案大都是这种,但是Nginx+lua来做接入层到底是怎么抗住压力的呢?本篇顺序:1、Nginx如何抗住的高并发,...
集群部署即一个应用多实例部署,通过负载均衡将客户端高并发求情分散到集群部署的多个实例中去,实例处理完客户端请求,将结果返回个客户端; 集群部署的服务器对外提供统一访问接口,后端的部署对客户端来说是透明...
第9章 Nginx高可用的实现 第10章 10个QA 第2部分 Nginx服务器的功能 第11章 限制流量 第12章 限制用户并发连接数 第13章 修改或隐藏Nginx的版本号 第14章 配置FLV服务器 第15章 Nginx的访问控制 第16章 提供...
1.大数据高并发架构实战案例分享-概述 2.Piranha安装快速搭建LVS负载均衡集群 3.LVS负载均衡DR模式安装调试介绍 4.LVS负载均衡深入进阶实战 5.LVS调度策略及负载均衡原理深入 6.LVS深入及NAT集群调试 7.Nginx反向...
第9章 Nginx高可用的实现 第10章 10个QA 第2部分 Nginx服务器的功能 第11章 限制流量 第12章 限制用户并发连接数 第13章 修改或隐藏Nginx的版本号 第14章 配置FLV服务器 第15章 Nginx的访问控制 第16章 提供...
第9章 Nginx高可用的实现 第10章 10个QA 第2部分 Nginx服务器的功能 第11章 限制流量 第12章 限制用户并发连接数 第13章 修改或隐藏Nginx的版本号 第14章 配置FLV服务器 第15章 Nginx的访问控制 第16章 提供...
商城项目是现在主流的分布式电商系统的解决方案,它可以实现高并发,高可用,以及负载均衡的特点被企业所青睐,它是结合了商品后台管理,前台商品展示,登录系统,订单系统,以及搜索和购物车系统与一体,帮助企业...
Java高级架构线路图学习路线内含Dubbo、Redis、设计模式、Netty、zookeeper、Spring cloud、分布式、 高并发等架构技术(nginx+redis+zookeeper+activemq+storm+dubbo+netty+jvm+并发编程锁+项目实战)点击链接加入...
我感觉很不错的宝贝,现在和大家分享,希望能够帮到大家,如果你需要可以下载看看,很适合喜欢研究技术的人员
PHP商品秒杀系统 高并发高性能的极致挑战 完整视频+源码 深入基础技能 Linux / Nginx / Mysql / Redis 基础平台工具,搭配PHP原生代码 不在局限框架选择 掌握系统设计与方法 从需求分析、数据结构创建 到基础功能...
【课程大纲】 第1篇-Linux 01-Linux简介及安装 共11页 第1篇-Linux 02-文件系统结构及...第2.9篇-Nginx部分-与Tomcat整合配置 共14页 第3篇-Memcached缓存篇 共30页 第4篇-Redis 共74页 第5篇-项目开发准备工作 共14页