kernel1983
2013-10-16 11:57:10 +08:00
一直以来的观点是, 如果数据库(本地或者在局域网内)的操作时间过长, 那么需要优化的是数据库, 以及联合查询, 另外该用NoSQL的用NoSQL, 该做cache的做cache ...
刚刚想到一个方法, 用tornado毕竟是可以做异步request的, 如果你的数据库真的很慢, 不如再开其他的tornado做block数据库操作(你可以用tornado wsgi多线程/多进程形式部署, 也可以用django, flask等), 然后通过API的形式将数据库返回过来. 相当于用tornado给你的数据库操作web化(写内部数据API)
这个是我刚才刚刚想到的, 原理就是用一些独立的进程去做费时的数据库操作, 这样你的主web tornado进程就可以异步畅通, 增加吞吐量. 这样就不需要为各个数据库写驱动了.
如果数据库在不同的机器上, 那么可以考虑将这些独立的数据操作tornado进程在数据库机器上部署. 使用wsgi多线程/多进程的好处是查询可以同时进行, 当然也可能卡死数据库. 使用tornado自己的单进程异步部署的时候, tornado还可以充当一个数据库操作队列的作用.
奇思妙想, 还没有经过实践