Blog迁到Linode,新空间,新开始

Posted by & filed under Life Diary.

很久没有认证的写博客了,原因是多方面的,一方面因为工作比较忙,最近在死磕一个电子商务的项目,对于不适合人类阅读的代码,花了很大的力气去重构,当然我也只能重构一些我用到的部分,这部分重构只能保证与我相关的这些特性能够在未来的一段时间内降低维护的成本,更深层次的重构,有专门的团队在负责,还有一个原因是过年吃多了,又长胖了,人胖了就不想动,变懒了,于是赶紧买了一辆自行车,只要不下雨,上下班都骑车,还特意在自行车上装了一个码表,蛮便宜的,十几块钱,能清楚记录我平均速度,总里程,总时间,当前行车速度,当前温度等等信息,建议骑车的人去买一个,安装也非常方便,淘宝上可以买到。 昨天晚上把Blog迁往Linode,关于Linode的详细介绍,请关注百度的Blogkid同学的介绍,这个VPS是和老王,神仙等人一起合租的,差不多每个人300人民币一年,速度还可以,从我的测试来看,比我之前用的VPS稍微慢一点,比起它的资源和性能,总的性价比还是不错的,如果有需要的朋友可以考虑一下,一个人买有点贵,当然如果你不差钱的话,那就无所谓了。 最近还发现一个神奇的现象,我的Blog流量在最近一个月增加了一倍多,新增流量主要来自百度搜索,但奇怪的是,google webmaster tools 中显示,订阅用户也增加了一倍多,看来订阅用户和访问量基本上没啥关系,怪不得那么多人在feed中添加广告,不过feed能够做到更精准的营销,这是当你在Blogbus 6周年跨界融合大会上,碰到的Feedsky创始人吕欣欣,他老人家说的。当时还和他合影了,不过照片不知道去哪里了…… 关于以后,我会把更多的业余时间投入到数据库上去,先从MySQL入手开始搞,所以以后Blog可能更多的出现数据库方面的文章,当然PHP是我的职业语言,关于这方面的心得,我会继续发布在Blog上,关于编程语言可能还有Python,这个是不错的语言,Blog上还有可能出现的内容可能就是一些读书笔记。

迟到的2009总结

Posted by & filed under Life Diary.

2008年末在车东的要求下写了08总结,其实08年没有什么好总结的,干了一点点小的事情,不错也算是第一步,如果09年的是充满机遇的一年,那么08年也算是一个准备吧,刚哥也好,神仙也好,曹宇伟也好,甚至科科和小龙都给了我莫大的帮助和指导。 2009年一年实现了很多梦想,或者说是设想吧: 加入一个快速成长的公司,不为生存发愁, 能够给予父母一些物质上的反哺,能够一年回两次家 能够住一次5星级酒店, 能够出门旅游一次, 能够方便的回去见女友, 能够在同学、老师、朋友面前证明自己的价值, 能够读完30本书 玩一次黑莓 买一台mac 参加一次技术聚会 细细数来,除了mac没买之外,其他的都实现了,貌似2009年一年没白活,那么2010年来一点更高的愿望吧 买一台笔记本,性能要好,是不是mac不重要 为女友买一台单反相机 接父母来杭州住一段时间 完成一个开源作品 好好学好两个语言,英语和Python 学会理财 参加两次以上的技术聚会 看完《代码大全》《程序设计语言原理》《high performance mysql》 再读一遍曼昆的《经济学原理》 每周至少健身一次

七层负载均衡与静态文件缓存

Posted by & filed under Operating System.

