Ray 远程演员的持久化与扩展
1. 持久化概述
在实现中,我们使用文件系统进行持久化,但也可以将相同的方法应用于其他类型的持久化,如 S3 或数据库。系统会对失败的任务最多重试 n 次,之后在调用 ray.get 时任务将抛出 RayActorError 异常。当一个演员重启时,会重新运行其构造函数来重新创建状态,因此在演员执行期间更改的状态将会丢失。为了保留这种状态,演员必须实现自定义的持久化。
1.1 整体状态保存
在某些情况下,将状态作为一个整体保存是可行的,特别是当状态的大小相对较小且状态变化相对较少时。为了简化示例,我们使用本地磁盘进行持久化。但在分布式环境中,应考虑使用网络文件系统(NFS)、亚马逊简单存储服务(S3)或数据库,以便从 Ray 集群的任何节点访问演员的数据。
以下是一个使用文件系统持久化的持久化账户演员的示例代码:
@ray.remote
class Account:
def __init__(self, balance: float, minimal_balance: float, account_key: str,
basedir: str = '.'):
self.basedir = basedir
self.key = account_key
if not self.restorestate():
if balance < minimal_balance:
超级会员免费看
订阅专栏 解锁全文
909

被折叠的 条评论
为什么被折叠?



