Configuration Zookeeper中的任务调度
我正在尝试Zookeeper来存储服务的配置,因此我需要的一个功能是调度,即在提到的某个时间段内,我将用其他配置交换当前配置。如何在Zookeeper中实现这一点 对于动物园管理员来说,最好的用户界面是什么 Q:我正在尝试Zookeeper来存储服务的配置,所以 我需要的功能是计划,即为我提到的某个持续时间 将我的当前配置与其他配置交换。我怎样才能达到目标 这是动物园管理员吗 假设您有两个应用程序,一个用于设置配置(我们称之为Configuration Zookeeper中的任务调度,configuration,apache-zookeeper,Configuration,Apache Zookeeper,我正在尝试Zookeeper来存储服务的配置,因此我需要的一个功能是调度,即在提到的某个时间段内,我将用其他配置交换当前配置。如何在Zookeeper中实现这一点 对于动物园管理员来说,最好的用户界面是什么 Q:我正在尝试Zookeeper来存储服务的配置,所以 我需要的功能是计划,即为我提到的某个持续时间 将我的当前配置与其他配置交换。我怎样才能达到目标 这是动物园管理员吗 假设您有两个应用程序,一个用于设置配置(我们称之为A),另一个用于读取配置(我们称之为B)A应该在ZooKeeper中创
A
),另一个用于读取配置(我们称之为B
)A
应该在ZooKeeper中创建znode,例如命名为/config
,其中包含配置数据。请注意,单个znode最多可以保存1MB的数据—这可能足以保存配置B
然后需要读取znode/config
的内容并注册a。watch的目的是在znode发生变化时通知B
特别是,当A
将新配置写入/config
时,watch将确保B
获得有关它的通知。重要提示-监视事件是一次触发器,即当B
收到通知时,它需要再次注册监视,否则将错过进一步的更改。还要注意,ZooKeeper本身没有任何内置的调度机制-A
必须依赖其系统时钟在指定的时间范围内更新配置
Q:对于动物园管理员来说,最好的用户界面是什么
我没有亲自尝试过这些(适合我的需要),但最受欢迎的应该是:
void create_session(){zookeer_init(host,connection_watcher,TIMEOUT,nullptr,this,0);
而connection_watcher
的实现是:void connection_watcher(zhandle_t*zh,int类型,int状态,const char*path,void*v){if(state==ZOO_EXPIRED_SESSION_state)create_SESSION();}
@JSR29注意,在触发的情况下,create\u session
再次被调用,watchconnection\u watcher
通过zookeer\u init
调用重新注册。在您的情况下,您应该向zoo\u wget
函数提供watcher。我使用的是JAVA API。@JSR29逻辑是相同的。在watcher body中(在我的示例中,connection\u watcher
)只需再次调用注册该watcher的方法(在我的示例中,create\u session
)。