一个优惠券发放平台,包含资讯,优惠券秒杀和使用等功能
https://play.google.com/store/apps/details?id=com.sportexp.fortune
https://itunes.apple.com/us/app/fu-man-xing-cheng/id741879965?mt=8
zcat fmxc.tyt.com.access.log.2.gz | grep api | grep "09/Jan/2014:20:00" | goaccess
一分钟总访问量: 8227
平均每秒钟: 137
./ab -p postfile.data -T 'application/x-www-form-urlencoded' -n 100000 -c 1000 http://fmxc.tyt.com/api/user_coupons/ticket
Requests per second: 977.08 [#/sec] (mean)
Time per request: 1023.462 [ms] (mean)
Time per request: 1.023 [ms] (mean, across all concurrent requests)
+----------------------+-------+-------+---------+---------+-----+-------+
| Name | Lines | LOC | Classes | Methods | M/C | LOC/M |
+----------------------+-------+-------+---------+---------+-----+-------+
| Controllers | 1375 | 1037 | 23 | 146 | 6 | 5 |
| Helpers | 43 | 40 | 0 | 3 | 0 | 11 |
| Models | 836 | 646 | 24 | 67 | 2 | 7 |
| Mailers | 0 | 0 | 0 | 0 | 0 | 0 |
| Javascripts | 221 | 139 | 1 | 32 | 32 | 2 |
| Libraries | 0 | 0 | 0 | 0 | 0 | 0 |
| Controller specs | 35 | 28 | 0 | 0 | 0 | 0 |
| Model specs | 392 | 307 | 0 | 0 | 0 | 0 |
+----------------------+-------+-------+---------+---------+-----+-------+
| Total | 2902 | 2197 | 48 | 248 | 5 | 6 |
+----------------------+-------+-------+---------+---------+-----+-------+
Code LOC: 1862 Test LOC: 335 Code to Test Ratio: 1:0.2
LOC (Lines Of Code => program lines)
一个单元测试框架,选择它的原型是在非Rails的普通Ruby项目也可以很方便的使用
测试的覆盖率很低,只写了抢票相关业务的单元测试.
选择Mysql的原理是因为它开源免费资料多,其实也想试试PostgreSQL
选择Redis因为抢票并发比较高,用Mysql实现有一定复杂度,而Redis是单线程,可以很简单的实现业务并保证数据的正确性.
Redis的Hash数据结构和Java的Map接口一样,是键值对存储形式.
redis> HSET myhash field 5
(integer) 1
redis> HINCRBY myhash field 1
(integer) 6
redis> HINCRBY myhash field -1
(integer) 5
redis> HINCRBY myhash field -10
(integer) -5
使用Ubuntu发行版本,编译依赖库相对Centos要新
就编译ruby各种依赖库来说,linux下应该是最容易的
相对Windows,某些任务能够更加简单的实现自动化
Ansible 自动化系统部署工具,把一些常见的任务封装成模块,而不用写复杂的脚本.
Mina 自动化应用部署工作
Nginx 轻量级HTTP服务器,占用内存小.
Puma 多线程的Ruby应用服务器
一个易配置,易扩展的服务进程监控软件
写Linux shell太难了,不同的发行版本开机服务语法规则还不同.用God可以很简单的写出跨发行版本的开机自启动服务
备份你的数据库,文件,并支持压缩,加密,分割,上传
数据库支持: Mysql, PostgreSQL, Redis, MongoDB等
上传支持: ftp,sftp,scp, rsync,dropbox,local等