我有一个应用程序,它将被实现为在云VM上运行的许多计算繁重的进程。基本模型是所有进程都看到一个共享数据存储,其中包含许多大小从几个字节到太字节的对象。每个进程都从某种共享队列运行作业(通常作业运行至少几秒,并且可能运行数周),每个作业读取一些对象并创建一些(它读取的对象的名称和名称)它创造的那些是事先已知的)。在读取的所有对象都可用之前,无法启动作业。由于NFS的一致性较差,在NFS上的本地群集上执行此操作的一些早期实验失败。作业A将写入对象O然后退出。调度程序将看到A已经退出已创建O,并且在某些空闲计算机上启动B,并且由于NFS不一致,B将无法看到对象O.
所以我的问题是,在云的现代世界中,我应该考虑哪些类型的存储或存储解决方案的哪些属性来避免这些问题?
答案 0 :(得分:0)
由于分布式计算的并发性质,出现了此问题。由于缓存或其他原因,一个处理器可能会将任务视为已完成,但另一个处理器可能不会。
在真正的云存储系统(如Amazon S3)中,此问题将会大大加剧。这些系统通常有一个明确的“最终一致性”模型,这意味着如果你上传的东西你最终会看到它,但你不知道什么时候。
处理它的最佳方式是在处理软件中,而不是存储系统中。如果任务已启动且未找到先决条件信息,请稍等片刻再次尝试该任务。