??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲欧美国产毛片在线,一区在线播放视频,中文字幕一区二区三区免费视频 http://www.aygfsteel.com/javavaj/zh-cnTue, 17 Jun 2025 10:37:46 GMTTue, 17 Jun 2025 10:37:46 GMT60让memcached和mysql更好的工?转蝲)http://www.aygfsteel.com/javavaj/archive/2011/12/09/365996.htmljavavajjavavajFri, 09 Dec 2011 12:02:00 GMThttp://www.aygfsteel.com/javavaj/archive/2011/12/09/365996.htmlhttp://www.aygfsteel.com/javavaj/comments/365996.htmlhttp://www.aygfsteel.com/javavaj/archive/2011/12/09/365996.html#Feedback0http://www.aygfsteel.com/javavaj/comments/commentRss/365996.htmlhttp://www.aygfsteel.com/javavaj/services/trackbacks/365996.html
   原文地址
    q次?/span>Fotolog的经验,传说中比Flickr更大的网站,Fotolog?1台服务器上部|了(jin)51个memcached实例Q总计?54G~存I间可用Q缓存了(jin)多达175G的内容,q个数量比很多网站的数据库都要大的多Q原文是A Bunch of Great Strategies for Using Memcached and MySQL Better TogetherQ我q里q是选择性的译以及(qing)按照我的理解补充Q感?/span>Todd HoffQ总能l我们一些学?fn)的案例Q从q里也能看出国外技术的开放态度Q不似我们,其实那么点九(ji)?ji)还藏着掖着Q好?jin),q入正题?/span>

    
一、关于memcached

  q不知道q个Q那你去面试的时候要吃亏?jin),赶紧d方网站看一?a target="_blank" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; list-style-image: initial; text-decoration: none; color: #006666; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">http://www.danga.com/memcached/Q另外google一下用法,盘L太慢Q把数据存在内存里面吧,如果你只有一台服务器Q推荐用一?a target="_blank" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; list-style-image: initial; text-decoration: none; color: #006666; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">APC(Facebook在用)或?a target="_blank" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; list-style-image: initial; text-decoration: none; color: #006666; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">eaccelerator或?a target="_blank" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; list-style-image: initial; text-decoration: none; color: #006666; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">Xcache(国h开发的)Q这些品单机效果更好,如果你需要分布式的缓存方案,那么用memcached吧?/p>

    二、memcached如何与mysqlq肩作战Q?/strong>
    
    «  通过数据库分片来解决数据库写扩展的问题把数据库分片,部vC同的服务器上Q免得只有一个主服务器,写操作成为瓶颈以?qing)可能有?#8220;单点故障”Q一般的数据库分片主要是按照业务          ?分,可能的拆分业务Q不相干的都独立h做成服务也好
    «  前端mysql和一堆memcached服务器来应付ȝ问题应用E序首先从memcached中获取数据,获取不到再从数据库中获得q保存在memcached中,以前看过一文章说好的应用95Q的?         据从memcache的中获得Q?Q的数据从mysql的query cache中获得,剩下2Q才L表,Ҏ(gu)一下你的应用,差距有多q?
    «  通过mysql复制Qmaster-slaveQ来解决ȝ问题
        首先mysql数据库通过master-slaved分离Q多个slave来应对应用程序读的操作?/span>
    三、ؓ(f)什么不用mysql的query cacheQ?/strong>

 我们都知道mysql有个query cacheQ可以缓存上ơ查询的l果Q可实际上帮不上太多的忙Q下面是mysql quety cache的不I(x)
    « 只能有一个实?
       意味着你能存储内容的上限就是你服务器的可用内存Q一台服务器能有多少内存Q你又能存多呢Q?br />     « 只要有写操作Qmysql的query cache失?br />     « 只要数据库内容稍有改变,那怕改变的是其他行Qmysql的query cache也会(x)失效
    « mysql的query cache只能~存数据库数据行
       意味着其他内容都不行,比如数组Q比如对象,而memcached理论上可以缓存Q何内容,甚至文g^_^

    四、Fotolog的缓存技?br />     非确定性缓存你不确定你要的数据~存中有没有Q你也不知道是不是过期了(jin)Q于是你p探性的问memcachedQ我要的什么什么数据你那有吗?我可不要q期的数据啊Qmemcached告诉你说有ƈ且给       你,你就开?j)?jin)Q如果没有呢Q你p从数据库或者别的地方去获取?jin),q是memcached典型的应用?br />     主要应用在:(x)
        1.复杂的数据需要多ơ读取,你的数据库做?jin)分片处理,从多个数据库中获取数据ƈl合h是一个非常大的开销Q你大可以把q些数据取出来之后存到memcached?/p>

        2.mysql query cache的一个好的替代方案,q样数据库其他部门改变了(jin)Q只要自己没改变没问题Q注意数据库更新的问题,后面?x)提刎ͼ?j)

        3.把关pL者列表缓存v来,比如某个栏目下的多篇文章列表

        4.被多个页面调用ƈ且获取v来很慢的数据Q或者是更新很慢的数据,比如文章览排行?/p>

        5.如果cache的开销过重新获取的开销Q那么不要缓存它?/p>

        6.标签云和自动(cMgoogle sugest)

        例如Q当一个用户上传一个图片,q个用户的好友页面上都要列出q张囄来,那么把它~存h吧?/p>

    潜在问题Q?br />     memcached消耗的主要是服务器内存Q对CPU消耗很,所以Fotolog把memcached部v在他们的应用服务器上Q貌似我们也是这P(j)Q他们遇C(jin)CPU搞到90Q的使用率(怎么?x)那么高Q哪出问题了(jin)       吧)(j)、内存回Ӟq是个大问题Q等{问题?br />     状态缓存把应用服务的当前状态存在memcached中主要应用在Q?br />     1.“昂贵”的操作,开销大的操作

     2.sessions?x)话QFlickr把session存在数据库中Q个人感觉还是存memcached比较“便宜”些,如果memecached服务器down掉了(jin)Q那么重新登录吧?/p>

     3.记录用户在线信息(我们也是q样做的)

  • 定性缓存对于某些特定数据库的全部内容,都缓存到memcachedQ有一个专门的应用服务来保障你要的数据都在memcached中,其他应用服务直接从memcached中获取数据而不d数据库,因ؓ(f)数据库已l全部保存到memcached中ƈ保持同步。主要应用在Q?/li>

        1.d伸展Q所有的d都从memcached中获得,数据库没有负?/p>

        2.”怸q期“(相对?的数据,比如行政规划数据Q变动很吧

        3.l常调用的内?/p>

        4.用户的认证信?/p>

        5.用户的概要信?/p>

        6.用户的参数设|?/p>

        7.用户当前常用的媒体文件列表,比如用户的图?/p>

        8.用户dQ不走数据库Q只走memcachedQ个得这个不太好Q登录信息还是需要持久化的,用类似BDBq样效果也不错)(j)

