Mcrouter中文手册 第二章.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
最近因工作需要在学习研究Facebook的memcached中间件Mcrouter,发现没有什么中文的资料,所以一边学习一边翻译一份中文的手册,以便分享学习。?本人英文水平有限,翻译借助了google并加入个人理解,有不足或者错误欢迎大家指正,同时也希望大家转载时能标注原文出处。因为工作比较忙,不能一次整理翻译整个手册,如果后续有新的翻译内容会继续补充Mcrouter的接受大家可以参考:?/translate/introducing-mcrouter-a-memcached-protocol-router-for-scaling-memcached-deployments/translate/introducing-mcrouter-a-memcached-protocol-router-for-scaling-memcached-deployments英文原版手册地址:/facebook/mcrouter/wiki/facebook/mcrouter/wiki常规设置(Common setups)分片池(Sharded pools)一旦你要缓存的数据量变得非常大,一台 memcached服务器已经难以承担,你一定想把这些数据分割到多台memcached服务器上。也就是我们常说的数据水平切分。Mcrouter支持此功能。它可以将请求按照缓存key的哈希值发送到不同的memcached服务器上。这样缓存数据将被均匀地分布在不同的memcached服务器上,同时对同一个缓存的操作也将按照缓存key的哈希值发送到同一台memcached服务器上。Mcrouter使用hash算法将发送请求到一个默认缓存服务器管理池里。下面是一个简单的mcrouter配置例子: { pools: { A: { servers: [ // your destination memcached boxes here, e.g.: :12345, [::1]:12346 ] } }, route: PoolRoute|A }说明:请求将按照key的哈希值发送到memcached服务器,“PoolRoute”代表按照hash路由复制池(/facebook/mcrouter/wiki/Replicated-pools-setupReplicated pools)在很多情况下缓存服务经常被庞大客户端频繁的访问,memcached的服务也需要提供连续的不间断的高性能读取性能。另一方面对于关键的缓存数据要保证始终可用,不能丢失,或者需要在多台服务器上存储。 Mcrouter提供这方面的功能支持。注意:我们假设你使用memcached缓存,读操作远远高于写操作。我们设计Mcrouter的/facebook/mcrouter/wiki/Replicated-pools-setupReplicated pools功能,希望它使用以下功能:随机发送一个get请求到/facebook/mcrouter/wiki/Replicated-pools-setupReplicated pools中。如果请求在pools第一个服务上失败,将从其他服务上获取数据。同时发送send和delete到/facebook/mcrouter/wiki/Replicated-pools-setupReplicated pools将被pools内的所有服务主机接受。下面的一个mcrouter配置来实现示例这一目标:{ pools: { A: { servers: [ // hosts of replicated pool, e.g.: :12345, [::1]:12346 ] } }, route: { type: OperationSelectorRoute, operation_policies: { add: AllSyncRoute|Pool|A, delete: AllSyncRoute|Pool|A, get: LatestRoute|Pool|A, set: AllSyncRoute|Pool|A } } }说明:add,del和set请求发送给pool A中的所有主机,get请求随机发pool A的一个主机。如果一个GET请求失败,系统会自动发送(重试)到另一台主机。缺省情况下,重试5次。前缀路由(Prefix routing)当不同的类型数据缓存在同一个memcached服务器上,因为数据存储和使用要求不同可能会产生很多使用问题。Memcached本身是不区分数据的优先级和重要程度,也不能根据key来识别不同缓存数据,所有的缓存数据都去争夺相同的内存资源,并以相同优先级进行数据操作。但实际情况是,有些数据增长很快,有的很慢,有些需要与其他数据隔离,有些有更高的性能要求,有些需要按照k

文档评论(0)

70后老哥 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档