解决分布式缓存数据一致性问题
在一个项目中采用多级缓存,缓存结构为内存 - Edge Cache - KV - PGSQL。
Deno 部署的项目采用分布式部署,所以就会出现数据不一致的问题。
具体表现为不同网络设备读取已修改的某个数据A,那么只有这个数据A的边缘节点的缓存数据被完全修改。其他边缘节点的内存-Edge Cache数据并没有同步。
那么解决这个问题要做的就是通过创建Deno BroadcastChannel,将修改和删除等需要同步数据状态的信息广播出去,收到广播信息的节点同步该操作即可。
下面是一个Deno BroadcastChannel Demo:
export const cacheBroadcast = new BroadcastChannel(CACHE_CHANNEL);
cacheBroadcast.onmessage = async (event: MessageEvent) => {
const { type, key} = event.data;
if (!key) return;
if (type === "update") {
// ...更新操作
} else if (type === "delete") {
// ...删除操作
}
};
async function handleContentUpdate(...) {
// ...更新操作逻辑
cacheBroadcast.postMessage({ type: "update", key}); // 通知更新状态
}
// ...一些其他代码

浙公网安备 33010602011771号