电商的秒杀和抢购,从技术的角度来说,会对Web系统产生巨大的考验。本文带大家关注秒杀和抢购的技术实现和优化,同时,从技术层面揭开,为什么我们总是不容易抢到火车票的原因。
需要用到Shell脚本每隔3秒钟去监控一个软件进程的运行状态,发现crond似乎只支持到分,那么如何使用计划任务来直接实现呢?
最后解决方案如下,经验证,脚本运行非常稳定。
crontab -e
## For excuting scripts.sh every 3 seconds##on 2014-10-15 #----------------------------------------------------------------- */1 * * * * /home/somedir/scripts.sh */1 * * * * sleep 3 && /home/somedir/scripts.sh */1 * * * * sleep 6 && /home/somedir/scripts.sh */1 * * * * sleep 9 && /home/somedir/scripts.sh */1 * * * * sleep 12 && /home/somedir/scripts.sh */1 * * * * sleep 15 && /home/somedir/scripts.sh */1 * * * * sleep 18 && /home/somedir/scripts.sh */1 * * * * sleep 21 && /home/somedir/scripts.sh */1 * * * * sleep 24 && /home/somedir/scripts.sh */1 * * * * sleep 27 && /home/somedir/scripts.sh */1 * * * * sleep 30 && /home/somedir/scripts.sh */1 * * * * sleep 33 && /home/somedir/scripts.sh */1 * * * * sleep 36 && /home/somedir/scripts.sh */1 * * * * sleep 39 && /home/somedir/scripts.sh */1 * * * * sleep 42 && /home/somedir/scripts.sh */1 * * * * sleep 45 && /home/somedir/scripts.sh */1 * * * * sleep 48 && /home/somedir/scripts.sh */1 * * * * sleep 51 && /home/somedir/scripts.sh */1 * * * * sleep 54 && /home/somedir/scripts.sh */1 * * * * sleep 57 && /home/somedir/scripts.sh #-----------------------------------------------------------------
几个常用操作:
1、备份
# 只导出表结构
d:/PHP/xampp/mysql/bin/mysqldump -h127.0.0.1 -uroot -p123456 snsgou_sns_test --no-data --default_character-set=utf8 > d:/Python/data/snsgou_sns_test_table.sql
# 只导出数据
d:/PHP/xampp/mysql/bin/mysqldump -h127.0.0.1 -uroot -p123456 snsgou_sns_test --no-create-info --default_character-set=utf8 > d:/Python/data/snsgou_sns_test_data.sql
# 全部导出(包含表结构及数据)
d:/PHP/xampp/mysql/bin/mysqldump -h127.0.0.1 -uroot -p123456 snsgou_sns_test --default_character-set=utf8 > d:/Python/data/snsgou_sns_test.sql
2、还原 (注:--force 参数,表示遇到错误时将继续执行)
d:/PHP/xampp/mysql/bin/mysql -h127.0.0.1 -uroot -p123456 snsgou_sns_test2 --force < d:/Python/data/snsgou_sns_table.sql
d:/PHP/xampp/mysql/bin/mysql -h127.0.0.1 -uroot -p123456 snsgou_sns_test2 --force < d:/Python/data/snsgou_sns_data.sql
注意:mysqldump只能备份导出,而还原的话,则需要使用mysql命令。
Python定时按日期备份MySQL数据并压缩
0 23 * * * python /var/www/html/crontab_python/back_db.py >/dev/null 2>&1
对于一些很特殊的接口,怎么特殊,哪些算特殊,我也不知道,总而言之,就是感觉http请求有可能被劫取,传递参数有可能被窜改等情况,还是举个例子来说吧:
有个直接转账接口,页面上 我输入的是5元,表示我要给对方某某转账5元,结果在http传递过程中,被人劫取并窜改成了 10000元,而且入账对象改成了“黑客”的账号,那不是亏大发了,思考了一下,应该有2种方案解决这个问题,
针对
--->非开放性平台
--->公司内部产品
接口特点汇总:
1、因为是非开放性的,所以所有的接口都是封闭的,只对公司内部的产品有效;
2、因为是非开放性的,所以OAuth那套协议是行不通的,因为没有中间用户的授权过程;
3、有点接口需要用户登录才能访问;
4、有点接口不需要用户登录就可访问;
最近自学了下Shell编程,也算是入门吧!按照如下教程,编译安装了LAMP(Apache-2.4.6 + MySQL-5.5.25 + PHP-5.3.27)
CentOS6.x编译安装LAMP(2):编译安装 Apache2.4.6
CentOS6.x编译安装LAMP(3):编译安装 MySQL5.5.25
CentOS6.x编译安装LAMP(4):编译安装 PHP5.3.27
在生产环境上,如果按着上述教程一个一个地去安装,势必有些麻烦,于是萌发了一个念头:能不能把这些Shell脚本汇总到一个脚本中,实现自动化安装呢?答案是可以的。
DNS:最原始的负载均衡方式,名字就已经说明了一切,不用细说了。
LVS:最常用的软件负载均衡。我见过的国内百万级用户的架构,基本都是靠它顶的。
Nginx:也是现在流行的、常用的负载均衡方案之一。