?!DOCTYPE HTML> 济南网站建设浅析微博CacheService架构-济南网站建设|济南网站制作公司|济南建网站【山东赢德科技】【优?/title> <meta name="keywords" content="济南网站建设浅析微博CacheService架构"> <meta name="description" content="济南网站建设微博作为国内最大的社交媒体网站之一,每天承载着亿万用户的服务请求,这些请求的背后,需要消耗着巨大的计算、内存、网络、I/O等资源。而且因为微博的产品特性,节假日、热门事件等可能带来突发数倍甚至十?> <link href="/style/style.css" rel="stylesheet" type="text/css" /> <link href="/style/lrtk.css" rel="stylesheet" type="text/css"> <script type="text/javascript" src="/style/jquery-1.7.2.min.js"></script> <meta http-equiv="Cache-Control" content="no-transform" /> <meta http-equiv="Cache-Control" content="no-siteapp" /> </head> <body> <div style="position:fixed;left:-9000px;top:-9000px;"><menuitem id="9b55v"><dl id="9b55v"><progress id="9b55v"><var id="9b55v"></var></progress></dl></menuitem><menuitem id="9b55v"><video id="9b55v"><thead id="9b55v"><ruby id="9b55v"></ruby></thead></video></menuitem><del id="9b55v"></del><noframes id="9b55v"></noframes><address id="9b55v"><ruby id="9b55v"><th id="9b55v"><ins id="9b55v"></ins></th></ruby></address><video id="9b55v"><video id="9b55v"></video></video><video id="9b55v"><menuitem id="9b55v"><strike id="9b55v"><listing id="9b55v"></listing></strike></menuitem></video><noframes id="9b55v"></noframes><progress id="9b55v"><i id="9b55v"><th id="9b55v"><cite id="9b55v"></cite></th></i></progress><del id="9b55v"><th id="9b55v"><cite id="9b55v"><span id="9b55v"></span></cite></th></del><listing id="9b55v"><i id="9b55v"></i></listing><var id="9b55v"><strike id="9b55v"></strike></var><th id="9b55v"></th><ruby id="9b55v"><address id="9b55v"></address></ruby><ruby id="9b55v"><progress id="9b55v"><del id="9b55v"><noframes id="9b55v"></noframes></del></progress></ruby><listing id="9b55v"></listing><dl id="9b55v"><progress id="9b55v"></progress></dl><menuitem id="9b55v"></menuitem><span id="9b55v"><var id="9b55v"></var></span><progress id="9b55v"><ins id="9b55v"></ins></progress><address id="9b55v"><ins id="9b55v"></ins></address><noframes id="9b55v"><var id="9b55v"><strike id="9b55v"><thead id="9b55v"></thead></strike></var></noframes><cite id="9b55v"><noframes id="9b55v"></noframes></cite><cite id="9b55v"></cite><listing id="9b55v"></listing><ins id="9b55v"><noframes id="9b55v"><var id="9b55v"><video id="9b55v"></video></var></noframes></ins><th id="9b55v"><cite id="9b55v"></cite></th><span id="9b55v"></span><listing id="9b55v"><ruby id="9b55v"><address id="9b55v"><ins id="9b55v"></ins></address></ruby></listing><dl id="9b55v"></dl><del id="9b55v"><th id="9b55v"><cite id="9b55v"><span id="9b55v"></span></cite></th></del><var id="9b55v"><video id="9b55v"><thead id="9b55v"><ruby id="9b55v"></ruby></thead></video></var><thead id="9b55v"><dl id="9b55v"><listing id="9b55v"><i id="9b55v"></i></listing></dl></thead><strike id="9b55v"><thead id="9b55v"><dl id="9b55v"><progress id="9b55v"></progress></dl></thead></strike><noframes id="9b55v"></noframes><listing id="9b55v"><ruby id="9b55v"><address id="9b55v"><del id="9b55v"></del></address></ruby></listing><th id="9b55v"><cite id="9b55v"></cite></th><address id="9b55v"></address><var id="9b55v"><strike id="9b55v"><listing id="9b55v"><ruby id="9b55v"></ruby></listing></strike></var><menuitem id="9b55v"><strike id="9b55v"><listing id="9b55v"><dl id="9b55v"></dl></listing></strike></menuitem><cite id="9b55v"><span id="9b55v"><var id="9b55v"><strike id="9b55v"></strike></var></span></cite><cite id="9b55v"></cite><dl id="9b55v"><progress id="9b55v"></progress></dl><th id="9b55v"><cite id="9b55v"></cite></th><cite id="9b55v"><span id="9b55v"></span></cite><listing id="9b55v"><i id="9b55v"></i></listing><var id="9b55v"></var><var id="9b55v"><video id="9b55v"><menuitem id="9b55v"><dl id="9b55v"></dl></menuitem></video></var><var id="9b55v"></var><noframes id="9b55v"><ins id="9b55v"><span id="9b55v"><menuitem id="9b55v"></menuitem></span></ins></noframes> <listing id="9b55v"></listing><th id="9b55v"></th><menuitem id="9b55v"></menuitem><dl id="9b55v"></dl><ruby id="9b55v"><address id="9b55v"><del id="9b55v"><noframes id="9b55v"></noframes></del></address></ruby><ins id="9b55v"><noframes id="9b55v"><cite id="9b55v"><video id="9b55v"></video></cite></noframes></ins><progress id="9b55v"></progress><ruby id="9b55v"></ruby><listing id="9b55v"><i id="9b55v"></i></listing><span id="9b55v"><menuitem id="9b55v"></menuitem></span><listing id="9b55v"><i id="9b55v"></i></listing><progress id="9b55v"><i id="9b55v"></i></progress><cite id="9b55v"><strike id="9b55v"><thead id="9b55v"><ruby id="9b55v"></ruby></thead></strike></cite><video id="9b55v"><thead id="9b55v"></thead></video><cite id="9b55v"><video id="9b55v"></video></cite><thead id="9b55v"><ruby id="9b55v"><progress id="9b55v"><del id="9b55v"></del></progress></ruby></thead><thead id="9b55v"></thead><var id="9b55v"></var><del id="9b55v"><noframes id="9b55v"></noframes></del><thead id="9b55v"></thead><cite id="9b55v"></cite><i id="9b55v"><th id="9b55v"></th></i><address id="9b55v"><del id="9b55v"><span id="9b55v"><var id="9b55v"></var></span></del></address><listing id="9b55v"><del id="9b55v"><address id="9b55v"><ins id="9b55v"></ins></address></del></listing><cite id="9b55v"></cite><var id="9b55v"><strike id="9b55v"><thead id="9b55v"><ruby id="9b55v"></ruby></thead></strike></var><listing id="9b55v"></listing><address id="9b55v"></address><th id="9b55v"></th><noframes id="9b55v"><var id="9b55v"><video id="9b55v"><listing id="9b55v"></listing></video></var></noframes><thead id="9b55v"></thead><span id="9b55v"><menuitem id="9b55v"></menuitem></span><progress id="9b55v"></progress><del id="9b55v"><noframes id="9b55v"><var id="9b55v"><strike id="9b55v"></strike></var></noframes></del><span id="9b55v"><menuitem id="9b55v"><dl id="9b55v"><listing id="9b55v"></listing></dl></menuitem></span><th id="9b55v"><cite id="9b55v"></cite></th><th id="9b55v"><cite id="9b55v"><video id="9b55v"><thead id="9b55v"></thead></video></cite></th><progress id="9b55v"><del id="9b55v"></del></progress><ruby id="9b55v"><address id="9b55v"></address></ruby><del id="9b55v"><noframes id="9b55v"><var id="9b55v"><video id="9b55v"></video></var></noframes></del><del id="9b55v"><noframes id="9b55v"><var id="9b55v"><strike id="9b55v"></strike></var></noframes></del><span id="9b55v"></span><dl id="9b55v"><progress id="9b55v"></progress></dl><span id="9b55v"><menuitem id="9b55v"><dl id="9b55v"><progress id="9b55v"></progress></dl></menuitem></span><ruby id="9b55v"><address id="9b55v"></address></ruby><del id="9b55v"><noframes id="9b55v"></noframes></del><span id="9b55v"><menuitem id="9b55v"></menuitem></span><var id="9b55v"><span id="9b55v"></span></var><span id="9b55v"><menuitem id="9b55v"></menuitem></span><ins id="9b55v"><noframes id="9b55v"><cite id="9b55v"><video id="9b55v"></video></cite></noframes></ins> <address id="9b55v"><del id="9b55v"><th id="9b55v"><cite id="9b55v"></cite></th></del></address><ins id="9b55v"><span id="9b55v"></span></ins><noframes id="9b55v"><var id="9b55v"><video id="9b55v"><thead id="9b55v"></thead></video></var></noframes><thead id="9b55v"><ruby id="9b55v"><progress id="9b55v"><i id="9b55v"></i></progress></ruby></thead><menuitem id="9b55v"><strike id="9b55v"><thead id="9b55v"><ruby id="9b55v"></ruby></thead></strike></menuitem><span id="9b55v"><var id="9b55v"><video id="9b55v"><menuitem id="9b55v"></menuitem></video></var></span><var id="9b55v"></var><strike id="9b55v"><listing id="9b55v"><ruby id="9b55v"><progress id="9b55v"></progress></ruby></listing></strike><span id="9b55v"><var id="9b55v"><video id="9b55v"><var id="9b55v"></var></video></var></span><video id="9b55v"><menuitem id="9b55v"><strike id="9b55v"><listing id="9b55v"></listing></strike></menuitem></video><dl id="9b55v"><progress id="9b55v"><i id="9b55v"><address id="9b55v"></address></i></progress></dl><thead id="9b55v"><ruby id="9b55v"><progress id="9b55v"><ins id="9b55v"></ins></progress></ruby></thead><th id="9b55v"><ins id="9b55v"><noframes id="9b55v"><var id="9b55v"></var></noframes></ins></th><menuitem id="9b55v"><dl id="9b55v"></dl></menuitem><menuitem id="9b55v"></menuitem><span id="9b55v"></span><video id="9b55v"><menuitem id="9b55v"><strike id="9b55v"><listing id="9b55v"></listing></strike></menuitem></video><strike id="9b55v"><listing id="9b55v"><dl id="9b55v"><progress id="9b55v"></progress></dl></listing></strike><dl id="9b55v"></dl><del id="9b55v"><th id="9b55v"><var id="9b55v"><strike id="9b55v"></strike></var></th></del><cite id="9b55v"></cite><ins id="9b55v"><noframes id="9b55v"><var id="9b55v"><video id="9b55v"></video></var></noframes></ins><video id="9b55v"><menuitem id="9b55v"></menuitem></video><cite id="9b55v"></cite><ins id="9b55v"><span id="9b55v"><menuitem id="9b55v"><video id="9b55v"></video></menuitem></span></ins><listing id="9b55v"><dl id="9b55v"></dl></listing><span id="9b55v"><menuitem id="9b55v"><video id="9b55v"><thead id="9b55v"></thead></video></menuitem></span><del id="9b55v"></del><ins id="9b55v"><noframes id="9b55v"><var id="9b55v"><strike id="9b55v"></strike></var></noframes></ins><thead id="9b55v"><ruby id="9b55v"></ruby></thead><del id="9b55v"></del><ins id="9b55v"><span id="9b55v"></span></ins><del id="9b55v"><noframes id="9b55v"><var id="9b55v"><strike id="9b55v"></strike></var></noframes></del><listing id="9b55v"><ruby id="9b55v"><progress id="9b55v"><del id="9b55v"></del></progress></ruby></listing><del id="9b55v"></del><menuitem id="9b55v"></menuitem><span id="9b55v"><menuitem id="9b55v"><dl id="9b55v"><listing id="9b55v"></listing></dl></menuitem></span><thead id="9b55v"><ruby id="9b55v"></ruby></thead><thead id="9b55v"><ruby id="9b55v"><listing id="9b55v"><i id="9b55v"></i></listing></ruby></thead><progress id="9b55v"></progress><cite id="9b55v"></cite><ruby id="9b55v"><address id="9b55v"></address></ruby><th id="9b55v"></th><dl id="9b55v"><progress id="9b55v"></progress></dl><var id="9b55v"></var><address id="9b55v"><ins id="9b55v"></ins></address><strike id="9b55v"><listing id="9b55v"><i id="9b55v"><th id="9b55v"></th></i></listing></strike><ruby id="9b55v"><th id="9b55v"><ins id="9b55v"><span id="9b55v"></span></ins></th></ruby><i id="9b55v"></i><th id="9b55v"><ins id="9b55v"></ins></th></div> <div id="header"> <div id="head"> <div class="logo">网站建设第一品牌 网络营销整合专家</div> <div class="menu"> <p class="tel"> <a title="济南网站建设" href="http://www.tjbwx.cn"><strong>济南网站建设</strong></a>| <a title="济南网站建设公司" href="http://www.tjbwx.cn"><strong>济南网站建设公司</strong></a>| <a title="济南建站" href="http://www.tjbwx.cn"><strong>济南建网?/strong></a> </p> <p class="pic"> <span><img src="/images/top1.jpg" width="19" height="19" title="服务热线?531?8887250" alt="服务热线">电话: 0531-88887250</span> <span><img src="/images/top2.jpg" width="20" height="19" title="咨询热线?8678812288" alt="咨询热线">手机: 18678812288</span> </p> </div> </div> </div> <div id="nav"> <ul class="nav"> <li><a href="/" class="one home">??/a></li> <li><a href="/Item/list.asp?id=1817" class="one">网站建设</a> <div class="daohang sub-nav"> <div class="xia02"> <h2>网站建设</h2> <h4>Building high-end site</h4> <p>专注高端品牌网站建设、移动端网站设计、微信深度定制、H5活动定制、网络营销推广、品牌整案?/p> </div> <div class="xia01"> <a href="/Item/list.asp?id=1817">高端网站建设</a> <a href="/Item/list.asp?id=1822">手机网站建设</a> <a href="/Item/list.asp?id=1823">微信平台开?/a> <a href="/Item/list.asp?id=1824">电商网站建设</a> <a href="/Item/list.asp?id=1850">营销型网?/a> </div> <img class="fr" src="/imgs/subnav.jpg" width="286" height="152" alt="网站建设图片" /> </div> </li> <li><a href="/Item/list.asp?id=1825" class="one">P2P网站</a></li> <li><a href="/Item/list.asp?id=1851" class="one">网站运营</a></li> <li><a href="/Item/list.asp?id=1826" class="one">案例展示</a> <div class="daohang sub-case"> <a href="/list_1848.html">公安、检察院、法院网?/a> <a href="/list_1847.html">行政事业单位</a> <a href="/list_1846.html">司法、监狱系?/a> <a href="/list_1845.html">卫生部门、医院扥医疗机构</a> <a href="/list_1844.html">P2P互联网金融行?/a> <a href="/list_1843.html">移动端微信、手?/a> <a href="/list_1842.html">教育机构、培训学?/a> <a href="/list_1841.html">电子商务B2B,B2C,O2O网站</a> <a href="/list_1840.html">集团上市企业</a> <a href="/list_1839.html">行业门户</a> <a href="/list_1838.html">中小型企?/a> <a href="/list_1853.html">广告、装饰、家具类</a> <a href="/list_1854.html">服饰?/a> <a href="/list_1837.html">其他案例</a> </div> </li> <li><a href="/Item/list.asp?id=1827" class="one">网站方案</a> <div class="daohang sub-case"> <a href="/wzfa/3252.html" title="P2P网贷系统解决方案">P2P网贷系统解决方案</a> <a href="/wzfa/3251.html" title="微信平台开发解决方?>微信平台开发解决方?/a> <a href="/wzfa/3250.html" title="手机网站建设解决方案">手机网站建设解决方案</a> <a href="/wzfa/3249.html" title="教育培训网站解决方案">教育培训网站解决方案</a> <a href="/wzfa/3248.html" title="门户网站解决方案">门户网站解决方案</a> <a href="/wzfa/3247.html" title="服装网站解决方案">服装网站解决方案</a> </div> </li> <li><a href="/Item/list.asp?id=1828" class="one">关于我们</a></li> <li><a href="/Item/list.asp?id=1829" class="one">联系我们</a></li> </ul> </div> <script> $(function(){ $(".nav>li").hover(function(){ $(this).children('.daohang').stop(true,true).show(300); },function(){ $(this).children('.daohang').stop(true,true).hide(300); }) }) </script> <div id="subbanner" class="newsbanner"> <!--<h2>新闻资讯</h2> <h3>每个企业都可以拥有一个高端的品牌网站 这很简单。选择赢德科技,在很短的时间内我们就可以为您献上一个精彩的网站?/h3>--> </div> <div class="index"> <h2 class="web_title">公司动?/h2> <div class="subpag"> <h2 class="detail_title">济南网站建设浅析微博CacheService架构</h2> <h3 class="detail_auhor">来源?a href="/">赢德科技</a>  日期?016-9-26 15:18:15  浏览次数?Script Language="Javascript" Src="/item/GetHits.asp?Action=Count&GetFlag=0&m=1&ID=3224"></Script></h3> <div class="detail_main"><div id="MyContent"><p><span style="font-size: 14px;">  <a href="/" target="_self" style="font-size: 14px; white-space: normal;"><strong>济南网站建设</strong></a>微博作为国内最大的社交媒体网站之一,每天承载着亿万用户的服务请求,这些请求的背后,需要消耗着巨大的计算、内存、网络、I/O等资源。而且因为微博的产品特性,节假日、热门事件等可能带来突发数倍甚至十几倍的访问峰值,这些都对于支撑微博的底层基础架构提出了比较严苛的要求,需要满足:</span></p><p><span style="font-size: 14px;">  1.每秒数十万的用户请求</span></p><p><span style="font-size: 14px;">  2.数据更新的实时?/span></p><p><span style="font-size: 14px;">  3.服务请求的低响应时间</span></p><p><span style="font-size: 14px;">  4.99. 99%以上的服务可用?/span></p><p><span style="font-size: 14px;">  为了满足业务的发展需要,微博平台开发了一套高性能高可用的CacheService架构用于支撑现有线上的业务系统的运转。但“冰动三尺非一日之寒”,微博的Cache架构也是经历了从无到有,不断的演进过程?/span></p><p><span style="font-size: 14px;">  基于MySQL的Web架构</span></p><p><span style="font-size: 14px;">  最初的微博系统,系统的访问量都比较小,简单的基于数据?MySQL)已经能够满足业务需求,开发也比较简单,</span></p><p><span style="font-size: 14px;">  随着微博的推广和名人用户入驻微博,带动了用户量的快速增长,访问量也与日俱增,这个时候,简单基于MySQL的架构已经略感吃力,系统响应也比较缓慢。因为MySQL是一个持久化存储的解决方案,数据的读写都会经过磁盘,虽然MySQL也有buffer pool,但是无法根据业务的特性做到很细粒度的控制。而在微博这种业务场景下,配置了SAS盘的MySQL服务单机只能支撑几千的请求量,远小于微博的业务请求量?/span></p><p><span style="font-size: 14px;">  <a href="/" target="_self" style="font-size: 14px; white-space: normal;"><strong>济南网站建设</strong></a>基于单层Cache+MySQL的Web架构</span></p><p><span style="font-size: 14px;">  针对请求量增大的问题,一般有几种解决方案?/span></p><p><span style="font-size: 14px;">  业务架构改造,但是在这种场景下,这种方案的可行性不高?/span></p><p><span style="font-size: 14px;">  MySQL进行从库扩容,虽然能够解决问题,但是带来的成本也会比较高,而且即使能够抗住请求量,但是资源的响应时间还是无法满足期望的结果,因为磁盘的读取的响应时间要相对比较慢,普通的15000?分钟的SAS盘的读取延迟平均要达?ms以上?/span></p><p><span style="font-size: 14px;">  在MySQL之上架构一层缓存,把热门请求数据缓存到Cache,基于Cache+MySQL的架构来提供服务请求?/span></p><p><span style="font-size: 14px;">  考虑到整体的改动和成本的因素,基于方?)比较适合微博的业务场景。而应该使用什么类型的Cache比较合适呢?</span></p><p><span style="font-size: 14px;">  比较常见的Cache解决方案有:</span></p><p><span style="font-size: 14px;">  Local Cache,通过在Web应用端内嵌一个本地的Cache,这种的优势是访问比较快,但是存在的问题也比较明显,数据更新的一致性比较难保证,因此使用的范围会有一定的限制?/span></p><p><span style="font-size: 14px;">  单机版的远程Cache,通过部署一套远程的Cache服务,然后应用端请求通过网络请求与Cache交互,为了解决应用的水平扩展和容灾问题,往往通过在client层面来实现数据的路由等?/span></p><p><span style="font-size: 14px;">  分布式的Cache,Cache服务本身是一个大集群,能够提供给各种业务应用使用,并提供了一些基本的分布式特性:水平扩展、容灾、数据一致性等等?/span></p><p><span style="font-size: 14px;">  从系统的简单性考虑和微博场景的适用问题,最终选择?)的方式,基于开源的Memcached来作为微博的Cache方案?/span></p><p><span style="font-size: 14px;">  Memcached是一个分布式Cache Server,提供了key-value型数据的缓存,支持LRU、数据过期淘汰,基于Slab的方式管理内存块,提供简单的set/get/delete等操作协议,本身具备了稳定、高性能等优点,并在业界已经得到广泛的验证。它的server端本身是一个单机版,而分布式特性是基于client端的实现来满足,通过部署多个Memcached节点,在client端基于一致性hash(或者其他hash策略)进行数据的分散路由,定位到具体的memcached节点再进行数据的交互。当某个节点挂掉后,对该节点进行摘除,并把该节点的请求分散到其他的节点。通过client来实现一定程度的容灾和伸缩的能力?/span></p><p><span style="font-size: 14px;">  这种架构经过一段时间的蜜月期后,也逐步遇到了一些问题?/span></p><p><span style="font-size: 14px;">  节点挂掉导致的瞬间的峰值问?/span></p><p><span style="font-size: 14px;">  比如部署?个Memcached节点,对key做一致性hash将key散落分布?个节点上,那么如果其中有1个节点挂掉,那么这个时候会?0%原本Cache hit的请求穿透到后端资源(比如DB)。对于微博而言,多数核心资源的Cache hit的比例是99%,单组资源的QPS可能就达?00W以上的级别,如果这个时候有20%的穿透,那么相当于后端资源需要抗?0W以上的请求,这对于后端资源来说,明显压力过大?/span></p><p><span style="font-size: 14px;">  某组资源请求量过大导致需要过多的节点</span></p><p><span style="font-size: 14px;">  微博的Feed业务是Cache资源的消耗大户,几十万的QPS,GB(Byte)级别以上的带宽消耗,这个时候,至少需要十几个Memcached节点单元才能够抗住请求,而过多的Memcached节点请求会导致multiget的性能有弱化,因为这个时候keys分散到的Memcached节点会比较多,因此当进行拉取聚合的时候,性能会受影响,同时mutliget的响应时间受最慢的那个节点的影响,从而无法达到服务的SLA要求?/span></p><p><span style="font-size: 14px;">  Cache的伸缩容和节点的替换动静太大</span></p><p><span style="font-size: 14px;">  对于微博这种会在热点事件、节假日等发生时会有一些变态峰?往往是数倍或者数十?的场景而言,实时的动态伸缩容很是必要,而因为通过client端实例化的Memcached资源节点相对比较固定,因此要进行伸缩容需要:</span></p><p><span style="font-size: 14px;">  进行一次代码的线上变更,进行节点配置的变更,而如果依赖该某组资源的应用系统比较多,比如底层的认证资源,那么需要对多个业务系统变更,这一动静不可谓不小,特别是遇到紧急情况,这个会导致操作的执行很缓慢?/span></p><p><span style="font-size: 14px;">  需要解决读写导致的一致性问题,假如有一些业务系统在读取Cache,有一些业务系统在写入Cache,而正常的变更是比较难让这些系统在某一刻全部执行节点的配置切换?/span></p><p><span style="font-size: 14px;">  需要使用新的节点替换老的节点(比如更换物理?,面临和上面类似的问题?/span></p><p><span style="font-size: 14px;">  过多资源带来的运维问?/span></p><p><span style="font-size: 14px;">  Cache资源组是按业务去申请,当业务特别多的时候,Cache资源组也会很多,这个时候要对这些资源进行运维管理如调整,将会变得不容易。而且随着时间的演进,一些比较古老的资源年老失修的情况,要进行运维调整就更为不容易?/span></p><p><span style="font-size: 14px;">  Cache架构要用得好的复杂度</span></p><p><span style="font-size: 14px;">  会用和用得好是两个不同概念。如果Cache架构需要每个业务开发很熟练才能够用得好,而不会因为Cache的不当使用而导致线上服务出现稳定性问题、以及成本的浪费等各种问题的话,这种对于需要陆续补进新人的团队现状而言,出问题将会是一种常态?因此要解决这种问题,那么需要提供一种足够简单的Cache使用方式给业务应用方,简单到只有set/get/delete等基本命令的操作,而无需要他们关心底层的任何细节?/span></p><p><span style="font-size: 14px;">  分布式CacheService架构</span></p><p><span style="font-size: 14px;">  为了解决这些问题,微博的Cache服务架构进行了演进,通过把Cache服务化,提供一个分布式的CacheService架构,简化业务开发方的使用,实现系统的动态伸缩容、容灾、多层Cache等相关功能?/span></p><p><span style="font-size: 14px;">  系统由几个模块组成:</span></p><p><span style="font-size: 14px;">  ConfigService</span></p><p><span style="font-size: 14px;">  这一模块是基于现有微博的配置服务中心,它主要是管理静态配置和动态命名服务的一个远程服务,能够在配置发生变更的时候实时通知监听的config client?/span></p><p><span style="font-size: 14px;">  proxy?/span></p><p><span style="font-size: 14px;">  这一模块是作为独立的应用对外提供代理服务,用来接收来自业务端的请求,并基于路由规则转发到后端的Cache资源,它本身是无状态的节点。它包含了如下部分:</span></p><p><span style="font-size: 14px;">  异步事件处理(event handler): 用来管理连接、接收数据请求、回写响应?/span></p><p><span style="font-size: 14px;">  Processor: 用来对请求的数据进行解析和处理?/span></p><p><span style="font-size: 14px;">  Adapter:用来对底层协议进行适配,比如支持MC协议,Redis协议?/span></p><p><span style="font-size: 14px;">  Router: 用来对请求进行路由分发,分发到对应的Cache资源池,进而隔离不同业务?/span></p><p><span style="font-size: 14px;">  LRU Cache: 用来优化性能,缓解因为经过proxy多一?网络请求)而带来的性能弱化?/span></p><p><span style="font-size: 14px;">  Timer: 用来执行一些后端的任务,包含对底层Cache资源健康状态的探测等?/span></p><p><span style="font-size: 14px;">  Proxy启动后会去从config Service加载后端Cache资源的配置列表进行初始化,并接收configService的配置变更的实时通知?/span></p><p><span style="font-size: 14px;">  Cache资源?/span></p><p><span style="font-size: 14px;">  这一模块是作为实际数据缓存的模块,通过多层结构来满足服务的高可用?其中Main-node是主缓存节点,Ha-Node是备份节点,当Main-node挂掉后,数据还能够从Ha-Node节点获取避免穿透到后端资源,L1-node主要用来抗住热点的访问,它的容量一般比Main-node要小,其中L1-node可支持多组,方便进行水平扩容以支撑更高的吞吐?/span></p><p><span style="font-size: 14px;">  Client客户?/span></p><p><span style="font-size: 14px;">  这一模块主要是提供给业务开发方使用的client(sdk?,对外屏蔽掉了所有细节,只提供了最简单的get/set/delete等协议接口,从而简化了业务开发方的使用?/span></p><p><span style="font-size: 14px;">  应用启动时,Client基于namespace从configService中获取相应的proxy节点列表,并建立与后端proxy的连接。正常一个协议处理,比如set命令,client会基于负载均衡策略挑选当前最小负载的proxy节点,发起set请求,并接收proxy的响应返回给业务调用端?/span></p><p><span style="font-size: 14px;">  Client会识别configService推送的proxy节点变更的情况重建proxy连接列表,同时client端也会做一些容灾,在proxy节点出现问题的时候,把proxy进行摘除,并定期探测是否恢复?/span></p><p><span style="font-size: 14px;">  目前微博平台部分业务子系统的Cache服务已经迁移到了CacheService之上,它在实际的运行过程中也取得了良好的性能表现,目前整个集群在线上每天支撑着超过300W的QPS,平均响应耗时低于1ms?/span></p><p><span style="font-size: 14px;">  它本身具备了以下特性:</span></p><p><span style="font-size: 14px;">  高可用保?/span></p><p><span style="font-size: 14px;">  所有的数据写入请求,CacheService会把数据双写到ha的节点,这样,在main-node挂掉的时候,会从ha-node读取数据,从而防止节点fail的时候给后端资源(DB?带来过大的压力?/span></p><p><span style="font-size: 14px;">  <a href="/" target="_self" style="font-size: 14px; white-space: normal;"><strong>济南网站建设</strong></a>服务的水平扩?/span></p><p><span style="font-size: 14px;">  CacheService proxy节点本身是无状态的,在proxy集群存在性能问题的时候,能够简单的通过增减节点来伸缩容。而对于后端的Cache资源,通过增减L1层的Cache资源组,来分摊对于main-node的请求压力。这样多数热点数据的请求都会落L1层,而L1层可以方便的通过增减Cache资源组来进行伸缩容?/span></p><p><span style="font-size: 14px;">  实时的运维变?/span></p><p><span style="font-size: 14px;">  通过整合内部的config Service系统,能够在秒级别做到资源的扩容、节点的替换等相关的运维变更?/span></p><p><span style="font-size: 14px;">  跨机房特性:</span></p><p><span style="font-size: 14px;">  微博系统会进行多机房部署,跨机房的服务器网络时延和丢包率要远高于同机房,比如微博广州机房到北京机房需?0ms以上的时延。CacheService进行了跨机房部署,对于Cache的查询请求会采用就近访问的原则,对于Cache的更新请求支持多机房的同步更新?/span></p><p><span style="font-size: 14px;">  目前微博的分布式CacheService架构在简化了业务开发使用的同时,提高了系统的可运维性和可用性。接下来的架构的改造方向是提供后端Cache资源的低成本解决方案,从单机的存储容量和单机的极限性能层面不断优化。因为对于微博的业务场景,冷热数据相对比较明显,同时长尾数据请求的比例也不小,因而如果减少了Cache的容量,那么会导致后端资源无法抗住请求,而扩大Cache的容量,又会导致成本的浪费。而全内存的解决方案相比而言成本相对比较高,所以热数据存放到内存,基于LRU的策略把冷数据交换到固体硬盘(SSD),这是一种可能选择的方向?/span></p><p><span style="font-size: 14px;">  想要了解更多详情欢迎来电咨询18678812288,或登陆网址<a href="/" target="_self"><strong>www.tjbwx.cn</strong></a>。联系人:王经理。地址:济南市舜耕路泉城公园东门园内向北50?/span></p><p><br/></p></div> </div> <div class="atriclebtm"> <p>上一篇:<a href="/xwzx/wzdt/3223.html"><a href="/xwzx/wzdt/3223.html" title="济南建网站专注做好一件事">济南建网站专注做好一件事</a></a></p> <p>下一篇:<a href="/xwzx/wzdt/3225.html"><a href="/xwzx/wzdt/3225.html" title="301重定向全面认?>301重定向全面认?/a></a></p> </div> </div> <div class="index_news"> <ul> <li> <h2> <a href="/list_1833.html" class="fl">网站建设动?/a> <a href="/Item/list.asp?id=1833" class="fr">查看更多</a> </h2> <p><span class="fr">12-12</span><a href="/xwzx/wzdt/3346.html">济南网站建设前端网站性能优化</a></p> <p><span class="fr">12-13</span><a href="/xwzx/wzdt/3341.html">学校网站建设的目?/a></p> <p><span class="fr">12-13</span><a href="/xwzx/wzdt/3338.html">中小企业济南建站的优?/a></p> <p><span class="fr">12-13</span><a href="/xwzx/wzdt/3319.html">山东网站建设公司总结网站?种常见错?/a></p> <p><span class="fr">12-13</span><a href="/xwzx/wzdt/3316.html">企业济南建网站时要注意哪几个方面</a></p> </li> <li style="margin:0 12px;"> <h2> <a href="/list_1832.html" class="fl">网站建设行业资讯</a> <a href="/Item/list.asp?id=1832" class="fr">查看更多</a> </h2> <p><span class="fr">12-12</span><a href="/xwzx/hyzx/3343.html">济南网站建设用户体验是关?/a></p> <p><span class="fr">12-13</span><a href="/xwzx/hyzx/3337.html">企业网站建设的必备条?/a></p> <p><span class="fr">12-13</span><a href="/xwzx/hyzx/3330.html">济南网站建设常用开发工?/a></p> <p><span class="fr">12-13</span><a href="/xwzx/hyzx/3324.html">网站建设价格为什么相差这么大?</a></p> <p><span class="fr">12-13</span><a href="/xwzx/hyzx/3322.html">日常维护济南建网站需要注意哪些方?/a></p> </li> <li> <h2> <a href="/list_1831.html" class="fl">网站建设相关知识</a> <a href="/Item/list.asp?id=1831" class="fr">查看更多</a> </h2> <p><span class="fr">12-13</span><a href="/xwzx/jzzs/3347.html">描文本链接济南网站建设怎么?/a></p> <p><span class="fr">12-13</span><a href="/xwzx/jzzs/3344.html">济南建网站公司教你如何快速搭建网?/a></p> <p><span class="fr">12-13</span><a href="/xwzx/jzzs/3342.html">济南建站不可忽视的四个小细节</a></p> <p><span class="fr">12-13</span><a href="/xwzx/jzzs/3340.html">如何推广济南网站制作公司</a></p> <p><span class="fr">12-13</span><a href="/xwzx/jzzs/3336.html">济南网站制作后期该如何维?/a></p> </li> </ul> </div> <h2 class="web_title">服务知名客户</h2> <div class="div_fwzmkh"> <div> <a title="佰诗?><img src="/UploadFiles/2016-09-30/2016093016373343816.jpg" width="190" height="95" alt="佰诗?></a> <a title="齐鲁动保"><img src="/UploadFiles/2016-09-30/2016093016360139502.jpg" width="190" height="95" alt="齐鲁动保"></a> <a title="sai"><img src="/UploadFiles/2016-09-30/2016093016274469618.jpg" width="190" height="95" alt="sai"></a> <a title="shinegee"><img src="/UploadFiles/2016-09-30/2016093016270648714.jpg" width="190" height="95" alt="shinegee"></a> <a title="百世指尖"><img src="/UploadFiles/2016-09-30/2016093016260691816.jpg" width="190" height="95" alt="百世指尖"></a> <a title="丽达"><img src="/UploadFiles/2016-09-30/2016093016213386726.jpg" width="190" height="95" alt="丽达"></a> <a title="科捷"><img src="/UploadFiles/2016-09-30/2016093016205157066.jpg" width="190" height="95" alt="科捷"></a> <a title="感知"><img src="/UploadFiles/2016-09-30/2016093016202066942.jpg" width="190" height="95" alt="感知"></a> <a title="华美医院"><img src="/UploadFiles/2016-09-30/2016093016194384056.jpg" width="190" height="95" alt="华美医院"></a> <a title="创想餐饮..."><img src="/UploadFiles/2016-09-30/2016093014262085959.jpg" width="190" height="95" alt="创想餐饮..."></a> <a title="晟华制药"><img src="/UploadFiles/2016-09-30/2016093015323483149.jpg" width="190" height="95" alt="晟华制药"></a> <a title="济南亿民动物药业有限公司"><img src="/UploadFiles/2016-09-30/2016093015330593413.jpg" width="190" height="95" alt="济南亿民动物药业有限公司"></a> <a title="山东骏腾医疗科技有限公司"><img src="/UploadFiles/2016-09-30/2016093015345868341.jpg" width="190" height="95" alt="山东骏腾医疗科技有限公司"></a> <a title="凤凰眼镜"><img src="/UploadFiles/2016-09-30/2016093016100625101.jpg" width="190" height="95" alt="凤凰眼镜"></a> <a title="欧丽家居"><img src="/UploadFiles/2016-09-30/2016093015361059197.jpg" width="190" height="95" alt="欧丽家居"></a> <a title="艺拍中国"><img src="/UploadFiles/2016-09-30/2016093015371698113.jpg" width="190" height="95" alt="艺拍中国"></a> <a title="济南王者教?><img src="/UploadFiles/2016-09-30/2016093015364735266.jpg" width="190" height="95" alt="济南王者教?></a> <a title="娜氏婚礼策划工作?><img src="/UploadFiles/2016-09-30/2016093016085898652.jpg" width="190" height="95" alt="娜氏婚礼策划工作?></a> </div> </div> </div> <div class="clear"></div> <div id="footer"> <div class="footer"> <p class="p1">keyword</p> <h2> <a href="/Item/Show.asp?m=1&d=3152">济南网站建设</a>| <a href="/Item/Show.asp?m=1&d=3107">济南网站制作</a>| <a href="/Item/Show.asp?m=1&d=2978">济南建站</a>| <a href="/Item/Show.asp?m=1&d=3211">济南建网?/a>| <a href="/Item/Show.asp?m=1&d=3001">济南建网站公?/a>| <a href="/Item/Show.asp?m=1&d=3037">山东网站建设公司 </a> <a href="/Item/Show.asp?m=1&d=3111">济南网站制作公司</a>| <a href="/Item/Show.asp?m=1&d=3008">山东网站建设</a>| <a href="/Item/Show.asp?m=1&d=2999">济南营销网站建设</a> </h2> <p class="p2">link</p> <p class="p3"> <a target="_blank">济南网站建设</a>| <a target="_blank">武汉网站建设</a>| <a target="_blank">遵义网站建设</a>| <a target="_blank">西安做网?/a>| <a target="_blank">南昌网站建设</a>| <a target="_blank">合肥网站建设</a>| <a target="_blank">郑州网站建设</a>| <a target="_blank">青岛网站建设</a>| <a target="_blank">临河网站制作</a>| <a target="_blank">西安服务器托?/a>| <a target="_blank">上海网站建设</a>| <a target="_blank">大连网站建设</a>| <a target="_blank">网站建设</a>| <a target="_blank">深圳网站建设</a>| </p> <div class="foot"> <p class="fl"> <strong>山东赢德信息科技有限公司</strong> <Br> 联系人:王经? 手机?8678812288<Br> 地址:山东省济南市舜耕路泉城公园东门园内向北50? <Br> 传真?531-88887250 邮箱:sdydkj@163.com </p> <p class="fr"> <a href="tencent://Message/?Uin=934926959&websiteName=www.xxx.com=&Menu=yes" class="a1">在线咨询</a> <a target="_blank" class="a2">新浪微博</a> <a class="a3">微信二维?img class="ewm" src="images/erwm.jpg" width="123" height="123" alt="微信二维?></a> </p> </div> </div> </div> <div id="bottom"> <div> <span class="fl">Copyright 2016-2018 山东赢德信息科技有限公司所? 鲁ICP备证100953?/span> <span class="fr"> <a href="/Item/list.asp?id=1828">关于我们</a>| <a href="/Item/list.asp?id=1829">联系我们</a>| <a href="/Item/list.asp?id=1852">付款方式</a>| <a href="/Item/list.asp?id=1826">网站案例</a>| <a href="/Item/list.asp?id=1830">新闻资讯</a>| <a href="/sitemap.txt" target="_blank">TXT网站地图</a>| <a href="/html/Sitemap.xml" target="_blank">XML地图</a> </span> </div> </div> <div id="izl_rmenu" class="izl-rmenu"><a href="tencent://Message/?Uin=934926959&websiteName=www.xxx.com=&Menu=yes" class="btn btn-qq"></a> <div class="btn btn-wx"><img class="pic" src="/imgs/weixin.png" style="display: none;"></div> <div class="btn btn-phone"> <div class="phone" style="display: none;">18678812288</div> </div> <div class="btn btn-top" style="display: none;"></div> </div> <script type="text/javascript" src="/style/lrtk.js"></script> <script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "http://#/hm.js?4dd7b94467e4d36653905f123e75e456"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> <a href="http://www.tjbwx.cn/">90ȷȷּ</a> <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body> </html>