福满星城技术简介
开发&部署应用简介
一个优惠券发放平台,包含资讯,优惠券秒杀和使用等功能
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)
开发相关技术
- Ruby
- Rails
- Rspec
- Mysql & Redis
- Git
代码行数统计
+----------------------+-------+-------+---------+---------+-----+-------+
| 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)
展示
- 页面功能列表
- 商家管理的CRUD代码
- jbuilder partial
- gem: geokit, ransack等
Rspec
一个单元测试框架,选择它的原型是在非Rails的普通Ruby项目也可以很方便的使用
测试的覆盖率很低,只写了抢票相关业务的单元测试.
- 修改代码运行测试后可以放心的上线
- 减少重复工作,不用每次都手动测试
- 多人协作时,方便他人修改代码
MYSQL & REDIS
选择Mysql的原理是因为它开源免费资料多,其实也想试试PostgreSQL
选择Redis因为抢票并发比较高,用Mysql实现有一定复杂度,而Redis是单线程,可以很简单的实现业务并保证数据的正确性.
Redis Hash
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
部署相关技术
- Linux
- Ansible & Mina
- Nginx & Puma
- God
- Backup
Linux
使用Ubuntu发行版本,编译依赖库相对Centos要新
就编译ruby各种依赖库来说,linux下应该是最容易的
相对Windows,某些任务能够更加简单的实现自动化
Ansible & Mina
Ansible 自动化系统部署工具,把一些常见的任务封装成模块,而不用写复杂的脚本.
- 添加用户
- 安装软件
- 修改文件并自动备份
Mina 自动化应用部署工作
- 通过ssh自动执行命令
- 保存历史部署版本
- 支持从git repos拿最新代码
NginX & PUMA
Nginx 轻量级HTTP服务器,占用内存小.
Puma 多线程的Ruby应用服务器
God
一个易配置,易扩展的服务进程监控软件
写Linux shell太难了,不同的发行版本开机服务语法规则还不同.用God可以很简单的写出跨发行版本的开机自启动服务
Backup
备份你的数据库,文件,并支持压缩,加密,分割,上传
数据库支持: Mysql, PostgreSQL, Redis, MongoDB等
上传支持: ftp,sftp,scp, rsync,dropbox,local等
相关链接
- https://github.com/nadarei/mina
- https://github.com/meskyanichi/backup
- http://godrb.com/
福满星城技术简介-精简版
By cxh116
福满星城技术简介-精简版
- 1,879