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

2012-04-25 11:19:48 +08:00
 cheka
我们创办扇贝网 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上发一下,听听各位意见,大家要是有兴趣,我写起来会比较起劲的
12966 次点击
所在节点    分享创造
71 条回复
e6nian
2012-04-25 11:25:00 +08:00
日PV多少?峰值并发多少?

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

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

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

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

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

其次就是做并发检查.然后做RAID1或者raid5,双机热备,异地灾备,读写分离.这些.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/33489

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX