Python/Django - 网络应用性能
我现在正在用Python和Django开发一个社交网络应用。最近我听说PHP在大型项目上的一些弱点,还有Hippo-PHP是如何帮助Facebook克服这些问题的。考虑到一个使用量很大的Python社交网络应用,你能告诉我是否也可以用类似的自定义工具来帮助这个Python应用吗?具体是怎样的呢?我想知道应用的哪个部分(或者层)需要用C++来编写?我知道这个问题比较宽泛,但我觉得有相关经验的人应该能给我一些帮助。
谢谢你!
3 个回答
你可以把PostgreSQL想象成Oracle数据库。根据我在网上找到的信息(因为我也是个初学者),这里有一个从小项目到大项目的数据库排序:
- SQLite
- MySql
- PostgreSQL
- Oracle
不要太早就想着扩展你的项目!当然,你可以提前做好准备,但大多数时候你根本不知道在哪里需要扩展,因此会在错误的方向上花费很多时间和金钱,直到你意识到这一点。
先启动你的网页应用,看看效果如何(我同意Spacedman的看法)。
根据我的经验,网页应用使用的编程语言通常不会成为瓶颈。大多数情况下,问题出在数据库上。很多时候,问题只是因为一行错误的代码(比如一个for循环),还有很多时候是因为忘记使用像memcached或任务管理这样的工具。正如所说的,先找出问题出在哪里。在大多数情况下,最好先检查其他地方,而不是直接把问题归咎于语言的速度(因为这很可能不是问题所在!)。
需要用C++重写的部分是Python中运行得太慢的地方。你需要找出性能瓶颈在哪里,可以通过负载测试来发现,或者等用户抱怨的时候再去查找。
当然,就算重写成C++也不一定能解决问题。你的瓶颈可能出现在数据库(可以考虑换到一个更快的数据库服务器,或者使用分片技术),也可能是磁盘、内存,或者其他任何地方。找到瓶颈后,想办法解决它,然后实施解决方案。在这些阶段之间要进行测试。这是一些通用的建议。
通常没有什么灵丹妙药,我想Facebook在尝试任何方案之前,肯定做了大量的测试和分析,找出了他们的瓶颈。