我用openresty重构可几个访问量比较大的接口,结果被否定了,被认为是异化了架构 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
qiongqi
V2EX    北京

我用openresty重构可几个访问量比较大的接口,结果被否定了,被认为是异化了架构

  •  
  •   qiongqi 2013-05-29 23:04:01 +08:00 via Android 11981 次点击
    这是一个创建于 4597 天前的主题,其中的信息可能已经有所发展或是发生改变。
    3个接口都是内部api使用的,访问量在5000rps左右,公司的业务处理和api层都是用PHP做的,我觉得这3个接口(一个读db的,一个读redis的,一个curl到平台服务的)逻辑简单,没必要用php来做,直接用openresty做好了,效率肯定只高不低,结果在提交之后被大头否定了,然后举了hiphop的例子,认为如果想快,就去让hiphop支持我们的代码就好了。。唉:-(
    第 1 条附言    2013-06-16 11:19:15 +08:00
    昨天在G+上竟然看到了有人转了下这个帖子,我就把这个坑填了吧。
    最后程序上线了,但是不允许再往openresty迁新的接口了。

    之前是nginx * 1 + fastcgi * 5(php-fpm设置的最大进程是1000,ondemand,fastcgi独立机器),程序走统一的frame,frame里有router,orm,用pdo,phpredis,curl。
    走db和redis的平均响应10ms,curl的18ms。

    迁移之后,用openresty * 1(和另一个标准的nginx共用一台机器), 机器的cpu 不到30%,db和redis接口的平均响应 < 2ms, pass proxy到平台服务的14ms。

    无论是机器数,还是响应时间,openresty都完胜,不在同一个level上。
    当然,openresty里的程序没有统一的frame,稍微占了点便宜。但是引入一个frame,估计对响应时间影响不大,即使增加50%的时间,也是非常客观的。

    顺便问下,国内有哪些公司用openresty了?
    23 条回复    1970-01-01 08:00:00 +08:00
    harryyyt
        1
    harryyyt  
       2013-05-29 23:10:35 +08:00
    遇到和LZ类似的问题,比较了Openresty,Node.Js和PHP三种方案,还是用Openresty的ngx_lua实现最快。也考虑过用hiphop,不过这玩意捣腾了半天还是没弄起来...我想既然是优化性能就用性能最佳的方案好了,不过上头可能是基于会lua的人不多的原因考虑
    rebellion
        2
    rebellion  
       2013-05-29 23:13:29 +08:00
    楼主的头像好幸福的样子
    qiongqi
        3
    qiongqi  
    OP
       2013-05-30 10:37:49 +08:00
    @harryyyt 我们代码里用了namespace,貌似hiphop不支持这个。。头的意思是自己改hiptop。。我觉得有把hiptop改好的能力,n个openresty都学会了
    qiongqi
        4
    qiongqi  
    OP
       2013-05-30 10:39:00 +08:00
    @rebellion 还好吧,我和我gf都是随遇而安型的,不求上进,所以比较容易满足
    lookhi
        5
    lookhi  
       2013-06-16 12:12:12 +08:00
    hiphop facebook?
    qiongqi
        6
    qiongqi  
    OP
       2013-06-16 13:23:47 +08:00
    @lookhi 是facebook开源的hiphop,最新的应该是hhvm,应该是支持PHP 5.3了
    raincious
        7
    raincious  
       2013-06-16 13:32:06 +08:00
    不用hiphop那么麻烦。

    可以等PHP 5.5上线之后+opCache一起用,很轻松就能优化到10毫秒左右。
    qiongqi
        8
    qiongqi  
    OP
       2013-06-16 13:44:17 +08:00
    @raincious PHP 5.5是等不到了,已经有同事在弄hhvm了。
    其实我对hhvm一直没有一个系统的认识,google也没有找到hhvm跟apc,eAccelerator的性能对比。
    感觉hhvm提高的有限,已经是跟apc一个级别的。
    还是跟openresty这种杀手级的应用不在同一个level上。

    是不是,PHP就不太适合做访问量很大的api使用?
    tedeyang
        9
    tedeyang  
       2013-06-23 21:53:20 +08:00
    确实会破坏架构,领导也要考虑测试、发布、维护、招聘的成本。
    min
        10
    min  
       2013-06-25 21:05:52 +08:00
    妥妥的异端啊,搁早几百年绑十字架上一把火就把lz你给点了 ^_^
    qiongqi
        11
    qiongqi  
    OP
       2013-06-26 12:08:39 +08:00
    @tedeyang 确实会有这个问题,但是我还是不觉得当摊子大了以后,还是都依靠php来做,看看facebook,现在估计想迁个接口都迁不动了。
    qiongqi
        12
    qiongqi  
    OP
       2013-06-26 12:11:06 +08:00
    @min 那我岂不是跟布鲁诺一个层次了。。历史书上还能留个名
    hhvm也很极端啊,用hhvm,岂不是抛弃整个现在php的社区
    Sunyanzi
        13
    Sunyanzi  
       2013-06-26 12:46:20 +08:00
    leader 人很好啊 ... 他自己觉得是异端但是至少他会看数据然后屈服于更好的技术 ...

    另外说 hiphop 远比各种 OPCACHE 提升得要多 ... 因为一个是重编译一个只是缓存 ...

    说来这得是多大的公司才会自己组团研究 HHVM 啊 ... 至少八十人的开发团队 ..?
    notedit
        14
    notedit  
       2013-06-26 13:00:49 +08:00
    我比较赞同你们的leader 把架构搞复杂了 带来的维护成本更高

    比如你的lua代码有人维护么 可以很容易的进行单元测试么 可以很容易的继续集成么
    mudone
        15
    mudone  
       2013-06-26 13:28:05 +08:00
    在一个组织里做东西,leader更多的考虑到如果你离开后这部分的东西如何处理和维护。
    min
        16
    min  
       2013-06-26 14:00:34 +08:00
    facebook里已经有hhvm教派了,教义完备信众一大帮,自成体系,和php信的不是一个神

    你们公司都信默罕默德的,就你一个哭着喊着要说猪肉挺好吃,让大家一起吃,能有好结果么你 ^_^
    qiongqi
        17
    qiongqi  
    OP
       2013-06-26 14:33:24 +08:00
    @Sunyanzi leader人不错的。我们部门没有那么多人,只要有同事去测试hhvm的性能了,之前说的修改hiphop也就是leader随口一说
    qiongqi
        18
    qiongqi  
    OP
       2013-06-26 14:36:21 +08:00
    @notedit @mudone 这个我能理解,就是觉得既然能有用hhvm的魄力,接受一门新的语言也应该不是问题。我觉得从php到openresty几乎是零学习成本。代理的维护,测试也是需要人慢慢做的,php刚上的时候,也是没有phpunit的啊
    zhangxiao
        19
    zhangxiao  
       2013-06-26 15:07:25 +08:00
    @qiongqi 你把tests写好再拿去劝x爷。还可以把你写的部分部署成替补或者灾备,万一性能出问题了能立刻顶上也不错,但是估计你需要自己花时间去保证这部分的更新了...
    qiongqi
        20
    qiongqi  
    OP
       2013-06-26 17:11:21 +08:00
    @zhangxiao 更新不费劲,没有什么新的feature了,就是老的一大堆,也没人负责,删掉的话就跳了一堆人不同意。。现在都是我自己有时间的话,写着玩。。最终能成型的话,就放github上
    晓哥在那边滋润不?据说那里一年有半年放假?
    zhangxiao
        21
    zhangxiao  
       2013-06-26 17:44:33 +08:00
    @qiongqi 半年太夸张了... 平时各种假期是比较多,另外有25天的年假 :D
    cloudzhou
        22
    cloudzhou  
       2013-06-26 18:02:23 +08:00
    看情况,如果我是 leader 的话,不到遇到性能问题,或者准备架构更新,是很难支持异构的。异构遇到的问题只有后来才深刻体会。
    huaiyinhou
        23
    huaiyinhou  
       2013-08-18 01:05:14 +08:00 via Android
    @qiongqi 选这个主要还是与业务系统有关与已有架构。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     880 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 22:01 PVG 06:01 LAX 14:01 JFK 17:01
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86