异步提交数据库,缩短请求的响应时间。
来源:互联网 发布:户外地坪漆 知乎 编辑:程序博客网 时间:2024/06/05 11:39
我想众多项目的瓶颈应该是数据库的瓶颈。从数据库角度讲,SQL语句的优化、数据库配置优化、读写分离等此类的技巧估计并不新鲜,我只从架构角度上来给大家分享一些经验。
在如今众多高并发的项目中,缓存是不可缺少的部分。众所周知,缓存可以有效的缓解数据库的压力,所以就有了缓存数据库的概念。据我了解,目前为止市面上高效的缓存数据库软件都是收费的,例如电信的数据库就是类似于缓存数据库这种。
如何构建自己的缓存数据库?
这里有一个核心的问题就是异步提交。我们拿目前为止最流行的组合php+memcache+mysql来说,通常写的操作都是php来接收请求,然后用php来执行sql语句,向数据库写入数据,完成之后数据库向php反馈,php向客户端返回结果,当写入量很大的时候数据库的IO就会成为整个过程的瓶颈。再此我们引入一个概念“update server”,这个模块的作用就是接受一个请求,然后向数据库写入数据。由此,以上的过程就可以变为,php接收请求,然后php异步通知update server,然后php向客户端返回结果,此时update server接收到请求之后再向数据库来写入数据。这样就会大大减轻php端处理请求的时间。
到这里,我们可能又遇到一个问题,如果updateserver写入mysql时间过长,而此时php又要执行查询操作,最后就会出现脏读的问题。这时缓存服务器就可以轻松解决这个问题,首先我们把数据先写入memcache,然后再去通知update server来提交到数据库,而php执行查询的之后会先去读memcache里面的数据,如果没有,再去数据库查询,这样就解决了脏读的问题。
总结以上几点,我们得出一个部署方案,php直接读写memcache,updateserver负责向mysql写入数据。关于update server上运行什么脚本,这个可以随意,php或者c++等都可以,当然c++要好一些。这个方案虽然增加了服务器内存的成本,但是大大缩短了了请求的响应时间,提生了用户的体验。
- 异步提交数据库,缩短请求的响应时间。
- 缩短Windows7系统“程序未响应”的时间
- 缩短Windows 7程序响应时间技巧
- Tapstry 中 异步提交form请求的与页面响应(原创)
- 缩短MySQL innodb数据库关闭时间的技巧
- 异步处理并不能减少单次请求的响应时间
- 关于Web开发应用中缩短Web响应时间的技术研究
- 缩短java的开发时间!
- loadrunner 中的90%的请求响应时间
- bnu1252 缩短的时间 C语言版
- JVM优化-缩短eclipse的启动时间
- solrCloud 选举时间缩短的方法
- JVM优化:缩短eclipse的启动时间
- unity3d缩短splash screen的时间
- 缩短网站域名的DNS解析时间
- windows下缩短time_wait的时间
- windows下缩短time_wait的时间
- windows下缩短time_wait的时间
- QT 的点点滴滴
- C# 日期比较 方法
- 内存的等资源的释放
- Debian works with my T410s.
- 魔兽世界 windows 7 下 界面 问题
- 异步提交数据库,缩短请求的响应时间。
- Android源码中添加 修改应用
- DIY 无人机 ---- 硬件改造可行性论证
- 使用exe4j+inno setup加入JRE生成脱离Java环境的安装程序(图解)
- 运营管理
- NDK mk 文件分析
- MySQL之Explain
- 绿色建筑评价标准(GB/T 50378-2006)
- 关于jsp中session传值与取值,请高手指教