我正在开发此 CLI以将图像上传到 Google 照片。CLI 创建多个 go 例程来并行上传文件1。上传后,相同的例程会将其添加到Album
. 如果这些相册在2之前不存在,则创建这些相册。
由于并发性和Google Photos API 允许创建两个Albums
具有相同名称的事实,我想要避免重复的专辑名称。
GetOrCreateAlbumByName()
3并不能确保Album
是唯一的。它基本上询问是否存在同名的专辑,如果不存在,它将创建一个新专辑。但是可以并行调用此函数,因此Album
可以创建两个具有相同名称的函数。除了实现互斥锁之外,我还在观察重复项。
你会建议如何处理?
创建一个处理专辑创建的 Worker(如微服务)。在创建相册之前,每个 goroutine 都将被阻止。它将删除Album
创建部分的并发性。
维护一个相册缓存并使用它来检查相册是否已经创建。在这种情况下,竞争条件也可能发生,但概率较小。
1 和 2 一起使用。
其他,请注明。
我对 1、2 和 3 感到担忧……这就是为什么我想知道您将如何处理。
提前致谢
UYOU
相关分类