Loading...

Archive for the '技术文章' Category

    AD: 猛买 | 快递查询 | Jobsdigg | 很棒的男装店

又拍云实战

今年秋天,我加入猛买之后,遇到的第一个挑战就是图片托管。当时,网站流量快速增长,原有服务器几次增加带宽依然无法满足需求,流量常常跑满。现在回头总结一下,像我们这样的小公司,自己维护静态资源服务器大致有这些不爽:

  • 峰值带宽决定大部分成本
    如果峰值带宽在20Mb,那就得买20Mb,哪怕在凌晨只有几百Kb。
  • 运维的成本不可忽视
    除了买带宽,还得时时处处留意服务器运行情况、网卡流量、安全状况等,也需要持续投入。
  • 单机达不到CDN的功效
    虽然我们用的机房速度和稳定性都不错,但毕竟是单机,无法保证全国各地的访问速度。
后来,我通过@Fenng联络到了@gofeeling和又拍,正赶上又拍云处在最后测试阶段,我们成了又拍云第一批用户。又拍云(以下简称为UpYun)恰好为我们解决了上面的问题。
  • 按需付费,带宽需求再高,也只需要按流量付费,据粗略计算成本低至原先三成;
  • 抛开运维负担,如不放心,配置几个URL监控即可;
  • CDN不再是问题,不同地区的用户都能享受到最好的访问速度。

在两个月的使用过程中,UpYun确实出现过2次不稳定的状况,但又拍同学们都很及时地解决了。正式上线后,稳定性极佳,到目前为止可用率高达100%。

这篇文章主要是从用户的角度谈谈UpYun的特点和使用技巧,让对UpYun感兴趣的朋友们更好地了解这个平台,可以加深了解,更好地使用它。UpYun目前提供的是文件存储+CDN的服务,可以认为是AWS的S3+CloudFront,但实际用起来,有些细节上的不同。

0、与众不同的Bucket

和一般云存储服务提供的Bucket不同,UpYun中的Bucket分为文件类和图片类。文件类Bucket可以存放任何文件;图片类Bucket仅能存放图片文件,妄图上传其他类型会被拒绝。每个Bucket都可以绑定多个域名。

1、文件增量同步

使用第三方服务托管静态资源,都会有文件同步的需求。那么,放在主服务器的文件,如何同步到UpYun呢?又拍官方提供了两种方式:FTP和API。API功能强大,但是需要做开发,目前还没人开发出类似s3cmd这样的工具;FTP命令功能有限,想用原生的几个命令辗转腾挪实现sync很费劲(不切实际地想,如果支持rsync就好了)。

我们在实际使用时,利用了lftp的mirror命令,通过FTP协议实现了文件增量同步。再配合crontab,就能做到定时增量同步了。这样既避免了投入精力围绕API做开发,又能达到rsync的效果。下面是一个脚本示例供参考:

#!/bin/bash

HOST=”v0.ftp.upyun.com”

USER=”username”

PASS=”password”

LCD=”localpath”

RCD=”remotepath”

lftp -c “open ftp://$HOST;

user $USER $PASS;

lcd $LCD;

cd $RCD;

mirror –reverse \

–delete \

–dereference \

–verbose \

–exclude-glob=*.php”

2、缩略图功能

肯德基说“We do chicken right”,又拍的兄弟们完全可以自豪地说“We do pictures right”。UpYun的图片类Bucket有一个高级功能,那就是自动生成指定尺寸缩略图。

在Web页面上如果出现大图小用,不仅浪费流量,也会导致用户浏览器缩小图片从而影响前端性能(小图大用的情况就不用说了吧)。这时,UpYun的缩略图功能就派上用场了。

设置完成后,只要上传一张原图,UpYun可以按需生成多张不同尺寸的缩略图(如果没有请求是不会生成的,这样可以节约空间)。

下面是3个不同尺寸的缩略图:

  • 150px宽
  • 200px宽
  • 310px宽

要拥有这些缩略图,只需要上传一张原图:

又拍云可通过不同的URL得到不同尺寸的缩略图(感兴趣的话可以看看上面几幅图的地址)。是不是有点像淘宝的图片服务器?缩略图功能依然是按照使用的空间和产生流量收费,无额外费用。

3、数据备份

很多公司需要备份各类数据,这种需求也可以利用UpYun的文件Bucket来满足。当然,首先要将其设为私有,从而使外部无法访问。如图

设为禁止外链后,这个Bucket就可以用来安全地存放数据备份了。需注意目前对单个文件有最大100MB的限制。

