V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
cheka
V2EX  ›  分享创造

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

  •  1
     
  •   cheka · 2012-04-25 11:19:48 +08:00 · 12921 次点击
    这是一个创建于 4593 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我们创办扇贝网 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
    e6nian
        1
    e6nian  
       2012-04-25 11:25:00 +08:00   ❤️ 1
    日PV多少?峰值并发多少?

    3-4W的 UV 话说单机也能撑起来。
    qiayue
        2
    qiayue  
       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,等发布。
    e6nian
        5
    e6nian  
       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
       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  
       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   ·   实用小工具   ·   973 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 20:47 · PVG 04:47 · LAX 12:47 · JFK 15:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.