CacheCloud高可用部署方案简述

有关cachecloud如何实现高可用,这个问题qq群(534429768)里一直有人问,(下图):

这确实是一个问题,因为客户端启动的时候要从cachecloud服务端获取appId的相关节点信息,如果cachecloud不是高可用的,会造成客户端启动失败。

但是这又不是一个问题,因为cachecloud本身就是一个web服务,所以实现高可用的方案有很多,但是鉴于有些朋友不太熟悉web工程的高可用,所以本文将简单介绍一下cachecloud几种高可用实现。

一、服务端高可用

因为cachecloud就是一个web服务,所以比较传统的方案就是:keepalive + 虚ip + nginx,如下图所示:

这种机制能够很好的保证cachecloud的高可用

具体安装细节请参阅相关资料,都是通用的。

二、服务端单点 + 客户端高可用

如果觉得上一种方案部署起来比较复杂,可以使用客户端高可用实现,因为cachecloud客户端与服务端最重要的交互就是在客户端启动时通过http形式获取appId的相关节点信息。

客户端高可用就是可以修改一下cachecloud客户端源码,如果启动失败几次,可以自己通过数据库查询appId的相应节点信息:

1
select ip,port from instance_info where app_id=${appId} and status in(0,1);

三、方案对比

方案 优点 缺点
方案一 真正的高可用 部署有成本
方案二 部署简单 简单客户端的高可用有两个问题:
1.客户端代码和依赖增加,业务耦合。
2.服务端挂掉后统计数据收集日常运维等操作受到影响。

四、总结和展望

  • 方案二只是权宜之计,建议使用第一种方案。
  • cachecloud未来会使用新的技术,规避掉以上两种问题的缺点,敬请期待。。