|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
先说优点,首先和C,C++这些语言比起来,java很简单,去掉指针的java,非常好理解,自动垃圾回收机制也很好,自从JDK1.5推出以后,性能上又有了很大提高。
写这篇文章之前,我也特地跟之前的同事做了一些交换,在此感激sinaxiangdong、kingsoftzhangyan和yahooluke。别的,另有网上的伴侣对我上一节的文章宣布了很多有建立性批评,在这里一并感激。
memcached最吸惹人的中央次要在于它的散布式。散布式关于互联网使用来说,依照用处基础上可分别为三种体例:散布式盘算、散布式存储和二者兼而有之。memcached是散布式存储的一种。我们罕见的散布式存储年夜多半是将N台设备(server大概独自的存储)构建成盘阵,而memcached旨在构建一个高速的内存池。更普通一点来说:散布式盘算是将N颗cpu组装成一颗cpu,散布式慢速存储是将N个硬盘组装成一个年夜硬盘,memcached是将N块内存组装成一块年夜内存。
有个伴侣问:那是否是价值很高贵啊。我的回覆是一定的。假如你的网站规模只要三两台服务器的话,我以为你就不必思索如许的计划了,等你的网站做年夜了今后,再参考这方面的材料便可。一样平常都是对照年夜的互联网公司为了寻求更好的用户体验,才举行这方面的投资,对他们来说,用户体验至上,money是小case。
另有伴侣问:有一些dbms供应内存表的功效,好比mysql的内存表,能够取代memcached。但我要倡议你的是:mysql的内存表的确起到一样的感化,但它的局限也良多,常常不克不及让你为所欲为,以是倡议你不要走弯路。
2、memcached的使用场景
2.1使用局限
memcached产物或相干手艺的使用,我们在后面已提到了一些。实在它的应用仍是十分广泛的,使用作为普遍的范畴:比方sns类网站、blog类网站、bbs类网站和im背景服务。
2.2sns类网站的使用
livejournal.com是99年始于校园中的项目,有点像中国的校内网。几个先生纯属出于喜好做了如许一个网站,次要完成以下功效:sns、blog、bbs和rss等。livejournal从创建入手下手就接纳了大批的开源软件,到如今它自己也衍生了不少开源软件。sns网站,如今屈指可数,范围对照年夜的象高兴、校内、51,它们的页面上常常必要援用大批的用户信息、密友信息和文章信息等,以是跨表或跨库操纵会相称多。假如这些功效全体间接操纵数据库,明显会带来极年夜的效力消耗和体系负载。memcached在如许的场景下就会发扬伟大的感化,它接纳年夜内存把这些稳定的数据全都缓存起来,当数据修正时就关照cache过时,如许使用层基础上就能够办理年夜部分成绩了,只要很小一部分哀求穿透使用层,用到数据库。
2.3blog、bbs类网站的使用
象blog.sina.com.cn这些流量伟大的blog体系,它必要频仍读写的一些小数据。个中最典范的使用,我们一般成为“数字类服务”,好比blog中必要及时显现的用户点击数和浏览数,bbs中必要纪录的在耳目数、在线用户等。这些小数据的处置十分烦琐,你不管怎样往计划数据库,都很难避开跨表大概跨库。有的伴侣会说,能够在数据库中增添冗余字段办理这类成绩,但现实上,这既不切合数据库计划的范式划定规矩,也很难做到数据的分歧性,由此会激发更加庞大的成绩。并且因为产物线的分离开展,数据已很难做到完整的一致计划。memcached在如许的场景下就会将这些小数据举行缓存,按期耐久化就能够了,查询操纵一向都在内存中运转。说到这里,有的伴侣又会想到一些别的的成绩:“memcachedserver宕机了怎样办,怎样包管与数据库的数据分歧”。我会对你说:“你的成绩十分好,我们将会在前面章节给出响应的办理计划”。别的,实在这类小数据并非关头性数据,即便偶然产生点毛病,也没太年夜的成绩。blog、bbs体系并非严厉的企业级体系,假设你是为银行营业供应办理计划的话,memcached其实不合适。
2.4imserver的使用
前些工夫,有一些文章先容memcached在Jabber上使用。写累了,喝口水,读者本人往找找材料吧,偶然间的话,帮我补上吧,呵呵。
我们举了几个例子来讲明memcached的使用场景,仿佛都范围于小数据服务,那是否是就不克不及用于较年夜数据的缓冲了?那毫不是,memcached可以用来存储各种格局的数据,包含图象、视频、文件和数据库检索的了局等等,并且临盆环境中就这么跑过,只不外让年夜数据量利用缓冲的话,有点太华侈了,一样数目的内存存不了几条数据,以是会分明的下降射中率。
进而能拉拢大多数程序员用windows产品。并且从ASP.NETAJAX可以跨平台这一点上,间接证明了我们的推断,至少证明了微软做过这方面的研究。所以如果哪一天突然听说了.net可以跨平台了,那么请不要吃惊,如果这一天真的到来,java就到了真正和.net决战的时刻。因为不到万不得以的时候微软是不会推出跨平台的.net的,如果跨平台的.net还不足以对抗java的话,那么微软还剩的手段就是开源了,呵呵。 |
|