负载均衡《构建高性能web站点》 05月04日
由于单机性能是有限的,不管机器多么牛逼,最后都会受限于一些硬件和一些软件,在这个时候web的水平扩展变得非常重要。
常见的负载均衡的方式:
1.程序重定向
2.dns的A记录或者CNAME进行负载均衡
3.七层http反向代理负载均衡,也就是常见的nginx、HAProxy、varnish
4.四层负载均衡,在IP层实现的负载均衡 (更多…)
mysqlreport——MySQL 效能监控工具【转】 05月04日
MySQL 效能监控工具–mysqlreport
管理 MySQL 最让人困扰的就是如何有效的掌握 MySQL 的健康状况,因为 MySQL 虽然有提供许多系统变量值供您参考,但这些零散的数据若要手动搜集与过滤将会是一件十分没有效率的事情(除非您写 Scripts 去分析)。而接下来要介绍的这套 “工具” 其实是由 hackmysql.com 的站长所撰写的 Perl Scritps,旨在协助 MySQL DBA 搜集与分析 MySQL 的运作状况。
官方网站: http://hackmysql.com/
软件下载: http://hackmysql.com/mysqlreport
这份文件有很大部份是参考 Daniel Nichter 的 mysqlreportGuide(http://hackmysql.com/mysqlreportguide),但不完全是翻译,里面加入了一些我觉得可能会对读者有帮助的数据,并删除了部份我认为会对读者产生混淆的信息。小弟的功力不足,也许会有所错误,若是您发现我有地方写错了也请您不吝指正,谢谢。 (更多…)
《构建高性能web站点》分布式缓存 05月02日
分布式缓存这个应该算是目前互联网技术上最热的地方,因为现在的网站,越来越偏向于全动态话,但是数据库不可能能抵抗住如此强悍的查询,所以不得不在db前面挡一层cache,这也便是目前互联网从业者最主要的设计点之一。
memory is another disk,这个是分布式缓存的最核心的地方,就是把数据放在内存里面。为什么放在内存里面,首先这个数据不能放在cpu以及及寄存器吧,其次磁盘太慢了,无法接受,就只能在这个中间的就是内存了,但是内存又一个天然的问题,就是宕机之后数据丢失,这个算是互联网架构师们最头疼的设计点之二。
当前最火web2.0 比如facebook、weibo,都采用了这种简单的架构,就是存储+cache+前端脚本的模式,而且,他们都不约而同地用了同一种技术memcached这种key-value的缓存方式。
key-value这种缓存方式最主要的好处就是它简单且高效,水平sharding非常容易,只要控制地好,啥问题都不会是大问题。
当前最主要的nosql 缓存开源软件,我的理解,nosql的东西,分两种,一种算数据库,一种算缓存,最大的区别就是是否把数据放到硬盘中,放到硬盘中就是数据库,否则就只能是cache。当然目前最流行的设计是数据库+cache,比如redis,就是自己维护一些内存的缓存,又写入的时候可选择定时写入硬盘或则事实写入硬盘。 (更多…)
《构建高性能web站点》web组件分离 05月02日
首先还是感叹一下http设计的牛逼之处,http是天然的分布式,它造就了互联网应用的扩展如此的容易,一个很小规模的应用可以很容易就扩展开来。
web组建分离就是把页面上的每个资源按照自己特有的属性分开,由不同的服务器来处理。分开的原因分服务器的原因和浏览器的原因,浏览器的原因是浏览器在统一个域名下并发请求数的限制,比如ie6是2,这个确实很2的,10年前设计自然跟不上现在的需求,服务器端主要资源的属性不一样,有的需要很多cpu计算,有的基本不用cpu,所以需要分开处理。 (更多…)
ubnutu下的工作 05月02日
以前切换过几次要用ubuntu,都以失败告终了,第一次应该是在大三的时候,那个时候对linux非常狂热,天天搞 [...]
程序员与文人 05月01日
我已经很少写纯文学方面的文章了,大学后少看了很多文学、历史方面的书,很多文学的东西,都在自己的脑海变得不那么清晰,以至于后来想驾驭自己文字的时候发现是异样的困难,我仿佛已经写不出我能控制的文字了。
在大学一年级以前,我一直都以为我会成为一个很有名的文人,因为初中高中的时候的我,遇到了太多的人生的波折,以至于那个时候的我能写出想“余秋雨散文体”那种哀历史、叹文学的文字。当时的我,看了很多文学的书,记忆最深刻的是“余秋雨全集”,图书馆很简陋, 书很少,每周都要无赖地去图书馆手动续借一下。在看完《山居笔记》、《行者无疆》、《千年一叹》…之后,我突然发现我的文章很像余秋雨那样,想写什么东西,就能找出一些莫名其妙的词语来,或许,这个就算是积累吧。
大学之后,慢慢地感觉到自己越来越无法和文学打交道了,因为文学离我的专业太远,而且从小山坡来的小孩连qq都不会打,自然很害怕落后太多,就拼命地学习计算机。到现在,发现自己又做出一个非常错误的决定。
如今的我,工作在计算机领域,职业为程序员,在任何地方我都告诉别人我是程序员,而不是职位上的xxx工程师,工程师这个名字,我担当不起,我还没有办法通过我的程序改变这个世界。
但是我依旧做着我的文学梦,文学依旧是整个社会的思想的核心,当500年后的后代看待我们的时候,技术上他们只会记住中国有四大发明,但是文学上,他们可以记住唐代的上万篇诗歌。文学,依旧是鲁迅时期的“药”,在治疗这人精神上的不不足。
时间有限的我,没有过多的时间去研究文学,唯独可以做的是,在不重要的的项目代码中,来一行代码的注释中写道“众里寻他千百度,蓦然回首bug就在注释处”,娱乐至上,程序如文学,工整而又措辞严谨。
还是发现自己的文字功底远远不如以前了,无法把自己的思想用中文表达出来,可能是程序写得太多,英语用的太多了,对中文突然又了相当的陌生感。
《构建高性能web站点》反向代理缓存 04月27日
反向代理缓存是目前互联网公司使用最常见的一种方式,像新浪这样的新闻网站,大多数的页面都是读的页面,而且要求速度,所以会用反向代理的方式来构建cdn,已达到最快的访问速度。
反向代理缓存依旧是基于HTTP的一种缓存方式,反向代理服务器和web服务器以及浏览器通过HTTP头来协商,哪些东西可以缓存,哪些应该缓存过期。
因为反向代理缓存是基于HTTP的,所以其工作在七层,常用的软件是古老的squid和新兴的varnish、nginx。 (更多…)
我的技术历程2011 04月27日
学习了陈钢大牛的方法,每天都要写日志(如果哪天没有写一定要自责一下,找时间补上),一定的时间出一篇总结的日志,以对自己的技术历程有一个交代。
中午和俊杰吃饭聊了一下,俊杰(视频的技术架构师)还是我在技术生涯的导师,在我来新浪的一年多的时间内,一直引导着我,每次和他谈话,都会让我更加明确自己的目标。
最近坐在廼悦旁边,压力颇大,不敢辜负廼悦的期望,所以一直很努力地向前走。
今年算是我技术年吧,在新浪待了一年多,基本的大型网站的开发流程已经比较清晰了唯一要做的就是西化,落实到每一个方面去进行一些研究。
我还是决定从上往下走,从应用向底层走,同时也开始运营个小网站实践一些seo营销之类的
php>>>php模块>>>php源码>>>各种新的数据库>>>运维>>>重新弄一下算法>>>服务器端C、C++之类的开发>>>系统架构
虽然这个过程可能很艰难,我也渐渐地感觉我应该有所目标地学习和总结一些东西了,以前的知识太凌乱,太无序,学了很多,但是当要我说出来的时候我却没有办法说得头头是到。
今天在华东那里要了一张php大会的门票,大家还是很支持我参加这些会议,我也想出去看看,去结识一些圈内的朋友。
就写到怎么多了,继续看书学习吧
为什么上传文件的表单里要加个属性 enctype【转载】 04月27日
上传文件的表单中<form>要加属性enctype=”multipart/form-data”,很多人只是死记硬背知道上传表单要这么写,知其然而不知其所以然。那到底为什么要添加这个属性呢?它是什么意思呢?它又有什么其他可选值呢? 其实form表单在你不写enctype属性时,也默认为其添加了enctype属性值,默认值是enctype=”application/x-www-form-urlencoded”.这个属性管理的是表单的MIME编码,共有三个值可选:
①application/x-www-form-urlencoded (默认值)
②multipart/form-data
③text/plain (更多…)
《构建高性能web站点》浏览器缓存 04月25日
浏览器缓存,其实这个在浏览器出来的时候就有了,ie6有名的未知缓存让很多前端js开发人员叫苦不迭,常常看见一个ajax请求后面莫名其妙地跟了一个随机数,这个就是解决缓存的问题。
但是浏览器缓存总的来说,是利大于弊,因为网速有限,如果一个页面有10张1m的图片,用户的带宽是2m的,那也得花一分钟才能下载完成,如果他很不幸地点击了一次刷新,如果不用浏览器缓存的话,他将再等一分钟。
而且程序的需要,以前常见的js、image、css之类的静态文件缓存的需求已经远远达不到要求了,能和动态程序交互的就只有cookie了(当然还是有flash的flashcookie),但是容量太小,google曾今开发出一个gears的东西用来存更多的东西,但是这个东西还是无法推广起来,毕竟是一家的标准。最后在html5中,一个叫local storage的东西有望成为下一代的浏览器缓存的标准,这将解决目前浏览器缓存的一些瓶颈。
从某种意义上说,浏览器缓存是很环保的,合适的设计可以减少很多不必要的流量,节约不少的电能也更环保。 (更多…)