准备写给小技术创业团队看的一组技术文章 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
cheka
V2EX    分享创造

准备写给小技术创业团队看的一组技术文章

  •  1
     
  •   cheka 2012-04-25 11:19:48 +08:00 1476 次点击
    这是一个创建于 4927 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我们创办扇贝网 shanbay.com 至今,技术上跌跌撞撞的遇到也解决了不少问题,譬如:

    我们从前迁移一次数据库需要半夜停机几小时,后来使用mylvmbackup和LVM快照,基本几分钟可以搞定。

    因为uwsgi的参数利用不足,导致应用服务器即便负载很小的时候依然会常常拒绝服务,这个问题折腾了我们有大半年。

    因为MySQL的某个参数受Raid卡的电池影响,导致我们新买的一台服务器在机房里白呆了一个月,花了我们一两周的时间调试,最后通过升级Raid卡解决。

    想来不少问题对于很多技术团队而言可能是有共性的(假设和我们一样,技术凑合,能出活,但是没有大牛),因此想把这些经验教训结成一组文章,一来帮些人少走点弯路,二来能得到高人指点补充,也能帮我们再少走点弯路。

    提纲大致如下:

    --系统环境配置
    LVM 文件系统(需要LVM的快照用于MySQL备份)
    KVM 虚拟机(在机器有限的情况下搭建多个测试环境)

    --开发环境
    Virtualevn 有相对隔离的Python运行环境
    Pip

    --单元测试

    --代码管理和开发发布流程
    Git

    --Web服务
    Nginx 前端Web服务
    uwsgi 后端服务,衔接Django程序

    --持续集成
    Jenkins 自动定时从Git的master分支里pull代码,并执行单元测试

    --数据库
    MySQL 重要参数配置
    数据备份 基于LVM 快照方式的mylvmbackup
    较少停机时间的数据库迁移 (从一台物理主机搬到另一台)
    分库

    --前端


    另外:
    1. 我们不是大牛,所以不能保证这系列文章会是best practices,但是是实际用于扇贝网(近60万注册用户,3-4万日独立访客)的working practices,而且我也希望抛砖引玉,借助社区总结出更好的practices
    2. 文章只关技术,不会有创业感悟或者产品心得,这方面去看看Getting Real或者Rework就差不多了
    3. 我们用的是Python/Django,但是系统和数据库方面的内容和开发语言是相对独立的。

    先在v2ex上发一下,听听各位意见,大家要是有兴趣,我写起来会比较起劲的
    71 条回复    1970-01-01 08:00:00 +08:00
    bed
        1
    bed  
       2012-04-25 11:25:00 +08:00   1
    日PV多少?峰值并发多少?

    3-4W的 UV 话说单机也能撑起来。
    qiayue
        2
    qiayue  
    PRO
       2012-04-25 11:25:19 +08:00
    绝对有兴趣,楼主分享干货,大家都支持
    cheka
        3
    cheka  
    OP
       2012-04-25 11:34:39 +08:00   4
    @e6nian 每个网站的业务不一样,所以PV/UV仅供参考。扇贝网是一个在线学习网站,每天2万人左右完成学习,完成一次学习至少要20分钟,多的要6-7小时,而且每个人学习的内容都不一样,因此负载还是不低的。
    hutushen222
        4
    hutushen222  
       2012-04-25 11:38:15 +08:00
    Mark,等发布。
    bed
        5
    bed  
       2012-04-25 11:41:47 +08:00
    @cheka
    嗯,刚才去看了下,不错的网站。
    能否大致透露一下PV,这样对于讨论更具参考价值。
    sinreal
        6
    sinreal  
       2012-04-25 11:42:36 +08:00
    支持楼主发布。要是有感谢楼主功能就好了。
    xiaojay
        7
    xiaojay  
       2012-04-25 11:46:42 +08:00
    关注' 和我目前用的technology stack很像'
    ps:有没有试过用户gunicorn 替换掉uwsgi?
    Livid
        8
    Livid  
    MOD
    PRO
       2012-04-25 11:49:14 +08:00
    期待看到你们关于 raid 和 virtualenv 的经验分享。
    cheka
        9
    cheka  
    OP
       2012-04-25 11:52:01 +08:00   2
    @etnian 实际上我们的PV真的没参考价值,因为大部分页面都是后台提供json,前端render,所以一个用户翻了300页,记录的PV依然是1

    @xiaojay
    我们最早用fcgi,后来改nginx的时候在gunicorn,uwsgi里选了uwsgi(具体原因忘了),实际上现在证明uwsgi是足够好的,只是我们参数设得不好。
    virushuo
        10
    virushuo  
       2012-04-25 11:52:50 +08:00
    期待。

    不过这年头其实真没必要用raid卡了。用freebsd+zfs比那些raid卡靠谱多了。还省钱。
    iYu
        11
    iYu  
       2012-04-25 12:22:23 +08:00   1
    期待 干货。
    jollyant
        12
    jollyant  
       2012-04-25 12:39:27 +08:00
    期待,创业团队的技术分享
    dementrock
        13
    dementrock  
       2012-04-25 12:44:40 +08:00
    不错的网站啊...我曾经也有过类似的想法 背单词+social 不过还有的一个构思就是提供一组API 可以开发第三方的背单词应用 然后进度数储存在同一个网站 不知楼主有没有兴趣开发类似的功能呢?
    austin
        14
    austin  
       2012-04-25 12:47:44 +08:00
    数据库迁移这块,我们这里通常的做法是在要迁移的机房做从库,这样修改下网站的数据库配置文件,可以在10秒内完成后台数据库的切换。
    taine
        15
    taine  
       2012-04-25 12:48:56 +08:00
    题外话,能不能不要注册就可以学习
    cheka
        16
    cheka  
    OP
       2012-04-25 12:49:50 +08:00   1
    @austin 对的,我们现在也是这么做。
    @dementrock 我们也有此意,已经有了部分API,后续会发布更多
    reus
        17
    reus  
       2012-04-25 12:50:20 +08:00
    @cheka PV本意就是翻了多少页嘛,用ajax请求也算是一个pv的,所以是记录pv的方法需要改进吧
    chairo
        18
    chairo  
       2012-04-25 12:50:51 +08:00
    这个必须期待
    cheka
        19
    cheka  
    OP
       2012-04-25 13:03:15 +08:00   1
    @reus 按照这个标准算的话,每天150万左右
    qiuai
        20
    qiuai  
    PRO
       2012-04-25 13:19:32 +08:00
    说实话...我更建议初创公司使用LAMP平台.资料多.提问回答的也快.

    然后呢.不管是用python还是ror还是什么语言.毕竟都是后台跑的东西.

    还要学着做前台优化.如果一个页面上有100个图片,10个CSS,5个JS.你不做优化的话.一个PV就要用掉115个并发.

    其次就是做并发检查.然后做RAID1或者raid5,双机热备,异地灾备,读写分离.这些.
    hitigon
        21
    hitigon  
       2012-04-25 13:41:39 +08:00
    Mark 非常期待
    vitohe
        22
    vitohe  
       2012-04-25 13:43:03 +08:00
    期待。
    yuzhigang33
        23
    yuzhigang33  
       2012-04-25 13:54:57 +08:00
    支持,期待,感谢,加油。
    alai
        24
    alai  
       2012-04-25 14:40:21 +08:00
    收藏了,期待发布。花五毛钱支持一下!
    stingh711
        25
    stingh711  
       2012-04-25 14:46:12 +08:00
    也花5毛支持一下
    muxi
        26
    muxi  
       2012-04-25 14:55:04 +08:00
    创业不容易啊,事实上LVM备份数据库在3年前我所在的公司已经成熟的应用于数据库和其他文件备份,做的好话,写锁的时间应该可以控制在30秒内,如果整成自动化脚本,这个时间可以继续缩小到5秒内。

    期待关于python Virtualevn KVM的分享
    peizh2006
        27
    peizh2006  
       2012-04-25 15:33:13 +08:00
    老用户,支持,期待。
    dodogod
        28
    dodogod  
       2012-04-25 16:01:27 +08:00
    请问用Virtualevn 可以把一台机器的python环境拷到另一台直接用吗?
    xalinx
        29
    xalinx  
       2012-04-25 17:16:02 +08:00
    pv 1000w 平均到每秒也才115tps, 何况你们这么点uv, ....这个根本不能算压力... 除非你们把什么都往数据库塞
    wtl
        30
    wtl  
       2012-04-25 17:20:08 +08:00
    怎么给楼主送钱?希望@livid增加送银币功能。
    xalinx
        31
    xalinx  
       2012-04-25 17:21:56 +08:00
    不持久会话的,没有复杂逻辑的,tps不到100的,读远大于写的,存贮单机能承受的. 请不要使用压力这个词语
    qiukun
        32
    qiukun  
       2012-04-25 17:22:14 +08:00
    求扇贝网和拓词区别?
    cheka
        33
    cheka  
    OP
       2012-04-25 18:12:23 +08:00
    @muxi 我们现在直接用了mylvmbackup这个脚本,节约了很多时间和精力。 所以我想写的这组东西,并不是什么高深的技术,可能在高手眼里也很肤浅,但是从我们自己角度而言,如果早点了解这些,是会少撞些南墙的。
    muxi
        34
    muxi  
       2012-04-25 20:11:32 +08:00
    @cheka 可能我没描述清楚,我并没有看轻你们用LVM备份的事情,我的意思是这个技术比较成熟了,运用成本极低,但是收获非常大,但却没有人分享出来,很多创业公司和团队走了弯路,我应该向你学习,应该好好把一些实用东西分享出去
    cheka
        35
    cheka  
    OP
       2012-04-25 21:07:01 +08:00
    @muxi 不用担心,没有误会,我也只是借你的话再次强调下,呵呵
    amom
        36
    amom  
       2012-04-25 22:29:34 +08:00
    期待这种分享,现在动不动就是就是什么狗屁架构、几(十)亿PV,现在更是扯到什么“大数据”。大部分的时候,我们能把这些“普通”问题做的足够好就是了不起!
    kollinchu
        37
    kollinchu  
       2012-04-25 23:52:22 +08:00
    @cheka 因为看了上次的集成环境搭建,才会集成环境的搭建。真心谢谢!~
    azure
        38
    azure  
       2012-05-08 00:56:49 +08:00
    写的那篇文章呢??没下文了?
    likuku
        39
    likuku  
       2012-06-07 10:28:54 +08:00
    @muxi 专门搞一台 slave ,用来作备份,这样生产用的 master/slave 都不受任何影响。
    chairo
        40
    chairo  
       2012-06-07 10:43:54 +08:00
    楼主太监了……
    roymax
        41
    roymax  
       2012-06-07 11:12:42 +08:00
    潜水好久了,必须登录收藏一下
    thinkinnight
        42
    thinkinnight  
       2012-06-07 11:20:18 +08:00
    是在哪里进行分享?有地址吗?
    具体的服务器参数是什么,Linux版本,python版本,数据库版本,是否使用负载均衡等技术
    服务器是使用租借,云,还是自己买,出现问题如何及时通知和解决?
    对这个话题挺有兴趣,想看看楼主的文章
    muxi
        43
    muxi  
       2012-06-07 11:28:23 +08:00
    @likuku Slave备份这个不靠谱,特别是Master写压力比较大,主从同步延迟比较严重的,在磁盘损坏或者其他事故的时候会丢失部分数据,当然要求不高的场合,丢了就丢了,也没事,能够满足大部分场合
    cloudzhou
        44
    cloudzhou  
       2012-06-07 11:53:29 +08:00
    @cheka 具体什么参数,实际中和性能相关的有 processes listen max-requests limit-as
    ayang23
        45
    ayang23  
       2012-06-07 14:18:31 +08:00
    前几天弄个uwsgi+django,有表单的网页一直出错,搞了两天没搞定,放弃了。所以楼主的分享很有价值,希望早点看到。
    azure
        46
    azure  
       2012-07-10 16:19:16 +08:00
    说好的技术文章呢。。。
    icecream
        47
    icecream  
       2012-07-10 16:45:07 +08:00
    说好的技术文章呢。。。
    Sherlockhlt
        48
    Sherlockhlt  
       2012-07-10 17:04:35 +08:00
    说好的技术文章呢。。。
    peizh2006
        49
    peizh2006  
       2012-07-10 17:26:32 +08:00
    扇贝最近的改版很成功,可是
    说好的技术文章呢。。。
    cheka
        50
    cheka  
    OP
       2012-07-10 18:14:35 +08:00
    大家知道的,我们最近在改版,我这周就放几篇出来,见谅见谅...
    kava
        51
    kava  
       2012-07-10 18:24:58 +08:00
    期待!!!
    liliang13
        52
    liliang13  
       2012-07-16 20:22:05 +08:00
    mark一个,期待。。。
    chairo
        53
    chairo  
       2012-07-16 21:02:11 +08:00
    @cheka 6 天前……
    楼主又一次太监了……
    heroicYang
        54
    heroicYang  
       2012-07-18 15:13:51 +08:00
    这个必须支持,期待文章出炉!最近开始使用扇贝,感觉还不错!
    shunai
        55
    shunai  
       2012-07-18 18:55:59 +08:00
    网站很好! 希望上面提到的内容进一步分享!
    cheka
        56
    cheka  
    OP
       2012-07-18 21:44:02 +08:00
    写了第一篇 VirtualEnv 和Pip 构建Python的虚拟工作环境
    http://www.v2ex.com/t/42760
    shitiven
        57
    shitiven  
       2012-07-19 10:08:15 +08:00
    @cheka 好东西啊,一直都用python和django开发应用服务,期待哇
    xingis
        58
    xingis  
       2012-07-19 16:42:10 +08:00
    @cheka 看了扇贝网,顺便注册了一个用户!
    xiawinter
        59
    xiawinter  
       2012-08-10 23:41:21 +08:00
    各位, 我是传说中的扇贝网程序猿, 工程师, 我本来想今天晚上开始完善这篇帖子里的内容, 但是我发现我好像没有权限发帖啊, 我要咋整? 难道是因为我们没有即时上传文章,被集体block掉了, 这是不是太强大的技术啊

    如果哪位神能顶我一下什么的,我开始分享第二篇: 要如何对大数据表进行修改
    southwolf
        60
    southwolf  
       2012-08-11 01:01:03 +08:00   1
    @xiawinter 不是没有发帖权限,是您没找到发帖按钮吧……噗
    在主页是不能直接发帖的。似乎。
    随便在底下找个节点点进去就有了……
    xiawinter
        61
    xiawinter  
       2012-08-11 01:18:39 +08:00
    @southwolf 我找到了发布按钮,我已经发布了一篇文章了
    loading
        62
    loading  
       2012-08-11 09:48:37 +08:00
    @wtl 多回这个帖子不就好了 ^_^


    期待干货。

    当时怎么就没有这种英语学习网呢。。。。唉
    lishali12345
        63
    lishali12345  
       2012-08-11 10:53:28 +08:00
    国内目前有很多的创业小团队,特别是最近两年时间内,移动互联网创业的小团队更多,有做社区的有做游戏的,大部分团队中都不会有太强的技术积累,普遍团队的工作年限平均值也就是3年到5年的样子,这还通常是因为部分创始人个人年限较长才把平均值拉大的。技术团队的实力通常相对大公司成熟的团队都比较弱,做产品的过程中也会碰到各种问题,如果楼主能分享技术团队成长的一些故事,那真是一件非常好的事情。
    richiefans
        64
    richiefans  
       2012-08-11 10:58:35 +08:00   1
    感谢楼主分享,希望尽快看到干货 对于没有大牛的小型创业公司 太需要这些了
    lerry
        65
    lerry  
       2012-08-16 00:27:29 +08:00
    说好的文章呢
    bugcoder
        66
    bugcoder  
       2012-08-16 01:14:34 +08:00
    用过楼主的网站一段时间,真心感谢。
    更加感谢楼主的分享。
    summer_charlie
        67
    summer_charlie  
       2012-08-19 09:36:04 +08:00
    挺好的网站. 期待分享
    cheka
        68
    cheka  
    OP
       2012-08-22 16:46:09 +08:00
    做了一个简要的分享PPT

    Python技术小团队不妨知道的技术
    http://www.v2ex.com/t/45719
    bengle
        69
    bengle  
       2012-08-22 18:54:15 +08:00
    扇贝做的挺不错,期待后续分享!!
    zeayes
        70
    zeayes  
       2013-04-04 12:15:11 +08:00
    不错,期待楼主后续的分享
    shiziwen
        71
    shiziwen  
       2013-11-13 17:09:39 +08:00
    期待呀,怎么没有后续了?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3317 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 11:05 PVG 19:05 LAX 04:05 JFK 07:05
    Do have faith in what you're doing.
    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-11940834-2', 'v2ex.com'); ga('send', 'pageview'); ga('send', 'event', 'Node', 'topic', 'create'); 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