这个标题有点吓人,又是负载均衡又是缓存,随便哪个都能写好几本书了,这里浅谈一二,适合新手,老鸟请绕道,个人的一些浅薄观点。 很多大公司在七层上做负载均衡大多基于硬件,比如F5,假如流量真的大到不行了,或者是钱多的烧包,那么买一个这种设备肯定是不二的选择,省去多少事情啊,不用搭建环境,不用搞很多测试,只要照着说明文档或者去厂方培训几天就可以了。 七层设备出了F5还有很多,在七层上做负载均衡的软件业很多,比如大名鼎鼎的HaProxy,比如配上第三方工具的LVS,甚至因为负载均衡的重要性,很多具有前瞻性的Web服务器开始提供这样的功能,比如nginx,比如light httpd,nginx的七层负载均衡实际上还是很不完善的,当后端代理一台机器死掉后,nginx还会发送请求给这个机器,这个机器不处理,那么nginx就会一直等待超时,在超时后再将请求分配给其他的机器,在流量大时会很影响性能,造成一定程度的连接堆积甚至堵塞,nginx的负载均衡算法也相对少很多,没有haproxy和LVS多,当然后者是专业负载均衡软件。 静态文件缓存也有很多,比如不朽的squid,比如最近两年很火的varnish,甚至号称比squid更快速更精准的nginx的模块ncache,varnish使用的Visual Page Cache技术能够显著降低内存和磁盘的交换次数,使系统利用率更高,我没有在百万级以上环境检测过varnish,很多人说varnish不是足够的稳定,我测试的时候没有发生什么问题。 静态文件缓存一般都不止一台,我一直推崇使用七层负载均衡来设计静态缓存架构,因为可以降低重复率,降低重复率自然是提高利用率。URL HASH能够很好的解决缓存浪费的情况,比如用户头像放在一台机器上,模板中的小文件放在另外一台机器上,利用七层负载均衡就很容易让头像的请求命中头像服务器,模板请求命中模板缓存服务器,避免了三层或者四层负载均衡重复缓存导致的硬件利用率低下问题。而且服务单一,新切换的缓存机器,很容易重新缓存满。 七层负载均衡和四层负载均衡相比,最大的缺点就是没有四层的负载能力高,Haproxy据说能跑到40万并发,LVS有几百万,这些都是理论上的数据,真的跑到40万的时候,服务器网卡早就挂了

决定离开

Posted by & filed under Life Diary.

人这种动物真的很奇怪,大多时候都总是做着利己的事情,很多时候却选择了不能因为自己而活着的方式。 Livid曾经形容上海是个妖怪的城市,结果他终于躲到了杭州去了,我没去过昆明,不知道昆明是不是Livid说的那样美好,我时常去杭州逛逛,深知杭州没有那么好,至少交通不是很好,堵车是我最不喜欢的事情,偏偏杭州这个事情最常见。 2008年8月我进入Blogbus工作,明天我将从这个我从前到现在一直喜欢的公司里面走出,我不知道从这里带走的小资情调能不能融入新的公司,没有办公室政治的Blogbus是我过得最快乐的一年。 杭州并没有传说中的那么人杰地灵,我将要去这个地方,我深知这个地方的牛人都是外来的,杭州没有上海那么排外,上海制定了很多排外的政策,比如外地车就不能在一定时段上高架,比如上海户口的就一定得交公积金和三险,外地人则可有可无,走在是上海的小巷中,总能听到“乡下人”来形容外地人,好吧,外地就外地吧,中国的户籍制度把人强分成农业户口和城市户口,再把城市户口分成外地户口和本地户口,再把本地户口分成市区户口和郊区户口…… 对于一个应届生来说,在同学都急着找不到工作的时候,却频频接到传说中猎头的电话,我是幸运的,凭心而论,我不是很优秀,我的很多专业的知识来自于Blogbus师长的传授,有神仙,车东,刚哥,曹宇伟,唐珂,张捷和潘建龙,在UI和HTML等前端技术方面给我帮助的有,李飞,吴旋,姐夫,还有已经离职的小光大哥和陈小新,在产品方面给我指导的也有很多,蔡溪哲,张新玲和夏添,以上排名不分先后,我是想到哪个写到哪个,在经济上帮助过我的还有姐姐,Blogbus除了一条小狗,一个小猫,两只乌龟还两只被猫吃掉的小鱼非常可爱之外,还有平儿,小U,小花,还有杂志的徐帆姐姐等等 离开是为了更好的发展和长大,也许过于一帆风顺对我没有好处,我想去吃点苦头,顺便交几个难友,多认识几个同事~~外面的世界很大,又一次选择了不光为自己而活着……

