想象这样一个应用场景,公司有两个机房。因为一个紧急需求,需要跨机房读取 Redis
数据。应用部署在 A 机房,存储部署在 B 机房。如果使用普通 tcp 直接访问,因为跨机
房所以传输数据会暴露在公网,这非常不安全,客户端服务器交互的数据存在被窃听的风
险。
Redis 本身并不支持 SSL 安全链接,不过有了 SSL 代理软件,我们可以让通信数据透
明地得到加密,就好像 Redis 穿上了一层隐身外套一样。spiped 就是这样的一款 SSL 代理
软件,它是 Redis 官方推荐的代理软件。
spiped 原理
让我们放大细节,仔细观察 spiped 实现原理。spiped 会在客户端和服务器各启动一个
spiped 进程。
左边的 spiped 进程 A 负责接受来自 Redis Client 发送过来的请求数据,加密后传送到
右边的 spiped 进程 B。spiped B 将接收到的数据解密后传递到 Redis Server。然后 Redis
Server 再走一个反向的流程将响应回复给 Redis Client。
每一个 spiped 进程都会有一个监听端口 (server socket) 用来接收数据,同时还会作为一
个客户端 (socket client) 将数据转发到目标地址。
spiped 进程需要成对出现,相互之间需要使用相同的共享密钥来加密消息