缓存大家比较熟悉,在各种场景下也用得很多,在同程旅游也一样,缓存是一个无处不在的精灵,也是抗并发压力的核心系统之一。今天我们来讲一下同程旅游在缓存方面的经验。先来看一下我们的缓存走过了哪些历程。最早我们在应用中使用内存对象来存放变化比较小的数据,慢慢发现在应用本地的内存量不足以这样折腾,很是精贵,所以开始使用从 MemCache 来将缓存从应用中分离出来。之后缓存的场景变得更多了,MemCache 的一些不足之处开始显现,如支持的数据结构单一等。于是开始使用 Redis ,对于 Redis 的使用也从单机开始转向分片/集群的方式。Redis 虽然是一个非常优秀的缓存中间件系统,但当应用使用量越来越多时发现新的问题也来了,首先是对于应用代码在一起的 Redis 客户端不是太满意,于是我们重写了客户端。接着在数千个 Redis 实例(目前我们线上有4千多个部署实例)在线上工作起来如何低成本地高效运维起是一个大挑战。于是我们做了针对它的智能化运维平台。但是这些多不是重大难题,最大难题是因为 Redis 太好用了以致于在应用项目中大量使用,但是往往这些是没有好好思考和设计过的,这使得缓存的使用混乱且不合理,也使原本健壮成缓存变的脆弱的病秧子。所以我们开始开发 Redis 调度治理系统来治理缓存。如今我们开始更加关注整个缓存平台的高效和低成本,在平台的 Redis 部署全面 Docker 化,并开始在缓存中使用比内存廉价的 SSD。
现在让我们来看一看这个名叫