使用方式Q?/strong>

    1.多个专门的缓存池而不是一个大的缓存服务器Q多个缓存池保障?jin)高可用性,一个缓存实例挂掉了(jin)走其他的~存实例Q所有的~存实例挂掉?jin),走数据库Q估计数据库抗不住^_^Q?/p>

    2.所有的~存池都用程序来l护Q比如数据库有更新时Q程序自动把更新后的内容同步到多个缓存实例中

    3.服务器重启之后,~存要比|站先启动,q就意味着当网站已l启动了(jin)Q所有的~存都可?/p>

    4.d的请求可以负载均衡到多个~存实例中去Q高性能Q高可靠?/p>

    潜在的问题:(x)

    1.你需要够多的内存来存储那么多的数据

    2.数据以行记录数据Q而memcached以对象来存储数据Q你的逻辑要把行列的数据{换成~存对象

    3.要维护多个缓存实例非帔R?Fotolog用Java/HibernateQ他们自己写?jin)个客户端来轮?/p>

    4.理多个~存实例?x)增加应用程序的许多开销Q但q些开销相对于多个缓存得到的好处来说不?jin)什?/p>

  • «d~存数据法般的出现在缓存中Q当数据库中有更新的时候,~存立马填充Q更新的数据被调用的可能性更高(比如一新文章Q看的的人当然多Q,是非定性缓存的一U变?原文是It’s non-deterministic caching with a twist.我觉得这L(fng)译怪怪的)。主要应用在Q?.预填充缓存:(x)让memcached可能的调用mysql如果内容不展现的话?.“预热”~存Q当你需要跨数据中心(j)复制的时候用步骤:(x)1.解析数据库更新的二进制日志,发现数据库更新时对memcached也进行同L(fng)更新

    2.执行用户自定义函敎ͼ讄触发器调用UDF更新Q具体参?a title="http://tangent.org/586/Memcached_Functions_for_MySQL.html" target="_blank" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; list-style-image: initial; text-decoration: none; color: #006666; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">http://tangent.org/586/Memcached_Functions_for_MySQL.html

    3.使用BLACKHOLE{略Q传说中Facebook也用mysql的Blackhole存储引擎来填充缓存,写到Blackhole的数据复制到~存中,Facebook用这来设|数据作废以?qing)跨国界的复Ӟ好处是数据库的复制不走mysqlQ这意味着没有二进制日志以?qing)对CPU使用不那么多Q啊Q难道通过memcached存储二进制日志,然后复制C同的数据库?有经验的同志在这个话题上可以补充。)(j)


    « 文gpȝ~存把文件直接缓存在memcached中,哇,够BT的,减轻NFS的负担,估计只缓存那些过于热门的囄吧?/p>

  • « 部分面内容~存如果面的某些部分获取v来非常费Ԍ以其~存面的原始数据还不如把页面的部分内容直接~存h直接调用
  • « 应用E序U别的复刉过API来更新缓存,API的执行细节如下:(x)1.一个应用把数据写到某个~存实例Q这个缓存实例把内容复制到其他缓存实例(memcached同步Q?.自动获得~存池地址以及(qing)实例个数3.同时对多个缓存实例更?.如果某个~存实例down掉了(jin)Q蟩C一个实例,直到更新成功整个q程非常高效以及(qing)低开销 
  • 其他技?/li>

        1.多节点以应对”单点故障”

        2.使用热备技术,当某个节点down掉了(jin)Q另外一台服务自动替换成它的IPQ这样客L(fng)不用更新memcached的IP地址

        3.memcached可以通过TCP/UDP讉KQ持l连接可以减轻负载,pȝ设计成可同时承受1000个连?/p>

        4.不同的应用服务,不同的缓存服务器?.(g)查一下你的数据大是否匹配你分配的缓存,更多请参?a target="_blank" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; list-style-image: initial; text-decoration: none; color: #006666; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">http://download.tangent.org/talks/Memcached%20Study.pdf

        6.不要考虑数据行缓存,~存复杂的对?/p>

        7.不要在你的数据库服务器上跑memcachedQ两个都是吃内存的怪兽

        8.不要被TCP延迟困扰Q本地的TCP/IP对内存复制是做了(jin)优化?/p>

        9.可能的q行处理数据

        10.q不是所有的memcached的客L(fng)都是一L(fng)Q仔l研I你用的语言所对应的(好像php和memcached配合的不错)(j)

        11.可能的是数据过期而不是数据无效Qmemcached可以讑֮q期旉

        12.选择一个好的缓存标识keyQ比如更新的时候加上版本号

        13.把版本号存储在memcached?/p>

  作者最后的感言我就不翻译了(jin)Q貌似mysql proxy正在做一个项目,自动同步mysql以及(qing)memcachedQ更多参?a target="_blank" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; list-style-type: none; list-style-position: initial; list-style-image: initial; text-decoration: none; color: #006666; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; ">http://jan.kneschke.de/2008/5/18/mysql-proxy-replicating-into-memcache

  后记Q前几天Q把Flickr架构(一)q篇文章发在PHPChina那的原创板块Q居然被理员当成Y文给删掉?jin),N因为我保留?jin)版权信息?匪夷所思?/p>

    

 