除以上功能外,UpYun还提供了直观的流量统计图表,如图:

后台还有很多其他功能,就不一一截图了。

CDN也很赞,在国内不同位置获得的IP也不同,而且速度都不错。如图:

看完这些是不是心动了?产品给力,服务更没的说。快到UpYun申请试用吧。

最后,打个广告。

猛买的技术团队期待靠谱研发工程师加盟;

公司里全是年轻人,气氛活泼,更兼业务稳健,从成立之初就一直盈利

技术团队氛围宽松,不打卡+弹性工作制那是必须的;

钱和期权都管够,但我们不拿创业忽悠人,更希望每个人都能茁壮成长。

如果正在看这篇文章的你,热爱技术,喜欢研究新鲜玩意儿,正在找工作或是打算换工作,请联系我:zhanglei909#gmail.com。

P.S. 也欢迎实习;用Gmail和Twitter都有加分滴。

迁移Linode至东京机房

或许Linode发觉亚洲客户众多,他们把第6个机房开在了东京(ref)。

看到 @Fenng 第一时间切换了机房,我也在后台开了一个Ticket,2分钟之内客服就帮我设置好,然后发给了我新的IP地址。迁移过程是自动进行的,花费了不到一个小时。现在感觉访问速度快多了。

不仅如此,更换机房后用ssh、vpn都非常健壮,几乎不会断掉。在此推荐国内的Linode用户试试东京机房。

09年开始用Linode,收获了许多惊喜。

PS. 不了解Linode的朋友可以看看这篇Linode介绍

晒油耗

有车的朋友们,你的车最低油耗到过多少?我去年买的1.4T迈腾,到现在为止,单程最低油耗4.6L/100km。

这是上周三下班回家时开出来的油耗。时间是晚上7点多,几乎全程都在四环上,约27公里,部分路段车多但从没被堵死,一半路程开着空调。

途中最低开到4.4(没拍到),在地库停好车之后,油耗1定格在4.6。下面是行驶途中拍的4.5,不太清楚。

之前我也开过好多次5个以下,但到4.6还是首次。对于一个1.5吨B级车,和一个半年驾龄的新手司机来说,已经是非常低了。我也并未故意做什么节油措施(据说很多人都把备胎放家后备箱清空以减轻车重)。

仔细想一下,1.4TSI发动机功不可没,但或许7速DSG作用更大。这款车配备的DQ200变速箱,7档是巡航档位,齿比很低,可以让发动机在极低的转速下工作,环保低碳。

4.6也许还不是这辆迈腾的极限。国外装备TDI发动机的Passat B6可以开到4以下。这个月底,新迈腾就要上市,1.4TSI车型不会再有(真是惊鸿一般短暂呀),不过1.8TSI车型的DSG从6速升级为7速,值得拥有。

BTW,开着1.4T朗逸、宝来、速腾、明锐的兄弟们,你们的油耗怎么样呢?

香港旅行的“附带行程”

上月又去了一次香港,差点儿出事。事情是这样的:

我一直以为自己的港澳通行证是2次往来香港,1次往来澳门,于是在到香港第四天,坐船向澳门进发。在船上,翻了一下我的通行证,发现往返香港只有1次,可是已经离开香港即将踏上澳门!顿时慌了,行李还在香港的酒店,机票还在2天后,回不了香港怎么办?

在澳门入关之后问阿Sir,他断定我回不去香港了,只能从澳门直接去珠海。打电话给途牛网客服(行程都是在途牛订的),被告知千万不要回去香港尝试入境,让我直接去香港机场。之后,几经辗转,打电话给香港旅游局。接线的GG态度非常好,告诉我从香港去澳门属于港府规定的“附带行程”,从澳门再回香港时是没问题的。

于是我就安心在澳门逛了一大圈,还赌了几把,最后顺利返港。查了一下“附带行程”,港府的规定是这样的:

11. 根 据 现 行 安 排 , 内 地 居 民 来 港 , 必 须 持 有 有 效 的 《 往 来 港 澳 通 行 证 》 及 有 关 签 注 。 一 般 而 言 , 持 有 有 效 签 注 的 内 地 旅 客 , 如 能 符 合 一 般 入 境 条 件 , 会 获 准 以 访 客 身 份 入 境 香 港 , 而 逗 留 期 限 是 会 按 所 持 签 注 类 别 而 定 。 至 于 有 关 签 注 的 使 用 次 数 , 可 以 是 1 次 有 效 、 2 次 有 效 、 或 多 次 有 效 。

