memcached cluster 多租户方案
由于memcached 不支持多租户,不支持多个用户使用同一个缓存,并且memcached之间也没有任何交互操作,所以自定义开发memcached 的多租户的集群成了必要的选择,由于目前网络上没有太好的支持多租户的memcahced集群方案,所以我自己开发了一套memcahced集群,支持用 户名和密码
架构说明:
McProxy: 所有外部请求的入口,用户访问memcached集群的入口, McProxy中维护一个路由表map,路由表结构如下: one namespace -> a memcached cluster , McProxy 通过namespace(用户名)来区分不同的集群
Config Servers: Config servers分为Master, Slave, Heatbeat三种角色的机器, Heatbeat属于Slave机器中的一种,Slave机器之间会互相检测健康状态. Heatbeat机器定时检测Master机器的状态, 如果Heatbeat机器down其他的slave机器采用抢占模式,自封Heatbeat角色,并开始重新检测Master机器.
Master机器会维护所有的memcached集群和McProxy的路由表, Master会定时的检测所有memcached集群的状态, 如果有memcached集群的server down,Master机器会通知所有McProxy去更新路由表. 如果Master机器down, Heatbeat机器会指定其他有效的Slave机器,自封Master角色,并开始承担Master机器的工作
Memcached Cluster: Memcached cluster机器之间是不会互相通信, 但是也会有一个Master多个Slave的角色, 当有写的请求, McProxy 先将数据写入memcached Master机器, 然后并发的备份数据到其他的memcached Slave机器, 当有读的请求, 采用hash一致性算法,随机选择一个cache读取数据
架构简易图如下: