V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
HowardMei
V2EX  ›  Python

前几天有人讨论Python做的大型网站

  •  
  •   HowardMei · 2011-12-17 21:00:58 +08:00 · 16107 次点击
    这是一个创建于 4526 天前的主题,其中的信息可能已经有所发展或是发生改变。
    20 条回复    1970-01-01 08:00:00 +08:00
    HowardMei
        2
    HowardMei  
    OP
       2011-12-17 21:21:07 +08:00
    ayanamist
        3
    ayanamist  
       2011-12-17 21:23:40 +08:00
    说django慢是共识,那些用django不慢的都是hack的一塌糊涂的,你只能说他们用了django的代码组织形式而已。
    HowardMei
        4
    HowardMei  
    OP
       2011-12-17 21:28:53 +08:00
    先把数据库访问这个最大瓶颈解决掉才能怪django吧,disqus就搞了个单独的monkey patch:
    https://github.com/disqus/django-db-utils
    把database access解放出来,自己动手hack

    用其他框架,很多东西要自己搭,还不保证没有问题隐患,花的时间不一定少于hack django
    HowardMei
        5
    HowardMei  
    OP
       2011-12-17 21:31:28 +08:00
    可惜他家开源的只是个小小的patch,不过问题是django模版什么的真是性能瓶颈么?
    ayanamist
        6
    ayanamist  
       2011-12-17 23:57:50 +08:00
    @HowardMei 其实到处都是性能瓶颈的……template很慢,orm很烂
    lijia18
        7
    lijia18  
       2011-12-18 00:12:48 +08:00
    估计Disqus的Django改的只剩下url路由了。
    mywaiting
        8
    mywaiting  
       2011-12-18 00:32:32 +08:00
    赞 +1
    CMGS
        9
    CMGS  
       2011-12-18 00:36:13 +08:00
    国内某山用django也就用django的request和response,还有url路由做gateway。。。
    clc3123
        10
    clc3123  
       2011-12-18 19:12:58 +08:00
    Rails也是啊,你不hack,不动架构,不换组件,快不起来啊。
    HowardMei
        11
    HowardMei  
    OP
       2011-12-21 00:20:11 +08:00
    @ayanamist 可是目前看来发展最好的还是Django,想想在用户上万之前基本不用考虑性能问题,除非你用特别垃圾的服务器挑战自己的hack实力。舍不得花小钱的结果,就是把个系统搞得一塌糊涂,到处都是hack,最后维护成本飙升。成功的商业应用,服务器成本应该是占比微不足道的,人力成本才是大头。
    ohhe
        12
    ohhe  
       2011-12-21 00:44:27 +08:00
    先上线再hack。据说Google刚上线的时候,page和Brin写的代码烂的一塌糊涂。
    Ricepig
        13
    Ricepig  
       2011-12-21 00:46:42 +08:00
    rails比django传说还要慢。。。

    不过据说语言慢一点没关系,因为主要问题在数据库和io
    lanwen2005
        14
    lanwen2005  
       2011-12-21 00:53:42 +08:00
    性能不是主要的问题,rails的好处就是结构灵活,重构容易,hack容易。除了那种上亿级别的没经历过我不敢说。

    但是一般性互联网项目,把数据库跟缓存做好就能解决主要问题了。 数据库包括最基本的表结构设计(适当冗余),索引,使用各种内置orm时候注意sql的问题,有些可以直接用sql替代。

    缓存主要是缓存方式,缓存策略。memcache来做。

    nginx方面根据实际情况做配置优化(一些基本参数)

    然后就是应用服务器的配置。

    语言层面的那点性能差别真的完全可以忽略了。
    Los
        15
    Los  
       2011-12-21 02:23:35 +08:00
    @clc3123 「Rails也是啊,你不hack,不动架构,不换组件,快不起来啊。」我不明白你说这句话的依据来自哪里?
    huacnlee
        16
    huacnlee  
       2011-12-21 09:10:45 +08:00 via Android
    楼上几位谁告诉你Rails慢啊!慢是因为你们不会用。完全无需hack之类的
    clc3123
        17
    clc3123  
       2011-12-21 20:52:27 +08:00
    @huacnlee @Los

    Ruby自身慢都是不争的事实了,再放在帖子预设的背景(大型网站,新浪?QQ游戏?)下,Rails不做一些调教肯定快不起来。

    1.就说分库分表,我简单玩了下,rails确实有些方法可以调用,但却是十分的偏门。另外,在我使用的方法中,migration貌似不能用了,这得hack一下吧,但也可以手工管理数据库。

    2.比如说有个开放平台什么的,你提供对外的用户验证什么的服务,那我想是不是应该从原先的rails中剥离User这一块,放到个单独的rack服务中来更快点?这算是动架构了吧?

    3.如果为了团队开发协调之便,将不同类型业务分成多个rack或sinatra app挂载到主干rails中,你想为他们提供个统一的remember me功能和逻辑,你可以用warden,你可以说他是个gem,但我更加觉得这是人家hack后贡献出来的。

    4.据我所知,rails 3.1之前有人已经做了http streaming,这算是动了rails的view组件吧?

    5.用thin来做异步操作,但是我发现rails正常用法下有些不兼容(忘记具体场景了),sinatra没问题,我估计也要hack。。。

    6.ruby-china用的mongoid,这个几乎把active-record扔掉了吧?

    小弟才疏学浅,上面说的不对,请指教。其中有些纠结于定义和个人见解的言论,比如什么是hack,也请不要太认真了。
    Los
        18
    Los  
       2011-12-21 21:11:44 +08:00
    @clc3123 照你的说法,估计我喜欢在系统中用上redis估计也是hack了,用上resque做异步任务也是改了架构了,使用metal或者多个rack做api输出之类的绝对是改了架构,用gem cells进行更细化的view输出管理绝对是没天理的将rails改得面目全非了,加上omniauth gem进行支持QQ微博,新浪微博,renren之类的登录将rails又hack了N多,但无法否认,达到你说的大型网站新浪,QQ游戏?之类的流量的站点我不敢保证以自己的技术水准能支持得起来,但谁在乎呢?那时候钱够多了。
    huacnlee
        19
    huacnlee  
       2011-12-21 21:12:56 +08:00
    @clc3123 这问题我觉得永远也撤不清的,你上面所说的 hack 定义和我想的的有很大的差距,在我看来你上面说这些 hack 都是必然的做法,随遍那个框架都需要怎么做。

    另外纠正一点,ruby-china 用 Mongoid 纯粹和 ActiveRecord 没有多大关系,只是尝试而已,ActiveRecord 也是很快的。

    总之我说阐述的意思是, Rails 并不慢!
    weihuilee
        20
    weihuilee  
       2011-12-21 21:39:13 +08:00
    一句话,谁用谁知道。 很多东西道听途说,是很不正确的方式。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4767 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 05:33 · PVG 13:33 · LAX 22:33 · JFK 01:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.