Horde集群编程支持 集群编程特点- 向集群提交作业是通过一个作业管理系统进行提交,用户不能直接访问内部主机,因此用户也不能书写部署文件
- 集群底层有分布式文件系统支持或中心文件服务器,用户可以像使用本地文件系统一样使用集群文件系统
目标- 向用户提供易用的部署burrow的接口
- 向用户提供编写可容错程序的支持
- 支持不同的作业管理系统
重要角色:Supervisor- 创建burrow
- 监视burrow的退出
- 执行burrow的退出handler
两步提交- 用户向作业管理系统提交任务,创建supervisor
- supervisor向作业管理系统提交任务,创建burrow
接口- create_burrow (burrow_id, burrow_exit_handler)
创建burrow,并且给予一个burrow退出的handler
- kill_burrow (burrow_id)
杀死一个特定的burrow
- start_peon (peon_id, burrow_id, peon_exit_handler)
在一个特定的burrow中启动特定的peon,并且给予此peon的退出handler
怎样利用提供的容错支持- 利用burrow的退出handler,在handler中做你想做的任何事情
在集群上编写Horde程序的步骤- 声明一个Cluster实例,用作业管理系统的封装类去实例化它
- 创建所有的peon,并且标示他们之间的连接图
- 判断自己是否是supervisor
- 如果是supervisor,
- 创建所有的burrow,调用Cluster::create_burrow
- 进入调度
- 调用Cluster::start_peon,在特定的burrow中启动特定的peon
- 调用cluster.run()
|