需要做一个服务器来处理客户端的数据库操作请求。响应能力要在10ms内完成,最大并发数1000个DB请求。数据库表操作简单的插入,更新和查询。但实时性要求较高。数据库我使用内存表一条操作大概0.2ms,1000个并发时光DB处理的时间已经超了。我看到网上提到集群处理。集群的具体做法不太明白啊。。我想能不能不使用socket+DB的集群处理。有没有别的方法呢。求各位大侠指点小弟下,十分感谢。

解决方案 »

  1.   

    1000个并发真是很难保证10ms的响应时间,不考虑网络,光是在本地1000个并发操作数据库都是很难做到10ms内完成。如果只是提交给服务器,不考虑是否执行完成则基本上能保证,服务器接收到命令后只管放到命令队列中即可,至于命令的执行由服务器循环从命令队列中取命令执行。另外这么大的并发数,数据库本身也得做集群,socket服务器程序也得做集群,一般的普通服务器上测试你这种应用的话并发数加到300肯定就崩了。
      

  2.   

    瓶颈在数据库这边,集群也不一定能够做到,
    集群如果是查询的话,可能会快,插入的话,得看你的语句复杂度,要注意index的设计
    只能多优化SQL方面的语句了
    我之前用Epoll+MySQL实现我的系统,带3000用户都吃力,后来发现是数据库这个地方瓶颈太厉害
    优化了以后,勉强带得起
      

  3.   

    感谢帮助。根据我现在的需求,如果1个DB服务器的话,吞吐量至少要达到10W条/秒才行。我用MySQL的最简单的内存表处理最简单的查询更新需要0.11~0.18ms。请问这个时间是MySQL的极限吗?如果不是,怎样提高呢。另外MySQL集群的话好像需要使用NDB引擎,执行速度好像很慢。。
      

  4.   

    MySQL Cluster这次项目我正在用,性能效果还没有得出最后结论
    之前单用MySQL,多方努力,都没有办法,只能够改进SQL语句和表结构