连日来的一些感慨

Posted by & filed under Life Diary.

1) 不要相信任何第三方,即使是你的兄弟开的公司,也不一定跟你说真话,因为很多话是不能跟你说的,第三方和你合作的唯一目的就是钱,当然公司间的合作本来就是利益合作,这本无可厚非,但是总有人利用信息不对称,对灌输给你的信息做对他更有益的改动,然后在合作后频频跳票,不兑现承诺,所以对付第三方的唯一办法就是,找一堆供应商,然后让他们把承诺统统变成白纸黑子,然后挨家比较,选中了之后,把这些白纸黑子变成合同条款,不然拒签。还好上海是一个还算守法律的城市,基本上写进合同的都能兑现,不能兑现都会给一个合理的赔偿或者置换。 2)网站运行速度慢,第一个要检查的是数据库,而不是程序逻辑 3)如果有服务出现了故障,大多是程序本身出了问题,前提是服务器和网络没有异常的情况下,所以无论你愿不愿意都最好能重现一下错误,这是解决问题的最好办法 4)服务器服务调整是个慢工细活,动之前大脑里应该清楚每个细节,如果不熟悉,最好用纸写下来,然后再仔细想想,然后再开始做,假如你和曹宇伟 一样牛逼或者比他更牛逼,能够把shell运用的出神入化,那另当别论 5)文档是最好的老师,网上的那些免费的收费的电子书,都是文档加上作者的理解写成的,假如英文尚可的话,还是直接阅读文档的比较好,我如果遇到一个新的东西,我一般会查一下中文的介绍,大致了解一番,然后去阅读手册,有时候想啊,手册这么好的东西,怎么就没人翻译一下呢,每每冲动去翻译几个手册,苦于乱七八糟的事情和心情太多,浪费了很多时间。 6)不要太相信国内所谓的牛逼的公司的牛逼的人的推介的书,基本上都是炒作,书本身并没有太大的价值,比如《Apache源码分析》和 《走出软件作坊》,作序者都很狡猾,基本上不会提及书的任何内容,当然也可能是作序者根本没看过自己作序的这本书,所以里面大多介绍作者是怎么样一个人,作者的团队、背景甚至认识过程等等,这点在阿里DBA简朝阳先生《mysql 性能调优与架构设计》中尤为突出,那么多所谓的牛人作序,没有一个提及书的内容,不过简朝阳先生的性能调优几个章节还是值得一读的,架构设计不过是一带而过,我觉得不应该放在书名中,名不副实。 7)***权威指南 都是骗初学者的,大段大段的抄手册里面的内容,初学者因为不熟悉所学技术的手册,可能会觉得这种书很详实,用到的都有,其实如果去翻下手册,就知道,还有比这个写的更好的,所以手册不仅是最好的老师,也是最权威的权威指南。 8)不要因为技术而技术,这点对技术人员非常重要,大多数技术人员都喜欢更新的东西,确实,新的东西比旧的东西在多数时候更强大,但你的需求真的需要那些新的功能么?如果花了很大的力气研究一门新的东西,然后只用到老的东西里面也有东西,那么就是浪费了,所以,能满足需求的就是最好的。 9)scalable 在国内都翻译成“可扩展”,比如《构建可扩展的Web站点》一书就是这么翻译的,事实上,应该翻译成“可伸缩”,大部分时候你的网站随着流量的不断增长,服务和设备保持着一种扩张的状态,当我们上了一个可以扩展的解决方案之后,它能不能收缩呢?万一某个时刻我们发现这些东西不是想象中那么好用或者有用,毕竟有些东西需要很大成本的,比如51.com前些日子就裁掉了整个宁波机房,我们是否可以退回去? 10)过程是需要的,谁也不能一蹴而就,一步登天,成功的人都是认真的活到他成功的那一天,急躁只会令自己丧失和浪费更多的时间