javavaj 2011-12-09 20:02 发表评论
]]>
Q{Qjavascript面向对象技术基http://www.aygfsteel.com/javavaj/archive/2009/05/20/271670.htmljavavajjavavajWed, 20 May 2009 02:51:00 GMThttp://www.aygfsteel.com/javavaj/archive/2009/05/20/271670.htmlhttp://www.aygfsteel.com/javavaj/comments/271670.htmlhttp://www.aygfsteel.com/javavaj/archive/2009/05/20/271670.html#Feedback0http://www.aygfsteel.com/javavaj/comments/commentRss/271670.htmlhttp://www.aygfsteel.com/javavaj/services/trackbacks/271670.html原创作? sdcyst
原址: http://www.javaeye.com/wiki/Object_Oriented_JavaScript



javavaj 2009-05-20 10:51 发表评论
]]>
手动dschema文ghttp://www.aygfsteel.com/javavaj/archive/2009/04/01/263458.htmljavavajjavavajWed, 01 Apr 2009 15:50:00 GMThttp://www.aygfsteel.com/javavaj/archive/2009/04/01/263458.htmlhttp://www.aygfsteel.com/javavaj/comments/263458.htmlhttp://www.aygfsteel.com/javavaj/archive/2009/04/01/263458.html#Feedback0http://www.aygfsteel.com/javavaj/comments/commentRss/263458.htmlhttp://www.aygfsteel.com/javavaj/services/trackbacks/263458.html 2.    点击“add”Q在新出现窗口中的key type中选择uriQ在location中选择“File System”
3.    在本地目录中选择相应的xsdQ比如spring-benas-2.0.xsdQ?br /> 4.    q回讄H口把设|窗口中的key type改ؓ(f)schemaLocationQ?br />         key讄为相应的xsd
        ?/font>http://www.springframework.org/schema/beans/spring-beans-2.0.xsd

javavaj 2009-04-01 23:50 发表评论
]]>
վ֩ģ壺 | | | ɽ| ޶| Ͻ| | ܱ| ʲ| | | Ϸ| Ϸ| ¡| | | | | | | α| | ľ| | ף| | Ӧ| ʯ| ˫| Ͳ| | ɽ| ɳ| ɽ| | ʲ| | | | | ˴|