深爱那片海 发表于 2015-1-18 11:09:40

发布一篇memcached在年夜负载高并发网站上的使用(二)---使用场景

先说优点,首先和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的话,那么微软还剩的手段就是开源了,呵呵。

蒙在股里 发表于 2015-1-20 15:32:13

接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。

不帅 发表于 2015-1-21 16:21:40

Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)

第二个灵魂 发表于 2015-1-30 21:05:10

Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。

分手快乐 发表于 2015-2-1 16:07:08

如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。

金色的骷髅 发表于 2015-2-1 19:40:27

关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。

若天明 发表于 2015-2-4 20:36:15

象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。

admin 发表于 2015-2-6 19:39:05

不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。

兰色精灵 发表于 2015-2-11 20:47:48

你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。

飘灵儿 发表于 2015-3-2 18:30:11

J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。

飘飘悠悠 发表于 2015-3-11 05:17:13

其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。

小魔女 发表于 2015-3-17 21:09:25

你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。

深爱那片海 发表于 2015-3-25 02:41:50

那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!
页: [1]
查看完整版本: 发布一篇memcached在年夜负载高并发网站上的使用(二)---使用场景