12. 有 鉴 上 述 人 士 于 访 港 期 间 , 或 会 顺 道 到 邻 近 地 区 ( 如 澳 门* ) 或 境 外 短 暂 观 光 ( 包 括 乘 船 往 公 海 游 覧 ) , 为 方 便 这 些 内 地 访 客 完 成 上 述 「 附 带 行 程 」 后 需 取 道 香 港 返 回 内 地 , 本 处 有 下 列 措 施 :

  1. 若 旅 客 完 成 「 附 带 行 程 」 再 抵 港 时 的 日 期 早 于 前 次 入 境 时 获 准 留 港 的 期 限 , 而 该 旅 客 符 合 一 般 入 境 条 件 , 本 处 人 员 将 再 次 给 予 先 前 逗 留 期 限 , 让 该 旅 客 入 境 ( 例 如 离 境 前 所 享 逗 留 期 限 为 五 月 八 日 , 再 抵 港 日 为 五 月 四 日 , 旅 客 可 获 准 入 境 逗 留 至 五 月 八 日 ) ;
  2. 如 旅 客 的 再 抵 港 日 刚 好 为 先 前 逗 留 期 限 的 最 后 一 天 , 而 该 旅 客 符 合 一 般 入 境 条 件 , 本 处 人 员 将 给 予 额 外 一 天 的 逗 留 期 限 , 以 便 其 取 道 本 港 返 回 内 地 ( 以 前 述 例 子 , 如 再 抵 港 日 为 五 月 八 日 , 一 般 将 可 获 予 逗 留 至 五 月 九 日 ) 。

13. 「 附 带 行 程 」 不 限 次 数 , 但 将 以 返 回 内 地 任 何 地 区 后 结 束 。

这里没有对“附带行程”的地区做限制,难道飞到日本再飞回来也可以?当然,如果已经有日本签证和机票单,就可以手捧护照进入香港啦。

很多论坛上都有讨论到香港+澳门旅行所需要的通行证往返次数,考虑到“附带行程”的规定,其实只需要:香港一次,澳门一次。

QCon北京观感

QCon开始前一天得知部门购买了QCon门票,欣然前往。第一天全天听课,第二天晚上在贝塔和各路神仙小聚,第三天继续到会场打酱油。在此聊聊观感。

NoSQL

NoSQL已然从概念走向实践,本次大会有不少NoSQL经验之谈,颇有些百家争鸣的味道。

第一天上午Facebook工程师分享了HBase在Facebook Messages的应用。同声传译很烂,但这位大哥多数时候都在读keynote,所以不难懂。Messages也并非一开始就使用HBase,迁移过程中有段时间在做“Double Write”以实现平滑过度。其实这原理很简单,但让我感慨。不少国内公司做类似的迁移时,策略都是:停服务->做数据->重开服务。如果做“Double Write”,用户体验会好很多,但是工程师需要多写一部分代码(这部分代码在迁移完成后是要被废弃的)。

@TimYang 带来的新浪微博的话题,花了很大篇幅介绍Redis。据说Redis性能要好过memcached。@RobbinFan提到ITeye(原Javaeye)的防火墙也用了Redis。

有关NoSQL的话题还包括MongoDBBeansDB杜欢透露他们在Magnet Games大量使用了MongoDB;和中国制造网的兄弟聊天,发现他们很关注HandlerSocket

去年我简单研究了一下MemcacheDBFlareTT,乱花渐欲迷人眼,关键还是要选择一个适合自己的。

各种优化