信息泛滥

Posted by & filed under Life Diary.

初中时代,老师告诉我们,我们即将进入一个信息爆炸的社会,你们要学习,学习,再学习。到了高中,老师说:21世纪是信息社会,谁先得到信息,谁就能获取胜利。到了博弈论里面就演变成了:成功者都是因为减少信息不对称。我想做个成功者,于是我想尽办法减少信息不对称,于是我注册了各种各样的社交网站,关注各种各样的我觉得有谱的信息,但突然有一天,有很多这样的同类社交网站诞生了,而且都宣称拥有很多用户,事实上也确实有很多用户。于是又诞生一个个类似hellotxt的网站,中国有嘀咕,饭否,叽歪等等,结果我现在打开网站得到的都是重复的信息,就像中国的几大门户网站一样。 于是我关闭FriendFeed ,Facebook,校内等等,我开始怀疑google的效能,我开始更多的关注语义搜索。 未来的世界,不是比拼谁能得到更多的信息,而是比拼谁更过滤掉无用的信息,语义搜索更好的传达了这一点。 所以新闻网站只要看一个就行了,社交网站也只要一个就可以,IM工具更只要一个…… 忽然有一个想法,谁要是能做一个应用,把Facebook,twitter,校内,饭否,myspace等等网站聚合在一起,然后将一个用户可能看到的多条重复信息过滤之,这个应用应该能火起来。

奋斗!为谁?

Posted by & filed under Life Diary.

每天屁颠屁颠的干着琐碎的事 每天和同志们吵着闹着 我们为一个到底谁创造了命名空间(namespace)而争吵不休 我们为了Python为什么推倒重来而面红耳赤 我们为了吃8块的外卖还是10块的而犹豫不决 我们拿着螺丝刀拆了好几个硬盘,盘片最后成了镜子 我错过,没人责备过我 我们都错过,另外一个人替他补上 8个人,是兄弟还是团队? 我们一起喝酒喝到凌晨 我们在最拮据的时候相互援助 我们因为社会原因而逝去的同事而抱头痛哭 我们因拓展而更深的了解彼此 我们相信每个人都是自己的老师 我相信他们都是我的老师 每天我都在开心着、开心着、开心着 每天我都有收获着、收获着、收获着 坚持着,是因为放不下,真的放不下 “薪酬不是第一位,这里给你一次创业的机会” 我信了,于是我坚持了 某一天,有人在QQ上说:再过几天你就9个月了, 而我们在一起加起来还没2个月。 我相信这个世界,我依然相信这个世界。

妈妈,生日快乐

Posted by & filed under Life Diary.

刚刚过去的一天,是我母亲的生日,她识字不多。 我, 一个当年背着板车拉着西瓜到处叫卖的被人戏称为“黑子”的家伙,这个板车上也曾经卖过甘蔗 一个当年一蛇皮袋一蛇皮袋将三千多斤稻谷从脱粒场扛到家里的家伙,每个来回就有两公里,那我不知道抗了多少个来回,那天晚上,我真的咳出血,很多很多 抗这些稻谷的过程中别人拿着罐头从我面前走过,问我要不要吃,我母亲说,不用了,我们家有西瓜,比这个东西好。那个人走后,我母亲对我说,听着,你的一切在你手上,别人的东西,再好也不要。那个夏天我虚岁16岁。 在别人鄙视的言语中上了最好的高中,然后在嘘声中成绩降到了谷底,再在嫉妒的目光中走进大学,在注视的眼神 中走到社会。 老横在他的博客中说:“因为没几个人相信,你的梦想 ,所有的事,都是你实现了,别人才接受而已” 这些年的经历证明了,老横是对的,真的很对,很对 生日快乐,妈妈,我不会让你失望的。

ChinaUnix网络优化论坛上海站总结

Posted by & filed under Study & Reading.

