用Python 和 MongoDB 构建千万级用户的后台靠谱吗
1个回答
展开全部
1. 所谓的千万级用户,还是有很多种不同的。大概的,可以根据读写频率的比例来划分,如读多写少(资讯类)、读多写多(社交类)、读少写多(记录类,如用户行为追踪等)
2. 既然楼主问的是python和mongodb,我先正面的回答一下。
python的问题在于纯cpu运算性能低以及多线程的GIL限制,前者对于一般应用基本没影响(绝大部分的CRUD服务瓶颈都在IO);后者有必要时完全可以通过多进程方式绕过。
mongodb的问题在于无法完成复杂的多表连接查询。但这点在千万级海量服务中,本来就应该避免的,而且mongodb自带的replicationset、GridFS等分布式机制很适合用于海量服务中。
3. 楼上也很多朋友提到关键是架构设计,这点我也万分赞同。设计海量服务系统,很重要的一点是“大系统小做”、“分而治之”,换句时髦点的说法叫“微服务”。纵向的把不同的业务模块拆分开来,根据不同的业务特点选用最适用的技术(有的可以定时缓存放弃强一致性,有的需要严格的ACID保障;有的做简单CRUD用python这种脚本语言杠杠的;有的比如做大规模的图片处理等烧CPU业务果断上C/C++);横向把海量数据分区存放,保证单个节点(表/库/机器/集群)数据操作性能可控。这是最考验架构师功力的地方,也是后台开发这个行当的魅力所在
2. 既然楼主问的是python和mongodb,我先正面的回答一下。
python的问题在于纯cpu运算性能低以及多线程的GIL限制,前者对于一般应用基本没影响(绝大部分的CRUD服务瓶颈都在IO);后者有必要时完全可以通过多进程方式绕过。
mongodb的问题在于无法完成复杂的多表连接查询。但这点在千万级海量服务中,本来就应该避免的,而且mongodb自带的replicationset、GridFS等分布式机制很适合用于海量服务中。
3. 楼上也很多朋友提到关键是架构设计,这点我也万分赞同。设计海量服务系统,很重要的一点是“大系统小做”、“分而治之”,换句时髦点的说法叫“微服务”。纵向的把不同的业务模块拆分开来,根据不同的业务特点选用最适用的技术(有的可以定时缓存放弃强一致性,有的需要严格的ACID保障;有的做简单CRUD用python这种脚本语言杠杠的;有的比如做大规模的图片处理等烧CPU业务果断上C/C++);横向把海量数据分区存放,保证单个节点(表/库/机器/集群)数据操作性能可控。这是最考验架构师功力的地方,也是后台开发这个行当的魅力所在
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询