QCon首日最精彩的莫过于淘宝余锋带来的商品库优化专题。从应用程序开始,一直深入到硬件,层层剖析。MySQL,Kernel,FlashCache,Raid,SSD,CPU…一网打尽。其中的诸多策略,不仅在MySQL调优中适用,在别处也可作为参考。(PPT下载

百姓网的“网速优化”同样精彩。提及优化,其实就是一个不断寻找瓶颈然后克服瓶颈的过程。寻找瓶颈很重要。百姓网大量使用GA来分析页面加载情况,淘宝则使用了诸如latencytopsystemtap等工具来追踪、研判。找到趁手工具,或许已经成功了一半。

支付

会场上遇到了在盛大做“盛付通”的 @btkxcn ,恰好我也在做在线支付方面的工作,所以多聊了一会。各家做支付的公司,内部的模块划分都大同小异。还听闻好几家公司都在筹备自己的支付工具(看来牌照真不算什么门槛,八仙过海),也许很快就会看到各种“X付宝”“Y付通”面世。

这次在QCon还见到偶像caoz,真是一个无比犀利的互联网老人。和老朋友们重逢,觉得他们个个精彩,反观自己,近况平淡。

PS: QCon的Slides可以在此处得到。

美股账户汇款简介

关注美股开户的同学们可以翻阅一下前一篇《美股开户简介》。一般来说,提交证明材料的后一个工作日,账户即可开通。万事俱备,只欠东风,只要给账户里注资,就能开始买卖股票了。

本文介绍的其实类似国内“银证转账”的业务,但由于相隔太平洋,中间会有一些额外的费用。依然以SogoTrade为例。

汇款渠道

多数人向美股账户注资都只能通过电汇或支票。支票太慢(一般人也都没支票本吧?)不推荐,唯一的注资方式就是跨境电汇。

跨境电汇的费用通常分为以下3部分:

  1. 手续费。不同银行手续费不一样,通常是1‰左右。
  2. 电报费。通常为人民币80-150,目前银行有免收电报费的趋势。
  3. 中间行费用。资金到达收款行的途中通常要经过中间行,中间行收费约在$15-$25。

招商银行的专业版做跨境汇款非常便捷,但很遗憾,它不能汇款给国外的证券公司。经过各种对比,我推荐各位选择光大银行。我使用光大银行汇款$3000费用如下:

  1. 手续费:RMB 20,相当于1‰。
  2. 电报费:0
  3. 中间行费用:$19。

汇款过程

因为要去银行办业务,所以先把券商提供的银行帐号等信息记在小本本上。内容大致如下:

去银行需要填2张单子,一个是“购汇申请”,购买多少美金就写多少。另一个是“境外汇款申请”,除“汇款人名称和地址”用中文外,其他地方都用英文填写。表格上需要填写SWIFT代码,就是上图标出的一串,切勿填错。

以SogoTrade在US Bank的帐户为例,周一早上汇出,周二晚上对方能收到,周三晚上就可以开始买股票了。

关于提款

我还没有从美股账户中提取过资金,不过看起来操作也很简单(也是支票和汇款2种方式)。但要注意:国内银行有可能不接受外国公司的直接汇款,托收支票也太慢。推荐立志折腾美股的各位,办一个招商银行香港一卡通。以后资金就可以从香港自由进出不受监管。

香港一卡通在国内招行就可以申请,开通之后还能在线开通港股帐户,非常方便。

最后,祝大家财源广进。

Tip: 根据一些同学汇款的经历,建议大家汇款时,告诉银行是教育汇款。很多银行不允许汇款给公司账户,所以需要这样含混一下。

美股开户简介

我很早就开了美股帐户,但一直没入市。后来看到 @yimaobuba 一年 400%的收益,和张宴的《美股投资实录》,怦然心动。于是卖掉手头的A股转战美股。不少同学问我是如何开户的,于是我写这篇文章解释下。

选择券商

首先要选择一家券商来开户,就像在国内选中信证券或是招商证券一样。不同券商的差别还是很大的。

美股的券商很多。@yimaobuba 推荐ETrade;张宴推荐 Firstrade;我用的是SogoTrade。ETrade交易佣金很高,适合大财主。Firstrade交易佣金是$6.93,SogoTrade是赠送100次免费交易,之后每次$3。这几家都提供了中文界面、中文帮助,有些还有中文客服,使用起来没什么困难。

这里以SogoTrade为例,介绍一下美股开户流程。

材料准备

需要准备的材料:

  1. 身份证或护照
  2. 地址证明(纸质银行卡帐单、水电煤气缴费单等)

在线注册

进入SogoTrade开户页面,然后用英文填写表格。Email切勿填错。

表单比较多,可以在页面上方选择“简体中文”。但是表单内容依然要用英文填写。其中,填写的地址需要和上文的“地址证明”匹配起来(大致匹配就好,因为地址证明多数是中文的)。第二步如下:

帐户类型选“个人账户”,帐户特性建议选“融资”。后续步骤不再一一截图了。遇到填写推荐码/Referral Code的地方,请帮忙填入我的推荐码“574741”,我会非常感激。

注册完成后,就是等待激活的过程。一般是在注册当天的晚上(老美们开始工作的时间),SogoTrade会发来一封邮件,说明要提交的材料:

提交材料

按照邮件提示准备好材料后,可以扫描成PDF然后邮件发给SogoTrade。之后一个工作日,应该就会收到帐户开通的邮件。

特别注意

在使用SogoTrade过程中,目前发现有2个缺点:

  1. 没有盘前盘后交易;
  2. 某些股票不能卖空,疑似NYSE上市的股票(如$DANG $YOKU)无法卖空。(UPDATE:根据一些朋友反馈,无法卖空和券商暂时无法借到股票有关。)

UPDATE:以上这些问题现在经验证都已解决。

姊妹篇《美股帐户汇款简介》。

记一次复杂升级

:请想折腾最土程序和想做团购网站的同志们别发邮件打扰我,我这次只是帮朋友升级,平时根本不关心这些玩意。

上周末和智勇一起把猛买网的程序进行了一次大升级,有一些经验和教训可以记录下来备忘。

背景是这样的:猛买网用了最土(这是家软件公司)的团购系统,升级之前是1.4免费版,并在这基础上进行了大量修改。升级的目标是将系统迁移到1.6商业版。原来进行的修改(主要是新增的一些功能),需要原样搬过来。

升级过程大致记录如下。

准备阶段:

  1. 将当前数据表结构导出一份(不导出数据),然后与新版本的建库脚本做人肉diff。整理出一个包含N条SQL的文件,内容不外乎添加表、添加字段、添加索引。在这里有个小技巧:如果要对一张表进行多次修改,可以写在一个alter table的命令里,这样可以节约几次copy to tmp table。
  2. 使用一台从库做实验。断开主从同步,将上一步准备完成的SQL依次执行。如果有报错就相应地做调整。
  3. 将新版代码部署,验证功能。
  4. 对之前进行的程序上的修改,整理出优先级,将优先级高的功能重做修改。最终整理出用于升级的文件。

上线阶段:

  1. 备份数据库内容;备份网站所有文件。
  2. 运行准备好的一堆SQL改库。
  3. 程序文件升级。

后续:

  1. 恢复之前所有对程序的修改,这个得慢工出细活儿。

几个感想:

  1. 国内开源的系统,在防盗版防拷贝等方面做得非常完善,但在打日志查问题方面却一塌糊涂。
  2. 对于业务复杂的系统,在上线阶段最好直接把流量切走做停机维护,不然可能导致数据不准确。
  3. 若把文件修改的diff都保存成patch,升级时可以轻松地恢复绝大多数修改,可以极大地解放生产力。

小心输入Gmail密码

最近在使用gmail时,会遇到原本登录的情况下还会提示输入用户名密码的情况。感觉蹊跷就检查了一下页面源代码,果然是钓鱼行为。源码如下:

我用gmail都是直接点击Google工具栏的按钮,但在家里和公司的电脑都会被劫持,特别地,家里在用Mac公司是Windows,不可能同时中了一样的木马。应该是运营商(两边的网络都是北京联通)做了手脚问题出在网络上。另外,通过搜索ndns01.com域名的相关信息,找到了今年7月的一篇帖子

解决方案:坚持使用https访问Gmail,而且坚持手动输入URL。

如果已经在这样的钓鱼页面输入过密码,建议立即修改密码,然后检查Gmail账户的过滤器设置,看看有无转发邮件到外部陌生邮箱的过滤器。

UPDATE:看到下方有朋友的留言,说电信线路也有此问题。看起来不像是单个运营商的作为,也许错怪北京联通了。

一段脚本让断掉的SSH Tunnel自动重连

平时上网用ssh代理,但合上屏幕时就会断掉。用了Macbook之后,随时随地都有shell可以用,于是写了一段脚本来检测ssh tunnel是否还存活。如果没有就启动一个新的连接。

脚本内容:

curl -s -I http://www.google.com/ –socks5 localhost:7070 > /dev/null
[ $? -gt 0 ] && ssh -fN username@hostname -D 7070

脚本很简单,就是使用curl通代理访问一下google(这里也可以是任意别的网站)。如果访问失败了,就重开一个ssh进程监听7070端口。

要使用重连的机制,需要先建立远程服务器对本机的信任关系,这样才可以免输密码。如果觉得搭建信任关系过程太繁琐,可以使用ssh-copy-id这个小工具。

上述两行脚本可以加入到~/.profile(有的也叫.bash_profile)中,这样每次打开屏幕都会做检查,每次开机登录后也会自动连接。如果愿意,也可以加在Crontab中,每隔几分钟跑一下。

这样设置之后,平时基本上不用关心代理了,它会安静地在后台一直跑着。

UPDATE: 我就知道是我老土了。 @murj 推荐autossh,就是类似原理,大家可以关注一下。