【发布时间】:2012-03-09 09:39:03
【问题描述】:
我目前正要开始设计一个新的应用程序。 该应用程序将允许用户插入一些数据并提供数据分析(以及报告),我知道这没有帮助,但数据处理将在后处理中完成,所以这对前端来说并不是很有趣。
当需要扩展以处理更多用户时,我想从正确的道路开始帮助自己。
我正在考虑使用 PostgreSQL 来存储数据,因为我已经使用过它并且我喜欢它(如果 NoSQL 也是一个不错的选择 - 因为并非所有数据都需要有关系 - 我喜欢 Postgres支持和社区,知道有一个大社区可以帮助我,我感觉更好),MySQL(innodb)也是一个不错的选择,tbh我没有真正的理由选择它而不是PostgreSQL,反之亦然(也许MySQL 更容易创建分片?)。
我知道几种编程语言,但我的强项是 Python、C/C++、Javascript。
我不确定是否应该为此任务选择同步或异步方法(我可以通过在负载均衡器后面运行更多同步应用程序来横向扩展)。
我已经开发了另一个大型项目,它教会了我很多关于并发的知识,但是每个选择都受到(整个团队的其他人,但主要受)系统管理员技能的影响,所以我们有使用 python (django) + uwsgi + nginx。
对于这个项目(因为它与另一个完全不同 - 那是一个电子商务,这是一个这样的 SaaS)我也在考虑使用 node.js,这将是一个尝试的好机会在一个严肃的项目中。 最繁重的数据处理将由后期处理完成,因此所有前端(用户网站)将主要是 I/O(+1 以使用异步环境)。
你有什么建议?
ps。我还必须记住,首先必须启动项目,所以我不能只考虑每个可能的设计,而是应该尽快开始编写代码:-)
我目前的想法是: - 从你知道的事情开始 - 尽可能简单 - 跟踪一切以发现瓶颈 - 向外扩展
因此,我部署同步还是异步并不重要,但我知道异步的性能要好得多,而且可以帮助我获得更好结果(从而降低成本)的每一件事都是可以评估的。
我很想知道您的经验(以及其他技术)... 我对这种可扩展性越来越偏执,我担心它会导致错误的设计(这也是我第一次为商业目的单独设计 = FUD)
如果您需要更多信息,请告诉我,我会尽力给您答复。 谢谢。
【问题讨论】:
标签: python node.js asynchronous scalability