有关cachecloud如何实现高可用,这个问题qq群(534429768)里一直有人问,(下图):
这确实是一个问题,因为客户端启动的时候要从cachecloud服务端获取appId的相关节点信息,如果cachecloud不是高可用的,会造成客户端启动失败。
但是这又不是一个问题,因为cachecloud本身就是一个web服务,所以实现高可用的方案有很多,但是鉴于有些朋友不太熟悉web工程的高可用,所以本文将简单介绍一下cachecloud几种高可用实现。
一、服务端高可用
因为cachecloud就是一个web服务,所以比较传统的方案就是:keepalive + 虚ip + nginx,如下图所示:
这种机制能够很好的保证cachecloud的高可用
具体安装细节请参阅相关资料,都是通用的。
二、服务端单点 + 客户端高可用
如果觉得上一种方案部署起来比较复杂,可以使用客户端高可用实现,因为cachecloud客户端与服务端最重要的交互就是在客户端启动时通过http形式获取appId的相关节点信息。
客户端高可用就是可以修改一下cachecloud客户端源码,如果启动失败几次,可以自己通过数据库查询appId的相应节点信息:
|
|
三、方案对比
方案 | 优点 | 缺点 |
---|---|---|
方案一 | 真正的高可用 | 部署有成本 |
方案二 | 部署简单 | 简单客户端的高可用有两个问题: 1.客户端代码和依赖增加,业务耦合。 2.服务端挂掉后统计数据收集日常运维等操作受到影响。 |
四、总结和展望
- 方案二只是权宜之计,建议使用第一种方案。
- cachecloud未来会使用新的技术,规避掉以上两种问题的缺点,敬请期待。。