首页 技术 正文
技术 2022年11月18日
0 收藏 594 点赞 2,251 浏览 1900 个字

Mcrouter 是一个基于Memcached协议的路由器,它是 Facebook缓存架构的核心组件,在峰值的时候,它能够处理每秒50亿次的请求。近日,Facebook开放了Mcrouter的源代码,且遵从BSD协议,希望能够帮助更多的网站使用Mcrouter并扩大其系统规模。因为任何要接入Memcached服务的客户端都会使用标准ASCII编码的Memcached协议,所以对于客户端来说,Mcrouter就像一个Memcached服务器;而对于服务器端来说,Memcached却又像一个普通的Memcached客户端。采用Memcached的通用API作为通信方式如下图所示:

Mcrouter-基于Memcached协议的缓存层流量管理工具(Memcached集群的另一个选择)(转)

Mcrouter主要特性如下:

  • 支持标准、开源的Memcached ASCII编码协议,使得支持Memcached协议的所有客户端无需做任何修改即可支持Mcrouter。
  • 能够使得客户端共享连接池,达到减少连接个数的目的。
  • 提供了一个非常有效的一致性哈希算法,允许给多个Memcached实例分配哈希值。
  • 能够根据key前缀把客户端分配到不同的Memcached池中。
  • 能够在多个主机上保存一份相同数据的备份。
  • 在测试新缓存设备时,Mcrouter能够路做到从客户端到缓存设备的所有可能路径都可用的。
  • 支持灵活的跟踪配置,通过重新哈希值范围跟踪测试不同大小的Memcached池,或只跟踪哈希值范围的一部分,或在运行时动态修改跟踪环境。
  • 支持热加载配置文件,它会监控所有的配置文件,一旦检测到配置文件被修改,就启动一个后台线程自动地重新加载、分析这些文件,并根据新配置来处理新请求。
  • 支持灵活的路由方式,路由句柄是由小路由模块组合而成,这些路由模块公用一个接口,也可以自由组合,单个路由句柄更容易理解、创建和测试。
  • 支持目的主机的心跳检测和自动故障转移,能够检测每个目的主机的心跳。
  • 允许以主机、池或者集群为单位设置任何请求的速率的阀值,同时也支持限制请求的速度以减缓请求的发送速度,以保障服务质量。
  • 通过一个内核一个线程的方式充分利用了多核系统的优势,在处理异步处理网络事件时,使用了内部的轻量级线程即纤程
  • 具有丰富的stats和debug命令,并提供了安全可靠的删除操作。
  • 能够通过简单的配置管理大的多集群,还能够根据slab的大小自动分割或重组数据块
  • 能够通过广播操作把请求数据备份到多个Memcached池中或者集群里面。
  • 支持本地和远程缓存两级缓存,自动填充新增缓存以消除新增缓存区造成的性能影响
  • 采用JSON格式的配置,支持通过任意方式的路由处理,以适应各种路由需求。

更多Mcrouter相关信息,请登录其在GitHub上的站点查看,常用示例请参考这里。另外,Mcrouter由Facebook在去年的Data@Scale大会上提出,并于近日开源,即将成为Facebook 在新推出的TODO开源协作联盟当中开源的第一项技术。据Facebook方面介绍,Mcrouter 能够在Facebook遍布全世界的数据中心的服务器集群的缓存层中快速分配调用数据,它具有极强的适应性,峰值时可以达到每秒50亿次的请求。去年,Instagram 数据向Facebook平稳转移就是使用的该技术。

Mcrouter主要使用C++开发,且使用C开发了功能库部分,使用Ragel开发了协议解析部分,使用开源库FollyFbthrift处理异步网络。尽管Mcrouter已经开源,但是Facebook仍然一直寻求改进Mcrouter性能的方法(如修复Bug、添加新特性等),并作持续的更新和改进;还会在Github Wiki上维护Mcrouter的文档,同时还建立了一个Facebook讨论组,用来推动Mcrouter项目持续、健康的发展。

参考:

http://www.infoq.com/cn/news/2014/09/mcrouter-memcached(以上内容转自此篇文章)

http://www.oschina.net/translate/introducing-mcrouter-a-memcached-protocol-router-for-scaling-memcached-deployments

https://github.com/facebook/mcrouter/wiki(官方介绍)

https://github.com/facebook/mcrouter/wiki/mcrouter-installation(Ubuntu的安装参考)

链接: https://pan.baidu.com/s/1bMhuZs 密码: 8p8k(Mcrouter中文手册第二章)

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,493
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,907
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,740
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,495
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,133
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,297