解决分布式缓存数据一致性问题

在一个项目中采用多级缓存,缓存结构为内存 - 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});  // 通知更新状态
}

// ...一些其他代码
posted @ 2025-02-18 17:03  Naihe\  阅读(30)  评论(0)    收藏  举报
// 音乐播放器