社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Django

Django适合做大用户量的系统吗?

码农悟凡 • 6 年前 • 1310 次点击  

源于知乎问题: https://www.zhihu.com/question/265263719

分几点来答:

1. 首先,这其实是个技术选型题。

做技术选型的时候不能单纯的考虑性能,应该优先考虑业务类型,以及团队水平。另外的话,框架只是其中一环,还有配套呢。

如果是数据驱动型,尤其是要用到关系型数据库,那么选择Django足以,ORM会比较省事,但是性能损耗是个很明显的问题。不过还是看团队,如果大家玩flask或者bottle都贼溜,那么还要什么Django,自己造就行了。(题外话,不过你得提防比较水的人破坏整体结构)

如果下游是由很多微服务构成的,Tornado处理起来会有一定优势,用它的异步模型。(而不是用同步的方式写代码23333,要是这么用的话,你让flask怎么想,让bottle怎么想,让村东头的sanic怎么想

2. Django能抗多少量?

上面选型如果定下来Django了,那么剩下的就是“Where there is a will, there is a way”的问题。这个问题跟“Where there is a way, there is a will”的差别在于,并不是框架能支撑你到多大的并发量,而是你想要抗住很大的并发量,怎么优化现有框架。

当你的项目大到一定程度,瓶颈基本不在框架上(换语言另说,有人不懂框架乱搞的另说)。

我们用Django开发对外的产品不多,量级10w 100w的都有,但是我们上线前的准备都是朝着要抗足够高的流量目标的(谁没有一颗抗万亿流量的心呢),并且要能够通过增加机器提高承载能力。当然有些业务类型没法通过简单的增加机器来进行扩容,那只能通过其他途径优化单机的TPS。所以最终压测的结果都要远高于真实流量。百万量级的产品,扛起来并不费力。不过还是强调一下,看业务类型!

3. 用户体验问题

当量级变大之后,影响用户体验吗?

用户体验分很多方面,包括交互,设计,前端,后端。这里讨论的是后端,那么就说后端。后端对用户体验的影响只有一个——那就是响应时间。当你的网站或者接口有一个用户访问时,能在短时间内返回response,那么,当用户量达到10w时,是否能在同样的时间内返回response呢?这是个问题。

对于后端来说,把响应时间控制在合理的范围之内是很重要的。20ms和30ms或许差别不大,但是50ms跟100ms会有明显差别。

怎么衡量合理的返回时间呢?

这块还是得说点细节,比方说Django的系统,一个用户请求进来了,需要涉及多少次Redis查询,平均每次响应时间是多少;涉及到多少次内网或者外网的HTTP请求,平均响应时间是多少;涉及到多少次MySQL查询,平均响应时间是多少。

所以大家面试时都喜欢问一个问题:用户输入网址之后,到页面展示出来的详细过程是什么?

当你知道了所有的细节之后,你就能知道,如果系统只涉及到Redis查询,那应该多少ms内返回是合理的,如果你发现nginx日志里面的后端响应时间高于你的预期,那你就得排查下了。其他的也是类似。

所以当谈论到后端上的用户体验时,我自己的看法就是,能多快就多快的给他数据。磨磨唧唧,妥妥拽拽的最招人烦。


----EOF----- 

扫码关注,或者搜索微信公众号:码农悟凡 



今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/B8bcjCwkiH
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/5265
 
1310 次点击  
文章 [ 1 ]  |  最新文章 6 年前
rjm20083136
Reply   •   1 楼
rjm20083136    6 年前

是不是说,一般系统扩容,都是在运维上下功夫,用集群之类的