在绕了N个圈之后我终于找到了会场,看看时间12点48分,按照规定牛人要13点30开始演讲,到了这个时间,我发现只有51.com 的finalbsd同志到场了,主持会议的草上飞(唐川)说嘉宾正在路上,牛人的时间自然贵点,晚点到场也是应该的,于是我安慰了一下自己,牛人于14点左右差不多陆续来了。 FinalBSD同志的“群服务器负载均衡的开源解决方案”讲的很好,个人理解如下: 1、目前最好的负载均衡的硬件设备是F5和Netscaler,两者基本上属于同质品,所以两者是直接竞争者,不过后者可以将TCP的三次握手全部自己搞定,F5是转发到后端,因此Netscaler具有更高的抗DDOS特性。两者拥有太多的相似点,其中之一就是价格,中小互联网企业根本舍不得买,比如BlogBus。 2、F5、Netscaler都能工作在OSI模型的4~7层中。 3、开源软件解决负载均衡中,HaProxy和LVS相对比较优秀,LVS只能工作在4层中,HaProxy能工作在4~7层,并且提供web的状态查询,LVS可以基于命令行进行管理,HaProxy只能通过配置文件实现,HaProxy配置信息子节点可以继承,也可以重新定义,HaProxy能够实现高层应用,也意味着损失一些性能,当然加入实现同样的功能,和LVS差别不大,HaProxy可以很容易实现备份均衡器配置,加入一组负载均衡的机器倒掉之后,HaProxy会自动切换到备份的一组机器上,并且session等信息可以平滑过渡,好处是用户不需要重新登录、购物车不会因切换而被清空等 4、HaProxy实现了负载均衡的ALC控制,减轻后端的集群压力,但是我怀疑这台负载均衡机器的性能是否足够的好,不然会造成单点故障,当然,可以配置多台负载均衡机器 5、HaProxy比LVS更容易实现CDN加速,具体原因没听明白。 接着淘宝来的同志介绍了XEN实现的虚拟化技术,演讲者的名字我也忘了,改日补上。 1、虚拟化主要是指一分多或者多合一,之所以记住这句话,是我的概念中总是以为虚拟化是一分多,可能日常基础的例子都是这样。虚拟主机,VPS等等。 2、虚拟化能够实现快速拷贝环境,配置好一个环境可以复制任意多份运行,前提是物理机器足够的多和强大。 3、虚拟化软件中,Vmware和XEN效率最高,前者是商业软件,后者是免费开源产品。 4、虚拟化并没有在生产环境中得到大规模的应用,目前都是试验性质的,淘宝几乎所有的测试环境都构建于虚拟环境,但生产环境没有例子。 5、虚拟化可以共享存储,真实系统可以读取到虚拟主机中的任意文件,只要设置正确。 第三个是来自这次活动赞助商梭子鱼的经理的演讲,主要是推销梭子鱼的负载均衡设备,号称只有F5三分之一的价格,通过他滔滔不绝的演讲,让我了解(或者叫猜测)到梭子鱼网络均衡设备便宜的原因,实际上梭子鱼就是一个软件集成的厂商,将几个开源软件修改修改,然后丢进一台开起来很山寨的server中,就可以买到F5三分之一的价格,假如这个也叫便宜的话,我觉得F5应该再提价5倍。 第四位依然是51.com的工程师,讲Mysql的灾备体系。 1、灾备体系就是灾难备份体系,也就是在特别紧急情况下的数据恢复问题,比如911事件后,美国摩根斯坦利第二天就能正常运作,这就得意于他们的灾难备份和恢复体系。 2、灾难备份不仅要同地区备份,还要异地备份,最好能定期存入永久存储介质中。 3、备份中需要注意的几个问题是:备份一致性,备份存储,备份对正在运行的业务影响,备份策略等 4、假如11:00发出备份指令,12:00备份完成,如何保证备份时间中的数据一致性问题,主要解决方案如下 a、 使用从库(slave)进行备份,11:00时对从库加锁,然后进行备份,这样做的缺点是,需要增加架设从库的硬件成本,假如有300台主库(master),那么就需要300个从库,当然,可以通过一台机器启动多个从库来减少一部分成本,假如从库压力不大的话。切记要在从库备份前先flush table,不然很多数据还在内存中,无法被备份。 b、直接使用Mysqldump来备份,优点是不会增加太多成本,缺点是一旦启用dump那么数据库将加锁,业务就会被停止,尽管可能停止很短时间 c、使用snapshot(快照)进行备份,此种备份只适合使用InnoDB的存储引擎,因为在备份开始和结束这短时间中,数据库的所有改动操作全部保存在undo log中,备份完成后通过undo log的前滚来保证备份的一致性。 5、在99.9%的情况下Mysql的安全性是可以得到保证的,还有0.1%情况下是不可靠的,比如你正在执行一个删除操作,然后立刻按住CTRL + C中断删除,你会发现一个神奇的事情,你的数据被删了,bin log中却没有任何记录,也就是说,没法恢复了。 6、淘宝现在的所有后台操作只用十几个oracle就搞定了,可见oracle的性能。 7、oracle和Mysql的搭配能显出更高的效率,比如oracle只写,而用Mysql做同步的只读数据。 我感兴趣的内容总结如上,还有其他的演讲者内容就忽略了,抱歉~~ 演讲的PPT估计过几天ChinaUnix会挂出来,隔几日再奉上。

