首页
关于
标签合集
友情链接
Search
1
一些简单方面的Linux生产随机密码shell
370 阅读
2
美超微主板IPMI使用教程
338 阅读
3
Ubuntu系统开启root登陆权限
265 阅读
4
linux下502自动重启脚本
254 阅读
5
利用廉价VPS做反代,保护你的真实服务器
196 阅读
OS
促销资讯
管理系统
网站运维
网文资讯
登录
Search
标签搜索
网站架构
linux
网站运营
centos
mysql
google
nginx
ssh
apache
服务器
kloxo
vps
架构分析
PHP
特价VPS
xen
shell
数据库
lamp
vpn
装逼爱好者
累计撰写
163
篇文章
累计收到
20
条评论
首页
栏目
OS
促销资讯
管理系统
网站运维
网文资讯
页面
关于
标签合集
友情链接
搜索到
64
篇与
的结果
2011-07-08
大型web2.0互动网站设计方案
分析mixi.jp and Yeejee.com:用开源搭建的可扩展大型SNS网站总概关键点:1,Mysql 切分,采用Innodb运行2,动态Cache 服务器 –美国Facebok.com,中国Yeejee.com,日本mixi.jp均采用开源分布式缓存服务器Memcache3,图片缓存和加速Mixi目前是日本排名第三的网站,全球排名42,主要提供SNS服务:日记,群组,站内消息,评论,相册等等,是日本最大的SNS网站。Mixi从2003年12月份开始开发,由现在它的CTO – Batara Kesuma一个人焊,焊了四个月,在2004年2月份开始上线运行。两个月后就注册了1w用户,日访问量60wPV。在随后的一年里,用户增长到了21w,第二年,增长到了200w。到今年四月份已经增长到370w注册用户,并且还在以每天1.5w人的注册量增长。这些用户中70%是活跃用户(活跃用户:三天内至少登录一次的用户),平均每个用户每周在线时间为将近3个半小时。下面我们来看它的技术架构。Mixi采用开源软件作为架构的基础:Linux 2.6,Apache 2.0,MySQL,Perl 5.8,memcached,Squid等等。到目前为止已经有100多台MySQL数据库服务器,并且在以每月10多台的速度增长。Mixi的数据库连接方式采用的是每次查询都进行连接,而不是持久连接。数据库大多数是以InnoDB方式运行。Mixi解决扩展问题主要依赖于对数据库的切分。首先进行垂直切分,按照表的内容将不同的表划分到不同的数据库中。然后是水平切分,根据用户的ID将不同用户的内容再划分的不同的数据库中,这是比较通常的做法,也很管用。划分的关键还是在于应用中的实现,需要将操作封装在在数据层,而尽量不影响业务层。当然完全不改变逻辑层也不可能,这时候最能检验以前的设计是否到位,如果以前设计的不错,那创建连接的时候传个表名,用户ID进去差不多就解决问题了,而以前如果sql代码到处飞,或者数据层封装的不太好的话那就累了。这样做了以后并不能从根本上解决问题,尤其是对于像mixi这种SNS网站,页面上往往需要引用大量的用户信息,好友信息,图片,文章信息,跨表,跨库操作相当多。这个时候就需要发挥memcached的作用了,用大内存把这些不变的数据全都缓存起来,而当修改时就通知cache过期,这样应用层基本上就可以解决大部分问题了,只会有很小一部分请求穿透应用层,用到数据库。Mixi的经验是平均每个页面的加载时间在0.02秒左右(当然根据页面大小情况不尽相似),可以说明这种做法是行之有效的。Mixi一共在32台机器上有缓存服务器,每个Cache Server 2G内存,这些Cache Server与App Server装在一起。因为Cache Server对CPU消耗不大,而有了Cache Server的支援,App Server对内存要求也不是太高,所以可以和平共处,更有效的利用资源。图片的处理就显得相对简单的多了。对于mixi而言,图像主要有两部分:一部分是经常要使用到的,像用户头像,群组的头像等等,大概有100多GB,它们被Squid和CDN所缓存,命中率相对比较高;另一部分是用户上传的大量照片,它们的个体访问量相对而言比较小,命中率也比较低,使用Cache不划算,所以对于这些照片的策略是直接在用户上传的时候分发到到图片存储服务器上,在用户访问的时候直接进行访问,当然图片的位置需要在数据库中进行记录,不然找不到放在哪台服务器上就郁闷了。国内领先的SNS网站-采用类似的系统架构,在下面的文章会进行分析对比。这是稳定与典型的大型互动网站系统架构,web2.0的创业者,在设计网站时,可以参考参考,少走弯路。FROM:it168
2011年07月08日
16 阅读
0 评论
0 点赞
2011-07-07
Google的运营模式
虽然有那么多围绕着google的这样那样、令人眼花缭乱的传闻,Google依然需要解决那些常见的商业问题,例如报告财务情况,跟踪项目进度。但确实,Google经常使用一些非传统,同时高效率的方法去解决这些需求。Douglas Merrill 走上位于凤凰城的亚利桑那毕尔特摩尔度假酒店的一个演讲台时,他前额的发型依旧那么得有个性,就好像一位有那么点邋遢的大学教授。实际上,4月的这个早晨,他在这儿,是应当地的一个猎头公司(Phoenix Staffing)邀请,在一个早宴上,向一帮CIO们讲述他作为Google内部技术部门经理的工作。Google,这个带着那么些神秘色彩,却相当成功的,市价61亿美元的全球搜索引擎公司,绝对是全球公认数一数二的企业。可惜,Google总是选择性地讲述它那创新的信息管理架构(information management infrastructure),一个建立在可能是全球最大的分布式计算(网格计算)的系统之上的架构。Merrill即将带给他的听众们一个相当难得的机会,去窥视Google的未来。并且解释Google的运作方式和这背后的计算机系统。虽然有那么多围绕着Google的传闻,包括媒体宣称的允许带宠物上班的办公场所,Google的市值,市场占有率,令人眼花缭乱的Beta版(试运行版)的新品发布,甚至它那Microsoft终结者的身份,Google依然需要解决那些基本的问题,例如付账单,收集信息,报告财务收入,跟踪项目进度,雇佣承包商,雇人,评估员工,管理视频会议系统等等,说白了,Google一样要处理那些普通而琐碎的商业事务.“但这并不意味着Google一样采用传统的方式去解决这些问题”,Merrill这样解释道。“一件事以往一贯这么处理,我们也不认为它就一定是最佳的处理方式,” Merrill说.值得注意的是,这意味着Google往往不在标准的硬件上部署标准的商业应用。例如,Google可能会采用文本分析技术去驱动搜索引擎,从而从一封email中抽取应用软件需要的输入,而不是象传统的用户界面那样使用一个数据输入表单。Merrill可能不会把一个应用部署到传统的服务器上,而是部署到一个群集的服务器架构中,这个架构横跨了全球的多个数据中心。Google拥有好几十万的服务器,初步估计超过45万(本文成文大概是2006年7月),组成了数千个集群,并且分布在全球数十个数据中心。 Google在很多地方有数据中心,爱尔兰的都柏林,弗吉尼亚等等。加利福尼亚那个Google刚取得的占地百万平方英尺的数据中心已在租用中,而 Google最近又在俄勒冈州跨哥伦比亚河的一个叫达尔斯(Dalles)的小村庄修建2个足球场那么大的数据中心。依赖分布在不同地理位置上的数个服务器和数据中心,Google得以提供更快速的服务性能给它全球的用户们。因为Internet中任意两台电脑的连接速度本该像光速般快速,可惜它被那些网络中的交换机和路由器的延时大大拖慢了。虽然搜索依旧是Google的主要盈利渠道,那些服务器上同时还会运行 Google旗下的其它产品,例如Gmail, Blogger, 还最近那个基于Web的字处理软件(类似Word软件)和spreadsheets软件(类似Excel软件)。这也是为什么总盛传着Google是Microsoft(微软)的终结者,Google宣称要把一切带到互联网上,让微软的Windows操作系统滚一边去。无论你相不相信,Google和Microsoft已经在正面交火,恶狠狠地掐起来了。Microsoft今年计划投入15亿美元到服务器和数据架构中,而Google可能花费至少相同的钱去保持它的领先地位。而在去年(2005年),Google这方面的投资为8.38亿美元。在Google,大规模系统相关的技术是最重要的。2005年,Google索引了80亿个Web页面。同时,他的市场份额不断高涨。基于最近 ComScore Networks qSearch的一份报告,Google在4月已经占领了美国互联网用户43%的市场份额,而Yahoo仅拥有28%,微软的MSN仅拥有12.9%。而且Google的市场份额还在增长; 毕竟一年前,它只占了36.5%。相同的调查表明,美国人在4月份,进行了66亿次在线搜索,整整比上个月增加了4%。这其中,Google占去了其中29亿次的搜索,Yahoo占去了19亿次,而微软的MSN占了8.58亿次。这个成长得益于众多提高可伸缩能力的科技(scalable technology)。就像Google提交给美国证券交易委员会(SEC)的年报中所提到的:“我们的商业运营依赖于我们的软件和硬件架构,它们在低成本的情况下提供了基本的计算资源。我们整合使用那些现成的机器,并且自定义软件,让他们运行在商业计算机的集群上。我们之前把相当大的投资用在开发这样的架构,这已经为我们带来了不少重要利益。它使得存取和处理大量数据变得简单,使得部署和操作大规模的全球化软件和服务器变得轻松,并且使得大规模计算机集群的管理变得自动化”。Google购买,而不是租用设备,以便于最大化控制它的基础架构。Google的CEO,Eric Schmidt抵制了5月31日来自于财务分析师的策略建议,他说道“我们相信,通过彻底地构建我们自己的基础架构,我们将获得巨大的竞争力。”Google不是简单地购买PC级别的服务器,并把他们叠起来,Schmidt说道,“我们是真正地在建造我们内心设想的超级计算机”。因为Google操作运算着如此巨大规模的数据,它的确值得被研究,尤其当你的组织正在购买或评估网格计算策略(the grid computing strategy)时。也就是你正试图利用很多低成本的计算机协作计算,来处理那些高级别的计算任务。不管这种架构是否还是言过其实,Google拒绝他的设计师被采访,包括对Merrill的跟进采访。不过,Merrill在Phoenix演讲时,已经回答些问题,而Google销售搜索工具(Google Search Appliance )的部门则帮我们回答了另外一些问题。一般来说,但Google被问到它的后台系统时,它有那么些人格分裂。对媒体,他总是说,“对不起,我们不讨论我们的架构”。然而,当google的工程师们面对着计算机科学听众时,却大门大开,比如面对着一屋子过来应聘的应届毕业生时。结果,这个故事的主要信息来源,主要来自于那些网站上的技术演讲资料,比如华盛顿大学(University of Washington)的官网,以及Google实验室发表那些的研究论文。FROM:译言
2011年07月07日
19 阅读
0 评论
0 点赞
2011-07-07
Facebook图片管理架构
Facebook 的照片分享很受欢迎,迄今,Facebook 用户已经上传了150亿张照片,加上缩略图,总容量超过1.5PB,而每周新增的照片为2亿2000万张,约25TB,高峰期,Facebook 每秒处理55万张照片,这些数字让如何管理这些数据成为一个巨大的挑战。本文由 Facebook 工程师撰写,讲述了他们是如何管理这些照片的。旧的 NFS 照片架构老的照片系统架构分以下几个层:# 上传层接收用户上传的照片并保存在 NFS 存储层。# 照片服务层接收 HTTP 请求并从 NFS 存储层输出照片。# NFS存储层建立在商业存储系统之上。因为每张照片都以文件形式单独存储,这样庞大的照片量导致非常庞大的元数据规模,超过了 NFS 存储层的缓存上限,导致每次招聘请求会上传都包含多次I/O操作。庞大的元数据成为整个照片架构的瓶颈。这就是为什么 Facebook 主要依赖 CDN 的原因。为了解决这些问题,他们做了两项优化:# Cachr: 一个缓存服务器,缓存 Facebook 的小尺寸用户资料照片。# NFS文件句柄缓存:部署在照片输出层,以降低 NFS 存储层的元数据开销。新的 Haystack 照片架构新的照片架构将输出层和存储层合并为一个物理层,建立在一个基于 HTTP 的照片服务器上,照片存储在一个叫做 haystack 的对象库,以消除照片读取操作中不必要的元数据开销。新架构中,I/O 操作只针对真正的照片数据(而不是文件系统元数据)。haystack 可以细分为以下几个功能层:# HTTP 服务器# 照片存储# Haystack 对象存储# 文件系统# 存储空间存储Haystack 部署在商业存储刀片服务器上,典型配置为一个2U的服务器,包含:# 两个4核CPU# 16GB – 32GB 内存# 硬件 RAID,含256-512M NVRAM 高速缓存# 超过12个1TB SATA 硬盘每个刀片服务器提供大约10TB的存储能力,使用了硬件 RAID-6, RAID 6在保持低成本的基础上实现了很好的性能和冗余。不佳的写性能可以通过高速缓存解决,硬盘缓存被禁用以防止断电损失。文件系统Haystack 对象库是建立在10TB容量的单一文件系统之上。文件系统中的每个文件都在一张区块表中对应具体的物理位置,目前使用的文件系统为 XFS。Haystack 对象库Haystack 是一个简单的日志结构,存储着其内部数据对象的指针。一个 Haystack 包括两个文件,包括指针和索引文件:Haystack 对象存储结构指针和索引文件结构Haystack 写操作Haystack 写操作同步将指针追加到 haystack 存储文件,当指针积累到一定程度,就会生成索引写到索引文件。为了降低硬件故障带来的损失,索引文件还会定期写道存储空间中。Haystack 读操作传到 haystack 读操作的参数包括指针的偏移量,key,代用Key,Cookie 以及数据尺寸。Haystack 于是根据数据尺寸从文件中读取整个指针。Haystack 删除操作删除比较简单,只是在 Haystack 存储的指针上设置一个已删除标志。已经删除的指针和索引的空间并不回收。照片存储服务器照片存储服务器负责接受 HTTP 请求,并转换成相应的 Haystack 操作。为了降低I/O操作,该服务器维护着全部 Haystack 中文件索引的缓存。服务器启动时,系统就会将这些索引读到缓存中。由于每个节点都有数百万张照片,必须保证索引的容量不会超过服务器的物理内存。对于用户上传的图片,系统分配一个64位的独立ID,照片接着被缩放成4种不同尺寸,每种尺寸的图拥有相同的随机 Cookie 和 ID,图片尺寸描述(大,中,小,缩略图)被存在代用key 中。接着上传服务器通知照片存储服务器将这些资料联通图片存储到 haystack 中。每张图片的索引缓存包含以下数据Haystack 使用 Google 的开源 sparse hash data 结构以保证内存中的索引缓存尽可能小。照片存储的写/修改操作写操作将照片数据写到 Haystack 存储并更新内存中的索引。如果索引中已经包含相同的 Key,说明是修改操作。照片存储的读操作传递到 Haystack 的参数包括 Haystack ID,照片的 Key, 尺寸以及 Cookie,服务器从缓存中查找并到 Haystack 中读取真正的数据。照片存储的删除操作通知 Haystack 执行删除操作之后,内存中的索引缓存会被更新,将便宜量设置为0,表示照片已被删除。重新捆扎重新捆扎会复制并建立新的 Haystack,期间,略过那些已经删除的照片的数据,并重新建立内存中的索引缓存。HTTP 服务器Http 框架使用的是简单的 evhttp 服务器。使用多线程,每个线程都可以单独处理一个 HTTP 请求。结束语Haystack 是一个基于 HTTP 的对象存储,包含指向实体数据的指针,该架构消除了文件系统元数据的开销,并实现将全部索引直接存储到缓存,以最小的 I/O 操作实现对照片的存储和读取。本文国际来源:http://www.facebook.com/FacebookEngineering#/note.php?note_id=76191543919&ref=mf中文翻译来源:COMSHARP CMS 官方网站
2011年07月07日
24 阅读
2 评论
0 点赞
2011-07-06
关于大型网站构架的简要分析
一个小型的网站,比如个人网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构、性能的要求都很简单,随着互联网业务的不断丰富,网站相关的技术经过这些年的发展,已经细分到很细的方方面面,尤其对于大型网站来说,所采用的技术更是涉及面非常广,从硬件到软件、编程语言、数据库、WebServer、防火墙等各个领域都有了很高的要求,已经不是原来简单的html静态网站所能比拟的。 大型网站,比如门户网站。在面对大量用户访问、高并发请求方面,基本的解决方案集中在这样几个环节:使用高性能的服务器、高性能的数据库、高效率的编程语言、还有高性能的Web容器。但是除了这几个方面,还没法根本解决大型网站面临的高负载和高并发问题。 上面提供的几个解决思路在一定程度上也意味着更大的投入,并且这样的解决思路具备瓶颈,没有很好的扩展性,下面我从低成本、高性能和高扩张性的角度来说说我的一些经验。 1、HTML静态化 其实大家都知道,效率最高、消耗最小的就是纯静态化的html页面,所以我们尽可能使我们的网站上的页面采用静态页面来实现,这个最简单的方法其实也是最有效的方法。但是对于大量内容并且频繁更新的网站,我们无法全部手动去挨个实现,于是出现了我们常见的信息发布系统CMS,像我们常访问的各个门户站点的新闻频道,甚至他们的其他频道,都是通过信息发布系统来管理和实现的,信息发布系统可以实现最简单的信息录入自动生成静态页面,还能具备频道管理、权限管理、自动抓取等功能,对于一个大型网站来说,拥有一套高效、可管理的CMS是必不可少的。 除了门户和信息发布类型的网站,对于交互性要求很高的社区类型网站来说,尽可能的静态化也是提高性能的必要手段,将社区内的帖子、文章进行实时的静态化,有更新的时候再重新静态化也是大量使用的策略,像Mop的大杂烩就是使用了这样的策略,网易社区等也是如此。 同时,html静态化也是某些缓存策略使用的手段,对于系统中频繁使用数据库查询但是内容更新很小的应用,可以考虑使用html静态化来实现,比如论坛中论坛的公用设置信息,这些信息目前的主流论坛都可以进行后台管理并且存储再数据库中,这些信息其实大量被前台程序调用,但是更新频率很小,可以考虑将这部分内容进行后台更新的时候进行静态化,这样避免了大量的数据库访问请求。 2、图片服务器分离 大家知道,对于Web服务器来说,不管是Apache、IIS还是其他容器,图片是最消耗资源的,于是我们有必要将图片与页面进行分离,这是基本上大型网站都会采用的策略,他们都有独立的图片服务器,甚至很多台图片服务器。这样的架构可以降低提供页面访问请求的服务器系统压力,并且可以保证系统不会因为图片问题而崩溃,在应用服务器和图片服务器上,可以进行不同的配置优化,比如apache在配置ContentType的时候可以尽量少支持,尽可能少的 LoadModule,保证更高的系统消耗和执行效率。 3、数据库集群和库表散列 大型网站都有复杂的应用,这些应用必须使用数据库,那么在面对大量访问的时候,数据库的瓶颈很快就能显现出来,这时一台数据库将很快无法满足应用,于是我们需要使用数据库集群或者库表散列。 在数据库集群方面,很多数据库都有自己的解决方案,Oracle、Sybase等都有很好的方案,常用的MySQL提供的Master/Slave也是类似的方案,您使用了什么样的DB,就参考相应的解决方案来实施即可。 上面提到的数据库集群由于在架构、成本、扩张性方面都会受到所采用DB类型的限制,于是我们需要从应用程序的角度来考虑改善系统架构,库表散列是常用并且最有效的解决方案。我们在应用程序中安装业务和应用或者功能模块将数据库进行分离,不同的模块对应不同的数据库或者表,再按照一定的策略对某个页面或者功能进行更小的数据库散列,比如用户表,按照用户ID进行表散列,这样就能够低成本的提升系统的性能并且有很好的扩展性。sohu的论坛就是采用了这样的架构,将论坛的用户、设置、帖子等信息进行数据库分离,然后对帖子、用户按照板块和ID进行散列数据库和表,最终可以在配置文件中进行简单的配置便能让系统随时增加一台低成本的数据库进来补充系统性能。 4、缓存 缓存一词搞技术的都接触过,很多地方用到缓存。网站架构和网站开发中的缓存也是非常重要。这里先讲述最基本的两种缓存。高级和分布式的缓存在后面讲述。 架构方面的缓存,对Apache比较熟悉的人都能知道Apache提供了自己的缓存模块,也可以使用外加的Squid模块进行缓存,这两种方式均可以有效的提高Apache的访问响应能力。 网站程序开发方面的缓存,Linux上提供的Memory Cache是常用的缓存接口,可以在web开发中使用,比如用Java开发的时候就可以调用MemoryCache对一些数据进行缓存和通讯共享,一些大型社区使用了这样的架构。另外,在使用web语言开发的时候,各种语言基本都有自己的缓存模块和方法,PHP有Pear的Cache模块,Java就更多了,.net不是很熟悉,相信也肯定有。 5、镜像 镜像是大型网站常采用的提高性能和数据安全性的方式,镜像的技术可以解决不同网络接入商和地域带来的用户访问速度差异,比如ChinaNet和 EduNet之间的差异就促使了很多网站在教育网内搭建镜像站点,数据进行定时更新或者实时更新。在镜像的细节技术方面,这里不阐述太深,有很多专业的现成的解决架构和产品可选。也有廉价的通过软件实现的思路,比如Linux上的rsync等工具。 6、负载均衡 负载均衡将是大型网站解决高负荷访问和大量并发请求采用的终极解决办法。 负载均衡技术发展了多年,有很多专业的服务提供商和产品可以选择,我个人接触过一些解决方法,其中有两个架构可以给大家做参考。 硬件四层交换 第四层交换使用第三层和第四层信息包的报头信息,根据应用区间识别业务流,将整个区间段的业务流分配到合适的应用服务器进行处理。 第四层交换功能就象是虚 IP,指向物理服务器。它传输的业务服从的协议多种多样,有HTTP、FTP、NFS、Telnet或其他协议。这些业务在物理服务器基础上,需要复杂的载量平衡算法。在IP世界,业务类型由终端TCP或UDP端口地址来决定,在第四层交换中的应用区间则由源端和终端IP地址、TCP和UDP端口共同决定。 在硬件四层交换产品领域,有一些知名的产品可以选择,比如Alteon、F5等,这些产品很昂贵,但是物有所值,能够提供非常优秀的性能和很灵活的管理能力。Yahoo中国当初接近2000台服务器使用了三四台Alteon就搞定了。 7、软件四层交换 大家知道了硬件四层交换机的原理后,基于OSI模型来实现的软件四层交换也就应运而生,这样的解决方案实现的原理一致,不过性能稍差。但是满足一定量的压力还是游刃有余的,有人说软件实现方式其实更灵活,处理能力完全看你配置的熟悉能力。 软件四层交换我们可以使用Linux上常用的LVS来解决,LVS就是Linux Virtual Server,他提供了基于心跳线heartbeat的实时灾难应对解决方案,提高系统的鲁棒性,同时可供了灵活的虚拟VIP配置和管理功能,可以同时满足多种应用需求,这对于分布式的系统来说必不可少。 一个典型的使用负载均衡的策略就是,在软件或者硬件四层交换的基础上搭建squid集群,这种思路在很多大型网站包括搜索引擎上被采用,这样的架构低成本、高性能还有很强的扩张性,随时往架构里面增减节点都非常容易。这样的架构我准备空了专门详细整理一下和大家探讨。 对于大型网站来说,前面提到的每个方法可能都会被同时使用到,我这里介绍得比较浅显,具体实现过程中很多细节还需要大家慢慢熟悉和体会,有时一个很小的 squid参数或者apache参数设置,对于系统性能的影响就会很大,希望大家一起讨论,达到抛砖引玉之效。FROM:51CTO
2011年07月06日
13 阅读
0 评论
0 点赞
2011-07-06
Facebook 的 PHP 性能与扩展性
炙手可热的 Facebook 是用 PHP 开发的。随着一些技术交流,逐渐能看到 Facebook 技术人员分享的经验。近期这个 geekSessions 站点上看到 Facebook 的 Lucas Nealan 分享的文档比较有参考价值。Cache 为 王任何一个成功的站点都有一套最合适自己的 Cache 策略。Note:这个层次图画的稍微有点问题,不是严格从上到下的。The Alternative PHP Cache , APCFacebook 平均每个用户每天要访问超过 50 个页面,PHP的页面载入时间的优化就比较重要了。在 PHP Cache 层,Facebook 采用了 APC。关于facebook APC 介绍的PDF.Lucas Nealan 的 PPT 举了一个例子,一个页面显示的时间从 4000 多毫秒降到了 100 多 毫秒。在 apc.stat 关闭的模式下,性能还要更好一些。不过需要重启动或用apc_cache_clear() 来通知更新。Memcached 层APC Cache 的是非用户相关的信息,而用户相关的数据 Cache 当然是在 Memcached 中。Facebook 部署了超过 400 台 Memcached 服务器,超过 5TB 的数据在 Memcached 中。这是当前世界上最大的 Memcached 集群了。也给 Memcached 贡献了不少代码,包括 UDP 的支持和性能上的提升(性能提升超过 20%)。程序 ProfilingFacebook 开发人员大量采用 Callgrind 、APD、 xdebug 、KCachegrind 等工具进行基准性能测试。任何一个 Web 项目,这也是不可或缺,也是比较容易忽略的一环。所有开发人员都应该具备熟练使用这些工具的能力才好。补充一下:语言的选择为什么 Facebook 选择 PHP 而不是其他语言? 用Flickr 的 Cal Henderson 这句话就能说明了: “Languages’s don’t Scale, Architecture Scale”。从 80-20 的原则看,APC 和 Memcached 是最主要的。在这两个环节上下功夫,受益/开销比要大于另外几个环节。(上面的图是从 Lucas Nealan 的文档截的,版权所有是他的)作者: Fenng网址: http://www.dbanotes.net/arch/facebook_php.html
2011年07月06日
20 阅读
0 评论
0 点赞
2011-07-05
MySQL 5.4发布beta版
Sun在第七届MySQL展会上发布了其最新版开源数据库MySQL 5.4的技术预览版本,MySQL 5.4在性能和可伸缩性上进行了重大改进。MySQL 5.4支持InnoDB存储引擎扩展至16路x86服务器和64路CMT服务器,同时也优化了子查询和JION功能,将对特定查询的响应速度提升了90%,这些性能和可伸缩性的提升非常明显,而且不需使用额外应用程序或SQL代码。Sun软件架构和MySQL团队副总裁Karen Tegan Padir在大会的主题演讲时表示:“不需要对应用程序进行任何修改,MySQL 5.4将显著提高它们的性能和可伸缩性,MySQL 5.4也更加适用于扩展SMP系统上的部署。”MySQL 5.4新增功能和性能提升:1、可伸缩性提升:支持InnoDB存储引擎扩展至16路x86服务器和64路CMT服务器,性能提升了一倍;2、子查询优化:提高了分析查询操作的性能,相比之前版本,子查询执行时间缩短;3、新的查询运算法则:利用主存加快多路连接尤其是MySQL集群的执行速度;4、改进了存储过程:增强了SIGNAL/RESIGNAL功能的错误管理能力,应用程序可以更轻松地依赖商业逻辑的存储过程;5、完善了prepared statements:prepared statements中新增了对输出参数的支持;6、改善了信息数据库:为存储过程提供了更多的元数据存取方式,开发人员在使用ODBC和JDBC之类的连接器时可以获取更多的信息;7、改进了对DTrace的支持:提高了Solaris操作系统上的MySQL的诊断和故障排除能力。支持平台:MySQL 5.4适用于多种硬件和软件平台,包括:红帽企业版Linux(RHEL)、Novell的SuSE Enterprise Linux、微软的Windows、Sun的Solaris 10、苹果的Mac OS X、Free BSD、HP-UX、IBM AIX、IBM i5/OS和其他Linux发行版本。目前MySQl 5.4技术预览版本仅支持64位Linux和Solaris 10系统,正式版本将在今年晚些时候发布。官方下载: http://dev.mysql.com/downloads/mysql/5.4.html
2011年07月05日
23 阅读
0 评论
0 点赞
2011-07-05
IBM推出软件开发人员SNS站点My developerWorks
据国外媒体报道报道,IBM推出面向软件开发人员社交网站。对软件开发人员而言,IBM的developerWorks是全球最大的在线技术来源,developerWorks用户约有800万人,占全球软件开发人员的一半。今天,IBM为这些软件开发人员推出了专门的社交网站My developerWorks。My developerWorks与Facebook、LinkedIn或者其他所有我们知道的社交网站都不一样,该社交网站主要聚焦于技术的讨论。在My developerWorks上,全球范围的技术人员可以寻找特定的知识或技能,利用该社交网站的群组、讨论主题和个人资料来判断谁是某一特定领域的专 家。My developerWorks最令人兴奋的前景是不断合作的可能性。IBM所要做的就是如何展示这些技术人员的个人资料,让业务开发、营销、设计、管理和风投人员找到需要的技术人员。那么,初创公司就会不停地出现。一位IBM代表周三晚间通过电子邮件表示:“IBM的目标是,利用My developerWorks,将全球范围的软件开发人员联系起来,让他们在Java、Linux和XML等开放标准的基础上能更容易地进行技术创新。 IBM希望软件开发人员能在分析、清洁技术和云计算等热门技术领域占有一席之地。”那么,为软件开发人员推出专门的社交网站能给IBM带来什么好处?目前还没有关于这方面的评论,不过参与My developerWorks的个人和组织都会获利。
2011年07月05日
16 阅读
0 评论
0 点赞
2011-07-04
动态基础架构 帮助构建“智慧的地球”
世界正在变得更小、更扁平—但也必须变得更智能。每天,世界都变得更加仪器化、互连和智能化,从而在社会和组织层面都创造了新的机遇。在这个日益数字化的世界中,我们可以解决棘手的问题,使企业更加靠近客户,并且显著缩短决策周期,帮助高级主管实现竞争优势。当前的企业面临的主要挑战是:• 实现卓越的区别化服务交付• 降低成本,并且提高所有业务资产的投资回报• 管理并控制业务风险• 敏捷且快速地采取行动应对任何一项挑战—更不必说应对所有挑战—都要求企业的底层业务和IT基础设施具有极高的灵活性和响应能力。但是,当前基础设施中的许多资产缺乏弹性、处于孤立状态,并且过时,导致成本和复杂性高得难以承受,同时阻碍企业的灵活运作。当前的基础设施并未做好应对未来挑战的准备。对于许多企业来说—变革势在必行。变革可能实现,工具已经存在,而且任务已经明确。这些对于解决当前的问题是必要的条件,但不是充分条件—我们还必须抓住未来的机遇。为了实现这两方面的目标,现在我们应该开始以不同的方式来思考基础设施。IBM已经制订出了针对动态基础架构的战略,将帮助企业满足客户对服务的更高期望,解决居高不下的成本压力以及新的风险和威胁,同时为实现突破性的生产力、更快地创造价值以及更高的响应速度奠定基础,从而实现企业和社会所要求的更快速度。在这个智能的世界中,我们的基础设施需要促进我们的发展,而不能阻碍发展。这样的基础设施正变得仪器化、互连和智能化,从而将业务和IT基础设施结合在一起,为企业创造新的机遇。
2011年07月04日
16 阅读
0 评论
0 点赞
2011-07-04
How Secure Are Query Strings Over HTTPS?
A common question we hear is “Can parameters be safely passed in URLs to secure web sites? ” The question often arises after a customer has looked at an HTTPS request in HttpWatch and wondered who else can see this data.For example, let’s pretend to pass a password in a query string parameter using the following secure URL:https://www.httpwatch.com/?password=mypasswordHttpWatch is able to show the contents of a secure request because it is integrated with the browser and can view the data before it is encrypted by the SSL connection used for HTTPS requests:If you look in a network sniffer, like Network Monitor, at the same request you would just see the encrypted data going backwards and forwards. No URLs, headers or content is visible in the packet trace::You can rely on an HTTPS request being secure so long as: No SSL certificate warnings were ignored The private key used by the web server to initiate the SSL connection is not available outside of the web server itself. So at the network level, URL parameters are secure, but there are some other ways in which URL based data can leak: URLs are stored in web server logs- typically the whole URL of each request is stored in a server log. This means that any sensitive data in the URL (e.g. a password) is being saved in clear text on the server. Here’s the entry that was stored in the httpwatch.com server log when a query string was used to send a password over HTTPS:2009-02-20 10:18:27 W3SVC4326 WWW 208.101.31.210 GET /Default.htm password=mypassword 443 ...It’s generally agreed that storing clear text passwords is never a good idea even on the server. URLs are stored in the browser history – browsers save URL parameters in their history even if the secure pages themselves are not cached. Here’s the IE history displaying the URLparameter:Query string parameters will also be stored if the user creates a bookmark. URLs are passed in Referrer headers – if a secure page uses resources, such as javascript, images or analytics services, the URL is passed in the Referrer request header of each embedded request. Sometimes the query string parameters may be delivered to and stored by third party sites. In HttpWatch you can see that our password query string parameter is being sent across to Google Analytics: ConclusionThe solution to this problem requires two steps: Only pass around sensitive data if absolutely necessary. Once a user is authenticated it is best to identify them with a session ID that has a limited lifetime. Use non-persistent, session level cookies to hold session IDs and other private data. The advantage of using session level cookies to carry this information is that: They are not stored in the browsers history or on the disk They are usually not stored in server logs They are not passed to embedded resources such as images or javascript libraries They only apply to the domain and path for which they were issued Here’s an example of the ASP.NET session cookie that is used in our online store to identity a user:Notice that the cookie is limited to the domain store.httpwatch.com and it expires at the end of the browser session (i.e. it is not stored to disk).You can of course use query string parameters with HTTPS, but don’t use them for anything that could present a security problem. For example, you could safely use them to identity part numbers or types of display like ‘accountview’ or ‘printpage’, but don’t use them for passwords, credit card numbers or other pieces of information that should not be publicly available.
2011年07月04日
22 阅读
0 评论
0 点赞
2011-07-03
闲谈 Web 图片服务器
现在很多中小网站(尤其是 Web 2.0 站点) 都允许用户上传图片,如果前期没有很好的规划,那么随着图片文件的增多,无论是管理还是性能上都带来很多问题。就自己的一点理解,抛砖引玉,以期能引出更具价值的信息。事关图片的存储把图片存储到什么介质上? 如果有足够的资金购买专用的图片服务器硬件或者 NAS 设备,那么简单的很;如果有能力自己开发单独存储图片的文件系统,那么也不用接着往下看了。如果上述条件不具备,只想在普通的硬盘上存储,首先还是要考虑一下物理硬盘的实际处理能力。是 7200 转的还是 15000 转的,实际表现差别就很大。是选择 ReiserFS 还是 Ext3 ,怎么也要测试一下吧? 创建文件系统的时候 Inode 问题也要加以考虑,选择合适大小的 inode size ,在空间和速度上做取舍,同时防患于未然,注意单个文件系统下文件个数别达到极限。独立,独立的服务器无论从管理上,还是从性能上看,只要有可能,尽量部署独立的图片服务器。这几乎成为常识了(不过在我做过面向 Web 的项目之前就这个问题也被人笑话过)。具备独立的图片服务器或者服务器集群后,在 Web 服务器上就可以有针对性的进行配置优化。比如采用传说中更有效率的 Lighttpd 。如果不想在几台机器间同步所有图片,只用 NFS 模式共享一下即可。注意软、硬连接可能带来的问题,以及 NFS 特定的传输速度。独立,独立的域名如果大部分 Web 页面必须要载入很多图片,那么需要注意 IE 浏览器的连接数问题(参见对该问题的测试)。前几天有个朋友在线上问我,”一些大网站,图片服务器为什么都用另外一个域名? 比如yahoo.com 图片服务器用了 yimg.com 的域名?” ,粗糙一点的答案:除了管理方便,便于CDN 同步处理,上面说的 IE 连接数限制也是个考虑因素吧(其他原因我也不知,有请 Yahoo!的同学发言) 【还有一个我没考虑到的是 Cookie 的因素,参加楼下高春辉的留言】雅虎 Web 优化 14 条关于雅虎 YSlow 工具倡导的优化 14 条规则,建议每个 Web 维护人员必须倒背如流,当然也应该辩证来看–介绍这 14 条规则的页面本身也只能得到 70 多分…其中的第九条和上面说的独立域名之间多少有些矛盾。实际情况要根据自己的 Benchmark 与具体需求而确定了。有效利用客户端 Cache很多网站的 UI 设计人员为了达到某些视觉效果,会在一些用户需要频繁访问的页面模块上应用大量的图片。这样的情况,研究表明,对于用户粘度比较高的站点, 在Web 服务器上对这一类对象设置 Expires Header 就是十分有必要的,大量带宽就这么节省下来,费用也节省了下来。顺便说一下,对于验证码这样的东西,要加个简单的规则过滤掉。服务器端的 Cache在国内,CDN 也是有钱才能玩得起。而类似 Amazon S3 这样的一揽子存储服务,国内还没有出现。所以,充分利用服务器端的 Cache 也是有必要的。Squid 作为反向代理服务器,缓冲图片效果应该说尚可,新浪技术团队贡献的 Ncache 据评测,效果更佳。高解析图片问题如果网站存在大量高解析度的图片,那么有必要考虑部署 IIPImage 或者类似的软件。运营问题很多比较有规模的网站对于用户上传的图片不做任何处理,结果页面上还能看到很多 BMP 格式的图片(个人觉得任何网站出现 BMP 格式的图片都是可耻的)…这完全是运营上的策略之误了。找个程序员投入一点时间写个图片处理模块,对那些”截屏”得来的图片做个转换,投入成本可能远比存储上的开销小,而用户再访问该图片,质量未必能有什么损失,浏览速度无疑好多了。哪种处理方式更让人接受,不言而喻。FROM:http://www.dbanotes.net/web/web_image_server.html
2011年07月03日
15 阅读
0 评论
0 点赞
1
...
5
6
7