无知害死人

Posted by & filed under Study & Reading.

最近我接连犯了两个比较重大的失误,非常的低级,低级到我无法原谅我自己。 一个是数据删除操作,因为采用全新的框架,不是很熟悉流程,所以在删除前进行了一些断点测试,查看参数调用情况,一直跟踪到核心代码,最后一次测试的时候,字段名没有传入,事实上这完全是我的故意,因为我想知道,字段名没有传入到底框架会给出什么样的错误提示,写了一个这样的SQL语句 DELETE FROM post WHERE ’123456′  AND ‘ 456789′ 这是执行这个语句花了一份多钟,我还以为发生错误了,因为是周六晚上调试的,周日早上睡大觉,运营的同学打电话给我们系统管理员,很多用户反映日志丢失了,我猜想我完了,就昨天我发布了新的功能,因为周末太闲。在mysql 的bin log中查到一条类似如上的SQL语句,转念一想,这个WHERE根本就没用,没有字段的where查询,后面都是true,相当于: DELETE FROM post WHERE  true  AND true 执行了之后的结果是,整个表被清空!还好我们采用的是分库分表的策略,我删除的不过几百个表中的一个,丢掉近一万个用户数据,最后劳烦我们万能的系统管理员花开同学 从备份中给找回来了。这其中得到神仙的协助, 虽然没有任何人批评或指责我,我永远记得这个教训。 第二个是关键词匹配系统,主要用来查找包含关键字的垃圾文章(spam)。这个是写的第一个完全不需要模板的程序,说白了,就是命令行运行的东西,但还算不上真正意义上CLI程序,关键字存在一个表的一个字段中,以回车分割每个字符,这个是通过另外的一套WEB界面输入的,我提取关键词的方法是explode(‘\n’, $str),结果运行了好几十次,查到的匹配文章少的可怜,今天晚上(2009-03-10)老魏告诉我,每天的spam远远大于我查找的数量,我查到的几乎可以忽略不计,这下我汗颜了,我一直以为是我们所有的用户都非常纯洁,所以才只有那么几个spam,原来是我程序出问题了,之前我都是直接增加一个常用的词进行测试的,比如“的”,查找非常准确,所以我深信我的程序没有问题,最后在刚哥(我刚到Bus时被指定的师傅,一位做了8年开发的牛人)的排查下,原来是windows下的换行和Linux下的换行根本就不是一回事,windows下是以 \r ,Linux下是\n,在将每个关键字trim一下之后,搜20个表就搜了近千篇垃圾文章。 我应该好好检讨我自己,无知有时候真的会害死人,因为不知道,所以死了也不知道怎么死了!